Spelling suggestions: "subject:"cistemas embarcados"" "subject:"doistemas embarcados""
81 |
Increasing embedded software radiation reliability through cache memoriesSantini, Thiago Caberlon January 2015 (has links)
Memórias cache são tradicionalmente desabilitadas em aplicações espaciais e críticas porque acredita-se que a área sensível por elas introduzida comprometeria a confiabilidade do sistema. Conforme a tecnologia tem evoluído, a diferença de velocidade entre lógica e memória principal tem aumentado de tal maneira que desabilitando as caches a execução do código é retardada muito mais do que no passado. Como resultado, o processador fica exposto por um tempo muito maior para computar a mesma cargade trabalho. Neste trabalho nós demonstraremos que, em processadores embarcados modernos, habilitar as caches pode trazer benefícios para sistemas críticos: a área exposta maior pode ser compensada pelo tempo de exposição mais curto, levando a uma melhora total na confiabilidade. Nós propomos uma métrica intuitiva e um modelo matemático para avaliar a confiabilidade de um sistema em termos espaciais (i.e., área sensível à radiação) e temporais (i.e., desempenho), e provamos que minimizar a área sensível à radiação não necessariamente maximiza a confiabilidade da aplicação. A métrica e o modelo propostos são experimentalmente validados através de uma campanha extensiva de testes de radiação utilizando um Sistema-em-Chip de prateleira fabricado em 28nm baseado em processadores ARM como estudo de caso. Os resultados experimentais demonstram que, durante a execução da aplicação estudada à altitude de aeronave militar, a probabilidade de executar a carga de trabalho de uma missão de dois anos sem falhas é aumentada em 5.85% se as caches L1 são habilitadas (deste modo, aumentado a área sensível à radiação), quando comparada com nenhum nível de cache habilitado. Entretanto, se ambos níveis L1 e L2 são habilitados a probabilidade é diminuída em 31.59%. / Cache memories are traditionally disabled in space-level and safety-critical applications since it is believed that the sensitive area they introduce would compromise the system reliability. As the technology has evolved, the speed gap between logic and main memory has increased in such a way that disabling caches slows the code much more than in the past. As a result, the processor is exposed for a much longer time in order to compute the same workload. In this work we demonstrate that, on modern embedded processors, enabling caches may bring benefits to critical systems: the larger exposed area may be compensated by the shorter exposure time, leading to an overall improved reliability. We propose an intuitive metric and a mathematical model to evaluate system reliability in spatial (i.e., radiation-sensitive area) and temporal (i.e., performance) terms, and prove that minimizing radiation-sensitive area does not necessarily maximize application reliability. The proposed metric and model are experimentally validated through an extensive radiation test campaign using a 28nm off-the-shelf ARM-based Systemon- Chip as a case study. The experimental results demonstrate that, while executing the considered application at military aircraft altitude, the probability of executing a two-year mission workload without failures is increased by 5.85% if L1 caches are enabled (thus, increasing the radiation-sensitive area), when compared to no cache level being enabled. However, if both L1 and L2 caches are enabled the probability is decreased by 31.59%.
|
82 |
Exploração adaptativa de paralelismo sob restrições físicas e de tempo real em sistemas embarcados tolerantes a falhas / Adaptive parallelism exploitation under physical and real-time constraints for fault tolerant embedded systemsItturriet, Fabio Pires January 2012 (has links)
A constante redução nas dimensões dos transistores foi o principal combustível capaz de manter o crescente desempenho exigido por aplicações. Ao mesmo tempo, as tensões de alimentação dos circuitos também são reduzidas a cada novo nó tecnológico, fazendo com que partículas como nêutrons e partículas alpha, portando quantidades de energia cada vez menores sejam capazes de gerar os chamados soft errors, que impactam diretamente na redução da confiabilidade dos sistemas embarcados atuais. Isto faz com que a implementação de técnicas de tolerância a falhas se tornem praticamente obrigatórias para tecnologias atuais e futuras. Estes mesmos sistemas embarcados, como smartphones, devem apresentar alto poder de processamento, visando atender um crescente conjunto de aplicações de natureza heterogênea, consumindo a mínima potência possível. Nestes sistemas, algumas dessas principais aplicações como codec GSM, cancelamento de eco acústico, processamento de áudio e vídeo apresentam em comum a necessidade de multiplicar matrizes de diferentes dimensões em determinados intervalos de tempo. Pensando nestas demandas, será proposta a arquitetura RA3, cujo objetivo é executar o algoritmo de multiplicação de matrizes em paralelo com a técnica de tolerância a falhas conhecida na literatura como ABFT, visando a aumentar a confiabilidade da mesma. Além disso, a RA3 possui uma estrutura adaptativa que permite que unidades internas como memórias, multiplicadores e somadores sejam ligadas ou desligadas através da aplicação da técnica de power gating em tempo de execução, conforme restrições impostas pela largura da banda de memória, power budgets e deadlines impostos por aplicações de tempo real, visando executar tarefas consumindo a mínima potência possível. Para avaliar as funcionalidades propostas, dois estudos de caso reais são apresentados e o comportamento da arquitetura é avaliado sobre diversos aspectos como desempenho, área, consumo de potência e cobertura de falhas. Finalmente é possível comprovar que a adaptabilidade proposta pela arquitetura RA3 permite que seja encontrada, em diversos cenários, a quantidade exata de recursos necessários para executar determinadas aplicações sem comprometer as restrições impostas principalmente no consumo de potência e por aplicações com deadlines críticos, mantendo ainda altas taxas de cobertura de falhas. / The continuous reduction of transistors’ dimensions was the main drive capable of maintaining the performance increase required by applications. At the same time, supply voltages of the circuits are also reduced with each new technology node, causing particles such as neutrons or alpha particles, even with reduced amounts of energy, to generate so-called soft errors that directly impact on the reliability of embedded systems. This scenario makes the implementation of techniques for fault tolerance mandatory for current and future technologies. Still, embedded systems, such as smartphones, must provide high processing power to execute a growing set of applications of heterogeneous nature, consuming the least possible power. In these systems, applications like GSM codec, acoustic echo cancellation, audio and video processing have in common the need for matrix multiplication operations of different dimensions at certain time intervals. To efficiently support the aforementioned scenario, this dissertation proposes the RA3 architecture whose goal is run the matrix multiplication algorithm in parallel with the fault tolerance technique know in the literature as ABFT, aiming to support software execution with high reliability. Furthermore, the RA3 architecture provides adaptive internal units such as memories, multipliers and adders with adaptive powering on or off by applying power gating at runtime. Runtime power gating enables to meet restrictions imposed by real-time applications or memory bandwidth with minimum power. To evaluate the proposed architecture, two case studies are presented and the behavior of the architecture is evaluated in terms of performance, area, power consumption and fault coverage. Finally, a comprehensive design space exploration shows that the adaptability provided by the RA3 architecture allows the system designer to find, in many scenarios, the exact amount of resources needed to run a set of applications without compromising the restrictions imposed mainly in power consumption and real-time deadlines, while still maintaining a high fault coverage rate.
|
83 |
Um Servidor de Nomes Embarcado visando Redução do Consumo de EnergiaLages, Diogo de Lima 29 August 2013 (has links)
Submitted by Daniella Sodre (daniella.sodre@ufpe.br) on 2015-03-10T14:00:16Z
No. of bitstreams: 2
Dissertaçao Diogo Lages.pdf: 4187750 bytes, checksum: fb9f521e9ef025b2d69f9650ec1a45f4 (MD5)
license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5) / Made available in DSpace on 2015-03-10T14:00:16Z (GMT). No. of bitstreams: 2
Dissertaçao Diogo Lages.pdf: 4187750 bytes, checksum: fb9f521e9ef025b2d69f9650ec1a45f4 (MD5)
license_rdf: 1232 bytes, checksum: 66e71c371cc565284e70f40736c94386 (MD5)
Previous issue date: 2013-08-29 / O servidor de nomes é um sistema essencial para Internet que se baseia principalmente na tradução de endereços para IPs. Esse serviço é executado em servidores de maneira “dedicada”, no entanto, fazem uso de sistemas operacionais os quais introduzem overhead e necessita compartilhar tempo de processamento com outros processos. Outro fator que tem grande impacto em redes é o consumo das interfaces Ethernet atuais, como exemplo a de 10 Gbps que possui a potência 25x maior do que a potência necessária para interfaces Ethernet com 100 Mbps. Devido a necessidade de otimizar o consumo de energia em ambientes de redes a inserção de mecanismo inteligentes permitem fazer uso dos recursos de potência de maneira “consciente” propiciando a diminuição de gastos com energia sem a degradação do desempenho. Sendo assim, nesse trabalho foi realizado o desenvolvimento e análise de um servidor de nomes, o qual permite otimizar o uso de energia através de regressão linear e recursos de potência sem comprometer o desempenho. Isso é evidenciado através dos resultados onde foi utilizado traces reais e foi verificado que o PC consome 55x a mais de energia do que a proposta desse trabalho e que a quantidade de perdas é abaixo de 7%.
|
84 |
Avaliação de desempenho e consumo de energia de aplicações embarcadas: uma estratégia baseada em modelos da arquitetura de hardware e no código da aplicaçãoCosta e Silva Nogueira, Bruno 31 January 2010 (has links)
Made available in DSpace on 2014-06-12T15:55:23Z (GMT). No. of bitstreams: 2
arquivo2235_1.pdf: 3254202 bytes, checksum: e21eaf5447ba8e4d3152b22177c1247c (MD5)
license.txt: 1748 bytes, checksum: 8a4605be74aa9ea9d79846c1fba20a33 (MD5)
Previous issue date: 2010 / Conselho Nacional de Desenvolvimento Científico e Tecnológico / O projeto de sistemas embarcados usualmente deve levar em consideração diversas restrições não funcionais, tais como: tamanho, peso, custo, confiabilidade e durabilidade.
Adicionalmente, com a proliferação de dispositivos portáteis operados por baterias, o
projeto de sistemas embarcados de baixo consumo de energia tem despertado muito interesse
nos últimos anos. O maior problema é que a evolução da tecnologia das baterias
não vem acompanhando a demanda por mais desempenho nestes dispositivos. Além dos
aspectos relacionados à demanda do mercado, o aumento da frequência de operação e
das funcionalidades colocadas por unidade de área nos circuitos integrados tem levado ao
crescimento constante da potência dissipada destes sistemas.
Mudanças de projeto tanto nos componentes de hardware, como de software custam
caro e podem levar a atrasos na entrega do projeto. Desta forma, projetistas de sistemas
embarcados precisam avaliar suas escolhas nas etapas bem iniciais de projeto e devem
caracterizar as otimizações do sistema através de estimativas acuradas
Esta dissertação apresenta um método para a avaliação de desempenho e consumo de
energia para sistemas embarcados. O método proposto adota modelos formais baseados
em Redes de Petri Coloridas para modelar o comportamento funcional de processadores
e arquiteturas de memória em um alto nível de abstração. Um grupo de aplicações e um
microcontrolador de propósito geral foram adotados para demonstrar a aplicabilidade
do método. Resultados experimentais demonstram uma exatidão em torno de 96% em
comparação com as medidas adquiridas da plataforma real. Adicionalmente, o alto nível
de representação comportamental permite a rápida avaliação de consumo de energia e
desempenho de sistemas complexos
|
85 |
Análise de técnicas de otimização multi-objetivo para ajustar hierarquia de memória visando economia de consumo de energia e desempenhoRolim Cordeiro, Filipe 31 January 2011 (has links)
Made available in DSpace on 2014-06-12T15:58:10Z (GMT). No. of bitstreams: 2
arquivo3267_1.pdf: 2965692 bytes, checksum: 59e4eb9209a191563dc1d8cd18e07b87 (MD5)
license.txt: 1748 bytes, checksum: 8a4605be74aa9ea9d79846c1fba20a33 (MD5)
Previous issue date: 2011 / Com a expansão e o desenvolvimento de aplicações de sistemas embarcados, o mercado tem requerido soluções rápidas e eficientes em torno de parâmetros como desempenho e energia que uma aplicação pode consumir. Estudos mostram que o consumo de energia de hierarquias de memória pode chegar até a 50% da energia consumida por um microprocessador. Desta forma, otimizando-se a arquitetura de memória é possível obter uma redução do consumo de energia do processador e, consequentemente, do sistema embarcado. O ajuste de parâmetros de memória cache para uma aplicação específica pode economizar em média 60% do consumo de energia. No entanto, encontrar uma configuração de cache adequada para uma aplicação específica pode ser uma tarefa complexa e pode requerer um longo período de análise e simulação. Para isso é necessário o uso de técnicas de otimização.
Neste trabalho, é proposta a aplicação de seis técnicas de otimização multi-objetivo para a otimização de cache com arquitetura de memória de dois níveis, com segundo nível unificado. A adaptação das técnicas para o problema de cache é feita tentando otimizar os objetivos de consumo de energia e quantidade de ciclos necessário para rodar cada uma das 18 aplicações analisadas. Em seguida, é feita uma análise comparativa do desempenho que cada técnica obteve em achar as melhores configurações para otimizar o desempenho da arquitetura para cada aplicação. A análise entre as técnicas é feita utilizando as métricas de distância generacional, diversidade, hipervolume, energia e quantidade de ciclos necessários para rodar uma aplicação. Foi adotado o simulador Simplescalar para realização das simulações e o modelo do eCACTI para obter as componentes dinâmica e estática de energia.
Resultados mostraram que a técnica multi-objetivo baseada em enxame de partículas, o MOPSO, apresentou melhores resultados para as métricas analisadas, para a maioria das aplicações. Foi proposta uma melhoria no MOPSO considerando também busca local variando os parâmetros de cache. A abordagem do MOPSO com busca local mostrou-se superior ao MOPSO original, conseguindo encontrar soluções mais próximas ao pareto optimal, explorando apenas 0.7% do espaço total de exploração
|
86 |
ESCORT: um framework de componentes para a construção de software embarcadoMELO, Gustavo André Fernandes Braga de 31 January 2011 (has links)
Made available in DSpace on 2014-06-12T16:00:37Z (GMT). No. of bitstreams: 2
arquivo6811_1.pdf: 2358772 bytes, checksum: 7b56f734951f242c3bff238edfeaa9b4 (MD5)
license.txt: 1748 bytes, checksum: 8a4605be74aa9ea9d79846c1fba20a33 (MD5)
Previous issue date: 2011 / Imagine um mundo onde a construção de sistemas embarcados é tão fácil como
criar sistemas em Java. Imagine se cada fabricante de microcontrolador
disponibilizasse pacotes de componentes de software referentes aos seus
processadores. Imagine se os desenvolvedores de sistemas operacionais
fornecessem bibliotecas de drivers genéricos para os seus produtos. Imagine se os
desenvolvedores de software embarcado pudessem criar seus sistemas com uma
modelagem de alto nível apenas definindo uma arquitetura de componentes.
Imagine ainda se fosse possível gerar código automaticamente para esta
modelagem. O ESCoRT se propõe a trazer este imaginário para a realidade. Ele é
um arcabouço teórico, metodológico e operacional para o desenvolvimento de
sistemas embarcados utilizando componentes. É fundamentado por uma arquitetura
que separa os componentes em camadas de acordo com a função que
desempenham no sistema, sendo um dos principais trunfos a distinção que é feita
atribuindo acesso ao hardware para a camada HAL e deixando para a camada
Driver o tratamento de interrupções e a sincronização de acesso. Isto permite que os
drivers não fiquem tão atrelados ao hardware, de forma a não ser necessário alterar
a implementação dos drivers caso o processador seja substituído por outro.
ESCoRT propõe uma metodologia de desenvolvimento focada na portabilidade e
reuso, permitindo vários níveis de abstração, como abstração de hardware,
abstração de compilador e abstração de kernel. A metodologia aplica um paradigma
no qual a parte do desenvolvimento que exige conhecimento específico de sistemas
embarcados é separada daquela responsável pela implementação da aplicação, o
que permite que um desenvolvedor sem tanto expertise crie uma aplicação
embarcada, uma vez que um profissional especializado tenha montado uma
plataforma de software. ESCoRT também fornece um framework de componentes
configuráveis que gera código automaticamente e é disponibilizado em forma de
plugin para o Eclipse. Este trabalho apresenta também três estudos de caso para
demonstrar as vantagens do ESCoRT, incluindo um projeto comercial real
|
87 |
Projeto de caches de matrizes particionados baseados em rastros de acesso à memória para sistemas embarcados / Design of trace-based split array caches for embedded applicationsTachibana, Marina 16 August 2018 (has links)
Orientador: Alice Maria Bastos Hubinger Tokarnia / Dissertação (mestrado) - Universidade Estadual de Campinas, Faculdade de Engenharia Elétrica e de Computação / Made available in DSpace on 2018-08-16T03:05:57Z (GMT). No. of bitstreams: 1
Tachibana_Marina_M.pdf: 2745315 bytes, checksum: 91aeb0d6708948d94d06a63e21b98ad6 (MD5)
Previous issue date: 2010 / Resumo: Um sistema embarcado executa um único programa ou um conjunto pré-definido de programas repetidamente e, muitas vezes, seus componentes podem ser customizados para satisfazer uma especificação com requisitos referentes à área, desempenho e consumo de energia. Caches on-chip, em particular, são alvos de muitos algoritmos de customização por terem uma contribuição importante no desempenho e no consumo de energia de processadores embarcados. Várias aplicações embarcadas processam estruturas de dados cujos padrões de acesso distintos tornam difícil encontrar uma configuração para o cache que garanta desempenho e baixo consumo. Propomos, neste trabalho, uma metodologia para projetar caches de matrizes particionados que satisfaçam uma restrição de tamanho total e em cujas partições estão mapeadas as matrizes da aplicação. Estas partições exploram a diferença de localidade espacial entre as matrizes. Com base na simulação de rastros de acesso à memória para entradas típicas, definimos uma métrica que quantifica o uso que as matrizes fazem das metades das linhas de um cache de matrizes unificado, associativo por conjunto, que satisfaz uma restrição de tamanho. Esta métrica é usada para dividir as matrizes em dois grupos, que são mapeados em duas partições de cache, uma com mesmo tamanho de linha, e outra com metade do tamanho de linha do cache de matrizes unificado. Este procedimento é repetido para várias organizações de cache de matrizes unificados com um tamanho especificado. No final, os caches de matrizes particionados baseados em rastros de acesso à memória com menor tempo médio de acesso à memória são selecionados. Para um decodificador MPEG-2, dependendo do paralelismo dos acessos de dados, os resultados das simulações mostram que o tempo médio de acesso à memória de um cache de matrizes particionado baseado em rastros de 8K bytes apresenta uma redução de 26% a 60%, quando comparado com o cache de matrizes unificado, associativo por conjunto, de mesmo tamanho, com menor tempo médio de acesso à memória. Existe também uma redução de 46% no consumo de energia entre estes caches / Abstract: An embedded system executes a single application or a pre-defined set of applications repeatedly and, frequently, its components can be fine-tuned to satisfy a specification with requirements related to area, performance, and energy consumption. On-chip caches, in particular, are the target of several customization algorithms due to its important contribution to the performance and energy consumption of embedded processors. Several embedded applications process data structures whose access patterns turn it difficult to find a cache configuration that guarantees performance and low energy consumption. In this work, we propose a methodology for designing a split array cache that satisfies a total size constraint and in whose partitions the arrays of an application are mapped. Those partitions explore the difference in spatial locality among the matrices. Using traces of memory accesses, obtained for typical input patterns, we define a metric that quantifies the use of the two halves of the lines by array accesses in a unified array set-associative cache that satisfies a size constraint. We use this metric to split the arrays in two groups that are mapped to two cache partitions, one with the same line size, and the other with half line size of that of the unified array cache. This procedure is repeated for several unified array cache organizations of a specified size. In the end, the trace based split array caches with lowest average memory access time are selected. For a MPEG-2 decoder, depending on the parallelism of array accesses, simulation results show that the average memory access time of an 8K byte split array cache is reduced from 26% to 60% as compared to that of the unified set associative array cache of same size with the lowest average memory access time. There is also a reduction of 46% in the consumption of energy / Mestrado / Engenharia de Computação / Mestre em Engenharia Elétrica
|
88 |
Ambiente baseado em componentes para o desenvolvimento de sistemas computacionais microcontrolados distribuídosVillela, Cláudio Vianna January 2001 (has links)
A modelagem e desenvolvimento de sistemas embarcados ("embedded systems") de forma distribuída, tende a ser uma tarefa extremamente complexa, especialmente quando envolve sistemas heterogêneos e sincronização de tarefas. Com a utilização do modelo de componentes de software é possível descrever, de uma forma simplificada, todos os elementos de distribuição e de comunicação para este tipo de sistemas. Neste sentido, a especificação de uma ferramenta capaz de auxiliar na modelagem e no desenvolvimento deste tipo de aplicação, certamente irá tornar o trabalho mais simples. Esta dissertação inicia por uma análise comparativa entre as tecnologias passíveis de serem utilizadas na definição de sistemas distribuídos heterogêneos, focando-se principalmente nas metodologias de modelagem, e nos mecanismos e middlewares de comunicação. Dos conceitos formados a partir desta análise é descrita uma ferramenta, baseada em componentes de software. A ferramenta é uma extensão do projeto SIMOO-RT, onde foram adicionados os conceitos de componente de software, biblioteca de componentes e diagrama de implantação. Além disso, foram realizadas modificações no sistema de geração de código, para dar suporte aos novos conceitos da ferramenta. A dissertação termina com a descrição de alguns estudos de caso utilizados para validar a ferramenta.
|
89 |
Uma arquitetura para execução de codigo comprimido em sistemas dedicadosAzevedo, Rodolfo Jardim de, 1974- 18 June 2002 (has links)
Orientador : Guido Costa Souza de Araujo / Tese (doutorado) - Universidade Estadual de Campinas, Instituto de Computação / Made available in DSpace on 2018-08-01T12:52:13Z (GMT). No. of bitstreams: 1
Azevedo_RodolfoJardimde_D.pdf: 18616768 bytes, checksum: 99d078e8664f7791ae046a28a3108976 (MD5)
Previous issue date: 2002 / Resumo: Projetos de sistemas dedicados modernos têm exigido cada vez mais memória de programa para incluir novas funcionalidades como interface com o usuário, suporte a novos componentes, etc. O aumento no tamanho dos programas tem feito com que a área ocupada pela memória em um circuito integrado moderno seja um dos fatores determinantes no
seu custo final bem como um dos maiores responsáveis pelo consumo de potência nestes dispositivos. A compressão de código de programa vem sendo considerada como uma estratégia importante na minimização deste problema. Esta tese trata da compressão de programas para execução em sistemas dedicados baseados em arquiteturas RISC. Um amplo estudo demonstra que a utilização do método proposto neste trabalho, Instruction Based Compression (IBC), resulta em boas razões de compressão e implementações eficientes de descompressores. Para a arquitetura MIPS foi obtida a melhor razão de compressão (tamanho final do programa comprimido e do descompressor em relação ao programa original) conhecida (53,6%) utilizando como benchmark programas do SPEC CINT'95. Uma arquitetura pipelined para o descompressor é proposta e um protótipo foi implementado para o processador Leon (SPARC V8). Esta é a primeira implementação em hardware de um descompressor para a arquitetura SPARC, tendo produzido uma razão de compressão de 61,8% para o mesmo benchmark e uma queda de apenas 5,89% no desempenho médio do sistema / Abstract: The demand for program memory in embedded systems has grown considerably in recent years, as a result of the need to accommodate new system functionalities such as novel user interfaces, additional hardware devices, etc. The increase in program size has turned memory into the largest single factor in the total area and power dissipation of a modern
System-on-a-Chíp (SoC). Program code compression has been considered recently a central technique in reducing the cost of memory in such systems. This thesis studies the code compression problem for RISC architectures. A thorough experimental study shows that the Instructíon Based Compressíon (IBC) technique proposed herein results in very good compression ratios and efficient decompressor engine implementations. For the MIPS architecture this approach results in the best compression ratio (size of the compressed program divided by the size of the original program) known in the literature (53.6%), when it is evaluated using the SPEC CINT'95 benchmark programs. A decompressor pipelined architecture was developed and prototyped for the Leon (SPARC V8) processor. This is the first implementation of a hardware decompressor on the SPARC
architecture, having resulted in a 61.8% compression ratio for the same benchmark, at the expense of a fairly small performance overhead (5.89% on average) / Doutorado / Doutor em Ciência da Computação
|
90 |
Proposta de ambiente baseado em computação reconfiguravel para aplicação em prototipos de sistemas embarcadosLima, Carlos Raimundo Erig 03 August 2018 (has links)
Orentador: João Mauricio Rosario / Tese (doutorado) - Universidade Estadual de Campinas, Faculdade de Engenharia Mecanica / Made available in DSpace on 2018-08-03T16:48:14Z (GMT). No. of bitstreams: 1
Lima_CarlosRaimundoErig_D.pdf: 2265514 bytes, checksum: fd1d47929d36db3e957f661d51ad7b46 (MD5)
Previous issue date: 2003 / Doutorado
|
Page generated in 0.0805 seconds