Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6....

42

Transcript of Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6....

Page 1: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Pontifícia Universidade Católica do Rio

Grande do Sul

Faculdade de Informática

Pós-Graduação em Ciência da

Computação

Computação Paralela em Sistemas

Embarcados

Dalvan Jair Griebler

Orientador: Luiz Gustavo Leão Fernandes

Introdução à Pesquisa

Porto Alegre, novembro de 2010

Page 2: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Resumo

Sistemas embarcados aparentam (devido ao seu tamanho, principalmente)serem apenas dispositivos limitados e com poucos recursos computacionais.Entretanto, este ponto de vista é equivocado, pois estes sistemas apresen-tam diversas características e funcionalidades importantes. Neste contexto,o trabalho desenvolvido tem por objetivo realizar um estudo sobre sistemasembarcados, através de uma abordagem qualitativa, apresentando conceitos,aplicações e áreas em que se aplicam. Com a evolução destes sistemas, a ne-cessidade de desempenho tornou-se um aspecto relevante, o que fez com quediferentes pesquisas e técnicas surgissem. O presente estudo, então, apresentatambém aspectos relacionados às tentativas de melhorias deste desempenho,abordando soluções de programação paralela e algumas ferramentas auto-matizadas de geração de código para sistemas embarcados multiprocessados.No decorrer do trabalho, comparações entre modelos são realizadas, levandoem consideração os requisitos para atender as necessidades de desempenho,consumo de energia, �exibilidade, operações de tempo real, dentre outros.

Palavras Chaves: Sistemas Embarcados, Programação Paralela, SistemasEmbarcados Multiprocessados.

Page 3: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Abstract

Embedded systems appear only to be limited devices with few computingresources. However, this view is wrong, because these systems have di�erentcharacteristics and important features. In this context, the work presents astudy on the embedded system through a qualitative approach, presentingconcepts, applications and areas in which they are applied. With the evo-lution of these systems, the need for performance has become an importantissue, causing the emergence of di�erent research and techniques. So, thisstudy also presents aspects related to attempts to improve this performance,presenting parallel programming solutions and some automated tools for codegeneration for multiprocessor embedded systems. During this work, compa-risons between models are made according to the requirements to achievethe performance needs, power consumption, �exibility, real time operations,among others.

Keywords: Embedded Systems, Parallel Programming, MultiprocessorEmbedded Systems.

Page 4: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Lista de Figuras

2.1 Arquitetura HeMPS. Extraído de [1]. . . . . . . . . . . . . . . 102.2 Resumo de Aplicações Embarcadas. Adaptado de [2] . . . . . 12

4.1 MPSOC Heterogênio e Homogênio. Adaptado de [3] . . . . . . 244.2 Memória Distribuída. Adaptado de [3] . . . . . . . . . . . . . 254.3 Memória Compartilhada. Adaptado de [3] . . . . . . . . . . . 254.4 Memória Híbrida. Adaptado de [3] . . . . . . . . . . . . . . . 26

1

Page 5: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Lista de Símbolos e Abreviaturas

SOC System-on-Chip 6

MPSoC Multiprocessor System-on-Chip 6

DVD Digital Video Disc 9

CD Compact Disc 9

VLSI Very Large Scale Integration 9

HeMPS HERMES Multiprocessor System 10

PE Processing Element 10

RAM Random Access Memory 10

DMA Direct Memory Access 10

NoC Network-on-Chip 11

RFID Radio-Frequency IDenti�cation 14

GPS Global Positioning System 15

RISC Reduced Instruction Set Computer 16

CISC Complex Instruction Set Computer 16

MIPS Microprocessor without Interlocking Pipeline Stages 17

ARM Advanced RISC Machine 17

AMD Advanced Micro Devices 18

VIA Virtual Interface Adapter 18

PowerPC Power Optimization With Enhanced RISC Perfor-mance Computing

18

SPARC Scalable Processar ARChitecture 18

DSP Digital Signal Processor 18

ASIC Application Speci�c Integrated Circuit 20

PDA Personal Digital Assistant 20

CLB Con�guration Logical Blocks 20

IOB Input/Output Block 20

FPGA Field-Programmable Gate Array 20

2

Page 6: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

CPU Central Processing Unit 20

ASIC Application-Speci�c Instruction-set Processor 20

FIFO First In - First Out 21

RTOS Real-Time Operating Systems 21

POSIX Portable Operating System Interface 21

MMU Memory Management Unit 21

EPOS Embedded Parallel Operating System 21

BSD Berkeley Software Distribution 21

RTEMS Real-Time Executive for Multiprocessor Systems 22

GSE Grupo de Sistemas Embarcados 22

PUCRS Pontifícia Universidade Católica do Rio Grande do Sul 22

ASMP Asymmetric Mutiprocessing 28

TM Transactional Memory 30

STM Software Transactional Memory 30

HTM Hardware Transactional Memory 30

HyTM Hybrid Transactional Memory 31

OpenMP Open MultiProcessor 32

API Application Programming Interface 32

BSP Bulk Synchronous Parallel 33

LogP Latency overhead gap Processor 33

MAPS MPSoC Application Programming Studio 34

3

Page 7: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Sumário

LISTA DE FIGURAS 1

LISTA DE SÍMBOLOS E ABREVIATURAS 2

Capítulo 1: Introdução 61.1 Motivação e Objetivos . . . . . . . . . . . . . . . . . . . . . . 61.2 Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . 7

Capítulo 2: Sistemas Embarcados: Embasamento 82.1 Sistemas Embarcados de Tempo Real: Hard and Soft . . . . . 82.2 SoC (System-on-Chip) . . . . . . . . . . . . . . . . . . . . . . 92.3 MPSoC (Multiprocessor System-on-Chip) . . . . . . . . . . . . 92.4 NoC (Network-on-Chip) . . . . . . . . . . . . . . . . . . . . . 112.5 Aplicações para Sistemas Embarcados . . . . . . . . . . . . . . 11

2.5.1 Aplicações na Medicina . . . . . . . . . . . . . . . . . . 122.5.2 Aplicações em Dispositivos de Comunicação . . . . . . 132.5.3 Aplicações de Propósito Geral . . . . . . . . . . . . . . 132.5.4 Aplicações em Meios de Transporte . . . . . . . . . . . 142.5.5 Aplicações Altamente Especializadas . . . . . . . . . . 14

Capítulo 3: Arquiteturas, Componentes e Tecnolo-gias 16

3.1 Arquiteturas RISC e CISC . . . . . . . . . . . . . . . . . . . . 163.2 Processadores para Sistemas Embarcados . . . . . . . . . . . . 16

3.2.1 MIPS (Microprocessor without Interlocking Pipeline Sta-ges) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.2 ARM (Advanced RISC Machine) . . . . . . . . . . . . 173.2.3 x86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4

Page 8: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

3.2.4 PowerPC (Power Optimization With Enhanced RISCPerformance Computing) . . . . . . . . . . . . . . . . 18

3.2.5 SPARC (Scalable Processar ARChitecture) . . . . . . . 183.2.6 DSP (Digital Signal Processor) . . . . . . . . . . . . . 18

3.3 Tecnologias de Projeto . . . . . . . . . . . . . . . . . . . . . . 193.3.1 Microcontroladores . . . . . . . . . . . . . . . . . . . . 193.3.2 ASIC (Application Speci�c Integrated Circuit) . . . . . 193.3.3 FPGA (Field-Programmable Gate Array) . . . . . . . . 203.3.4 ASIP (Application-Speci�c Instruction-set Processor) . 20

3.4 Sistemas Operacionais Embarcados . . . . . . . . . . . . . . . 20

Capítulo 4: Computação Paralela 234.1 Sistemas Embarcados Multiprocessados . . . . . . . . . . . . . 23

4.1.1 Tipos de Sistemas Multiprocessados . . . . . . . . . . . 244.1.2 Memória em Sistemas Embarcados . . . . . . . . . . . 244.1.3 Paralelismo . . . . . . . . . . . . . . . . . . . . . . . . 26

4.2 Paradigmas entre MPSoCs e Multi-Core . . . . . . . . . . . . 274.3 Programação Paralela . . . . . . . . . . . . . . . . . . . . . . 28

4.3.1 SMP (Symmetric Multiprocessing) . . . . . . . . . . . . 284.3.2 ASMP ou AMP (Asymmetric Mutiprocessing) . . . . . 284.3.3 Processos e Threads . . . . . . . . . . . . . . . . . . . 294.3.4 Task e Mapeamento . . . . . . . . . . . . . . . . . . . 294.3.5 Comunicação e Sincronização . . . . . . . . . . . . . . 304.3.6 Semáforos e Locks . . . . . . . . . . . . . . . . . . . . . 304.3.7 Memória Transacional . . . . . . . . . . . . . . . . . . 304.3.8 Paralelizando uma Aplicação . . . . . . . . . . . . . . . 31

4.4 Soluções para Programação Paralela . . . . . . . . . . . . . . 324.4.1 OpenMP (Open MultiProcessor) . . . . . . . . . . . . 324.4.2 BSP (Bulk Synchronous Parallel) . . . . . . . . . . . . 334.4.3 LogP (Latency overhead gap Processor) . . . . . . . . . 334.4.4 HellFire Framework . . . . . . . . . . . . . . . . . . . . 344.4.5 MAPS (MPSoC Application Programming Studio) . . . 34

Capítulo 5: Considerações Finais 35

REFERÊNCIAS BIBLIOGRÁFICAS 36

5

Page 9: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

1 Introdução

Sistemas embarcados são dispositivos pequenos com limitações de hardware,destinados a �nalidades especí�cas nas diversas áreas em que se aplicam [4].Conhecido como System on Chip (SOC), a arquitetura destes sistemas possuibasicamente um processador, memória e barramento em um único chip.

A busca e utilização destes sistemas vêm aumentando gradativamentenos últimos anos, motivando a realização de novas pesquisas para melhoria eotimização dos mesmos [5]. Sistemas embarcados trabalham geralmente comaplicações de tempo real [6], rodam um processo com deadlines curtos, muitoencontrados em automóveis, na aviação e na medicina. Existem, também,aplicações que não são de tempo real, mas que, mesmo assim, necessitam umdeadline não muito grande, como em dispositivos móveis [7].

Tratando-se de sistemas embarcados, o consumo de energia e o tamanhodo hardware são aspectos importantes no projeto [8]. Quando se tem porobjetivo aumentar o desempenho, é natural pensar em aumentar a frequênciado processador. Com isso, entretanto, o projeto esbarra no problema deconsumo de energia. A opção é usar a arquitetura Multiprocessor System-on-Chip (MPSoC), dispondo de vários processadores com baixa frequênciaem único chip [9].

1.1 Motivação e Objetivos

O uso de multiprocessadores em sistemas embarcados tendem a se expandircada vez mais, bem como a utilização de aplicações que exigem maior poderde processamento. Exemplo disso é a renderização de imagens, renderizaçãode vídeo e cálculos complexos. Em um futuro próximo, câmeras digitaisterão maior capacidade de resolução, celulares terão aplicativos avançados eso�sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

A motivação para o estudo computação paralela está diretamente rela-cionada com o conceito MPSoC em sistemas embarcados, uma área aindapouco conhecida para os pesquisadores da computação paralela, visto queseus conceitos, muito se relacionam com técnicas clássicas de paralelismo.

6

Page 10: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Transformar sequencial em paralelo é sempre uma tarefa complexa, prin-cipalmente com projeto de software e hardware. Saber como estes sistemasfuncionam e onde se aplicam, é o caminho para o entendimento de novaspesquisas e uma forma de abstrair parte da complexidade do modelo de pro-gramação paralela em sistemas embarcados.

O objetivo deste trabalho é estudar e explorar sistemas embarcados comoum todo, assim como o uso de computação paralela nos mesmos. Para tanto,pretende-se abordar os principais conceitos, como o funcionamento, arquite-turas, sistemas operacionais, processadores, aplicações, computação paralelae programação paralela.

1.2 Organização do Trabalho

Este trabalho está organizado da seguinte forma: O Capítulo 2 faz um emba-samento sobre sistemas embarcados, no qual são estudados conceitos como:sistemas embarcados de tempo real; SoC; MPSoC; NoC; e as principais apli-cações de sistemas embarcados.

As principais arquiteturas, componentes e tecnologias de sistemas embar-cados são abordados no Capítulo 3. No Capítulo 4 são estudados sistemasmultiprocessados, os paradigmas entre MPSoC e multi-core, programaçãoparalela para sistemas embarcados e soluções para programação paralela.

As Considerações Finais são apresentas no Capítulo 5, seguida pelas Re-ferências Bibliográ�cas ultilizadas para a elaboração deste trabalho.

7

Page 11: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

2 Sistemas Embarcados:

Embasamento

Sistemas embarcados são sistemas microprocessados e dedicados a realizartarefas pré-de�nidas, geralmente usados para um propósito em especí�co.Estes sistemas são, também, limitados em relação à potencialidade de hard-ware, por possuirem pouca memória, pouca capacidade de processamento earmazenamento. Este Capítulo apresenta um estudo sobre conceitos básicosrelacionados com os sistemas embarcados.

2.1 Sistemas Embarcados de Tempo Real: Hard

and Soft

Um sistema embarcado de tempo real é de�nido a partir do tempo em queele deve retornar o resultado, ou um limite de tempo para responder deforma a garantir a estabilidade nas suas operações. Isso implica que, alémdas tarefas do sistema operacional de alocação de recursos entre processosconcorrentes, um sistema operacional de tempo real também tem a obrigaçãode controlar o tempo, acompanhando as exigências de cada tarefa em temporeal, garantindo que a aplicação tenha os recursos necessários antes do prazo[10].

Em sistemas embarcados de tempo real, os dados são processados assimque chegam, e o atraso não é tolerado, diferentemente dos que não são detempo real, nos quais os dados são disponibilizados para serem processadose o atraso acaba não sendo prejudicial no resultado.

Alguns sistemas embarcados são de hard real-time, nos quais as operaçõesdevem ser executadas até o deadline, i.e., a resposta do sistema sempre deveatender o tempo que lhe foi determinado. Geralmente, são sistemas bastanteimportantes, a demora dos resultados pode causar sérios prejuízos ao serhumano ou para uma empresa. Exemplo disso são aplicações médicas, aéreas,controladores de bomba atômica e automobilísticas [11]. O autor de [10] cita

8

Page 12: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

que aplicações de hard real-time devem ser garantidas 100% no tempo deresposta na execução de uma task.

No entanto, existem também os sistemas embarcados soft real-time. Nes-tes, as operações podem ser executadas além do deadline, podendo ultra-passar o tempo pré-determinado para a resposta, não implica que o atrasocausará danos irreversíveis. Exemplo disso são aplicações como leitoras deCD/DVD, multimídia e entre outros que atendem a estes conceitos [11].Deve-se garantir pelo menos 99,9% na resposta de uma aplicação, não neces-sáriamente 100% no tempo [10].

2.2 SoC (System-on-Chip)

É um sistema completo integrado em um único chip, onde estão contidos oprocessador, memória, controladores, I/O e demais elementos que compõema arquitetura, interconectados por um barramento interno. Os SoCs sãocircuitos para aplicações especí�cas com suporte a programação, possuemrestrições de memória e operam com processadores de baixa potência [4].

Para [10], SoCs apresentam duas implicações contraditórias, sendo quede um lado oferecem oportunidades para redução de custo, e por outro sãototalmente especializados, o que reduz o tamanho do componente.

2.3 MPSoC (Multiprocessor System-on-Chip)

O usuário tem se tornado mais exigente em relação às aplicações em sistemasembarcados, necessitando maior poder de processamento. A arquitetura mul-tiprocessada (MPSoC) possibilita que se trabalhe com aplicações que exigemum poder computacional maior, tais como os celulares, vídeo games, entreoutros. Mais funcionalidades e melhoria na interface destes sistemas tem sidoestudadas e implementadas. A limitação com relação à memória e potênciados processadores continua, mas o potencial é bem maior do que o que seconsegue com SoC [12].

Para [13], a justi�cativa de MPSoCs existirem é consequência da neces-sidade de aplicações como multimídia e celulares. MPSoC surgiu graças aoVLSI (Very Large Scale Integration), que este proporciona mais de 1 milhãode transístors em um circuito integrado.

MPSoC caracteriza a ideia multi-core, onde concentram-se vários elemen-tos de processamento em um único chip. A comunicação entre os cores é co-nhecida como uma rede intra-chip, no qual esta rede trabalha com o mesmoconceito de redes Mesh. Nos elementos de processamento, opera um micro-

9

Page 13: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

kernel (um sistema operacional linux que processa as tasks) [1]. Um exemplode MPSoC é dado na Figura 2.1, que consiste na arquitetura HeMPS (HER-MES Multiprocessor System).

Figura 2.1: Arquitetura HeMPS. Extraído de [1].

A arquitetura HeMPS está organizada em uma rede em malha, na qualpara cada elemento de processamento existe um roteador. Esta rede é conhe-cida como NoC. O PE (Processing Element), denominado como Plasma-IP,possui um processador Plasma, uma memória RAM (Random Access Me-mory), um DMA (Direct Memory Access) e uma interface de rede para acomunicação. Cabe ao PE mestre distribuir as tarefas (armazenadas no TaskRepository) entre os demais PE [1].

MPSoCs trabalham com duas importantes taxonomias: Multiprocessorshomogêneos e heterogêneos [13]. Em uma arquitetura MPSoC homogênea,os elementos de processamento trabalham na mesma frequência e tipo deprocessador, aplicado também à memória RAM e à memória cache. Porém,em sistemas heterogêneos o cenário é o inverso, pois os elementos de processa-mento (core) trabalham com diferentes frequências e tipos de processadores.

A arquitetura MPSoC pode conter mais de um conjunto de instruçõesrestrito, processadores RISC (Reduced Instruction Set Computer), para in-terface com o usuário. Para [14], a combinação de RISC com DSP (DigitalSignal Processor) é usada em aplicações para celulares. Um DSP é usadotambém para codi�cação e decodi�cação de voz, processador de áudio parareprodutor de música, processador de imagem para funcionalidades de umacâmera e um processador de vídeo para compatibilidades em um celular.

MPSoC, além de fornecer maior poder computacional aos sistemas em-barcados, proporciona uma redução no consumo de energia, pois os elementosde processamento operam em frequências mais baixas. Visto que a frequên-

10

Page 14: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

cia de um processador é proporcional ao consumo de energia. Isso implicaque o consumo de energia em sistemas embarcados é muito importante. Umexemplo é o telefone celular, se o consumo de energia for excessivo, o celulardeverá ser carregado com maior frequência, pois a bateria do mesmo seriadescarregada mais rapidamente [4].

2.4 NoC (Network-on-Chip)

Network-on-Chip(NoC) é uma infra-estrutura de comunicação que contémuma rede de interconexão em um único chip. A NoC é baseada na ideiade grandes redes de computadores, para o qual são aplicados os conceitosbásicos como switch, roteadores e topologia [15].

A NoC permite com que vários cores possam se comunicar dentro de umúnico chip, conceito usado em MPSoC (arquiteturas multiprocessadas) paracaracterizar alta complexidade estrutural e diversidade funcional. Com a es-trutura de NoCs podem ser interconectados cores homogêneos e heterogêneose sua topologia na maioria dos casos é em malha (Mesh) ou em árvore [15].

Em um canal de comunicação dentro do circuito integrado, somente umPE pode comunicar por vez (ocupar um determinado canal de comunicação).Havendo vários canais de comunicação, torna-se possível que dois ou maisPEs efetuem trocas de mensagem simultâneas. Com o uso de rede em malha,um maior desempenho em sistemas embarcados MPSoC pode ser obtido [1].

Através do conceito de NoC, torna-se possível a criação de MPSoCs parafornecer paralelismo entre os cores de uma rede de �os em um circuito in-tegrado, sendo que a utilização do mesmo implica no maior consumo deenergia, uso de protocolos de comunicação, latência da rede e complexidadede projeto [1].

2.5 Aplicações para Sistemas Embarcados

Caracterizar aplicações na medicina, aplicação em dispositivos de comunica-ção, aplicações em meios de transporte e aplicações altamente aspecializadasé importante. A Fígura 2.2 apresenta um resumo de aplicações em sistemasembarcados. Esta seção tem por objetivo estudar a aplicação dos sistemasembarcados e destacar sua importância no cotidiano, as aplicações de siste-mas embarcados estão divididas em diversas áreas:

11

Page 15: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Figura 2.2: Resumo de Aplicações Embarcadas. Adaptado de [2]

2.5.1 Aplicações na Medicina

A Medicina é uma das principais áreas que se bene�ciam dos sistemas embar-cados. Nela são atribuidos os conceitos de funcionaldade especí�ca e sistemasde hard real-time, algo que somente é proporcionado no contexto de sistemasembarcados [15]. A seguir são citadas algumas das principais aplicações em-barcadas usadas nesta área:

• Raio X Cirúrgico e Tomogra�a: O sistema embarcado é responsávelpor fazer o processamento de imagem, vídeo e controle de emissão deradiações;

• Eletrocardiógrafo: O sistema embarcado é responsável pelo proces-samento da variação de sinais do coração e o processamento multimídia;

• Ecogra�a: O sistema embarcado é responsável pela produção de ondasonora e pela interpretação do eco recebido e processmento da imagemdigital;

• Oxímetro: O sistema faz a interpretação de sinais sobre a quantidadede oxigênio no sangue;

• Microdermoabrasor Cristal Peeling: Controla a emissão de luz;

• Cadeira de Dentista: Usado para chekpoint com visor multimídia(possuindo um computador embarcado);

• Computador Móvel Médico: Processa informações para diagnóstico(programas especí�cos).

12

Page 16: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

2.5.2 Aplicações em Dispositivos de Comunicação

Esta área de aplicação é mais comum e possui um potencial grande na vendade embarcados. Um atraso mínimo é aceitável nestes aplicaticavos, encon-trados no contexto de sistemas que não são de hard real-time [15]. Estesdestacam-se os seguintes dispositivos:

• Celulares: Embarcados com semelhança ao computador pessoal. Alémde fazer ligações telefônicas, processar voz, vídeo e imagem, possuemaplicativos para conexão com a Internet, GPS (Global Positioning Sys-tem), jogos e edição de texto;

• Moduladores e Demoduladores de Sinal: Possuem funcionalida-des especí�cas na interconexão de mídias de comunicação com sinaisdiferentes;

• Switchs, Roteadores e Hubs : Aplicativos para intercoxão e comu-nicação de dispositivos em rede (processamento de sinais);

• Televisores Digitais: Processam imagem e vídeo com sinal digital.

2.5.3 Aplicações de Propósito Geral

Estas aplicações são usadas num propósito geral e não são de tempo real,não exigindo que a resposta seja em hard real-time, pois as aplicações nãoinferem um prejuízo, sendo aceitável ultrapassar o deadline proposto [10]. Asprincipais aplicações são as seguintes:

• Playstation : Poderosos sistemas embarcados, destinados a processa-mento de imagem e vídeo;

• Elevadores: Sistemas embarcados que devem controlar as solicitaçõesde subida e descida do usuário;

• Câmeras de Vídeo: Capturam imagem e vídeo, sendo que o sistemaembarcado tem a responsábilidade de fornecer uma interface com ousuário e converter a imagem ou vídeo para um formato digital;

• Terminais de Banco: Efetuam transações e operações bancárias,onde o sistema embarcado controla as operações e fornece a interfacecom o usuário;

13

Page 17: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

• Reconhecimento da Retina, Voz, Face e Impressão Digital -Usados no processo de autenticação, no qual o sistema embarcado tema responsablidade de captura e processamento de sinais, imagens evídeo, bem como sistemas baseados em cartões magnéticos, códigos debarra e RFID (Radio-Frequency IDenti�cation).

2.5.4 Aplicações em Meios de Transporte

As aplicações embarcadas em meios de transporte têm se tornado mais co-muns, e para tanto, estas devem ser de hard real-time, pois estão diretamenterelacionadas com o ser humano, e uma falha pode custar a vida [15]. Nota-sea importâcia de sistemas estáveis e seguros e que garantem que os recursosrespondam no tempo quando é requisitado.

• Automóveis: Os automóveis são praticamente todo controlado porembarcado, desde o controle do freio, injeção eletrônica, computadorde bordo, trava elétrica, vidros elétricos, etc;

• Aviões: Assemelham-se ao uso de embarcados em automóveis, porémo número de embarcados usados em aviões é bem maior, dentre elesdestacam-se o piloto automático e o painel de controle;

• Navios: Usam sistemas para controlar motores e para controlar a rota,bem como comunicar-se com a base, radares e obtenção de coordenadas;

• Trem: Um trem moderno é praticamete todo controlado por sistemasembarcados. Nos mais atuais até mesmo o condutor do trem é um sis-tema embarcado. Os demais sistemas embarcados desempenham papelimportante no controle de freio, velocidade e entre outros.

2.5.5 Aplicações Altamente Especializadas

No contexto de aplicações especializadas entram os sistemas embarcados maisrestritos (ou menos acessíveis) e geralmente encontrados apenas sob aplica-ção governamental e militar. Desempenham papel importante e garantem asegurança mundial e até mesmo a vida na terra [15]. Estes sistemas são detempo real hard, a seguir são listados as principais aplicações:

• Usinas Nucleares: Usam sistemas em grande quantidade com senso-res e controladores;

• Aeronaves Espaciais: Possuem sistemas embarcados como sensores,controladores e sistemas de comunicação;

14

Page 18: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

• Robôs: Encontrados em lugares como piloto de avião, usados em apli-cações nas quais a intervenção humana acaba sendo impossível, muitasvezes enviados em expedições na lua para coleta de informações;

• Submarinos: Controles em geral sobre as principais funcionalidadesdo submarino e piloto automático são os mais comuns em submarinos;

• Comunicação Militar: Sistemas embarcados de comunicação sem�o;

• GPS: Usado nos sistemas militares, passou a ser usado no cotidianode forma livre para localização por posição.

15

Page 19: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

3 Arquiteturas, Componentes e

Tecnologias

3.1 Arquiteturas RISC e CISC

Arquitetura RISC é basicamente constituída por um pequeno conjunto deinstruções, execução de chamada de funções, menor quantidade de modosde endereçamento, uso intenso de pipelining e execução rápida de cada ins-trução [16]. Esta arquitetura é caracterizada pela execução de instruçõesdiretamente em hardware e endereçamento de memória simples, sendo desti-nado para aplicações de propósito especí�co [10].

Já os processadores CISC trabalham com conjunto de instruções maiscomplexas e maiores [10]. Estes processadores concentra-se em uma arquite-tura com diversas instruções de hardware, cada qual, consumindo diferentesciclos de execução [16]. Esta arquitetura é caracterizada por ser uma ar-quitetura em que a partir de programas, a tradução é realizada para umalinguagem mais próxima do hardware, o que torna a execução das mesmasmais complexas. Sendo que esta arquitetura, é geralmente encontrada emcomputadores e sistemas de propósito geral [10].

3.2 Processadores para Sistemas Embarcados

A grande maioria das arquiteturas de sistemas embarcados possue restriçõesem suas especi�cações, pois são sistemas que dispõe de uma variedade delimitações. Para tanto, nestes sistemas o conjunto de instruções é bem menorse comparado com microprocessadores de uso geral. Esta seção faz um estudodas principais arquiteturas usadas em sistemas embarcados.

16

Page 20: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

3.2.1 MIPS (Microprocessor without Interlocking Pipe-

line Stages)

A MIPS (Microprocessor without Interlocking Pipeline Stages) é uma dasprincipais arquiteturas de sistemas embarcados. Seu conjunto de instruçõesé de 64 bits. MIPS é usada geralmente em vídeo games e outros sistemasembarcados. Não somente trabalha com este conjunto de instruções, comotambém suporta instruções de 32 e 16 bits [17].

As regras de instruções são semelhantes e referentes à arquitetura RISC,com instruções �xas de 32 bits, possuindo formatos para instruções de des-vio, para instruções de operações de aritmética e lógica, e para load/storee endereçamento imediato. Não importando o formato, o tamanho sempreserá de 6 bits e 37 instruções. Os registradores são usados para avaliar des-vios condicionais, signi�cando que os registradores podem ser comparadospor igualdade ou por desigualdade, sendo que o desvio é tomado somente sea condição é satisfeita [18].

3.2.2 ARM (Advanced RISC Machine)

Esta arquitetura é a mais popular entre os sistemas embarcados, muitasaplicações a utilizam. Os processadores ARM possuem instruções mais com-plexas do que um processador RISC normalmente oferece, ao contrário deoutros chips, como os da IBM, Motorola e Intel [6].

As instruções ARM começam com um campo de 4 bits que determina seuma instrução é de tempo real ou não, dependendo dos códigos de condição.Os condicionais são considerados como executando condicionalmente umainstrução incondicional. Uma execução condicional permite que branch saltesobre uma única instrução, sendo que esta, exige menos espaço de código etempo para executar [18].

Uma de suas vantagens é o baixo consumo de energia, devido a seuscircuitos simples, pipeline curtos e projetados para que quando o processadornão esteja em operação, ele consuma a menor quantia de energia possível. Oscelulares são exemplos de dispositivos que usam muito a arquitetura ARM.

3.2.3 x86

O processador X86 é popular e inicialmente usado pela Intel em micro-computadores, além disso, a Intel também fabrica processadores embarcadoscom base nesta arquitetura, para a qual o conjunto de instruções é CISC (umconjunto de instruções mais simples com relação às outras arquiteturas desistemas embarcados) [6]. Outros fabricantes de processadores (como AMD

17

Page 21: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

e VIA) também adotaram esta arquitetura para processadores em sistemasembarcados.

A principal vantagem para o uso desta arquitetura em sistemas embar-cados é a semelhança com um host (uma estação de trabalho), conjunto deinstruções e �exibilidade equivalentes a um PC comum do mercado. Estaarquitetura também é compatível com sistema operacional Linux [16].

3.2.4 PowerPC (Power Optimization With Enhanced

RISC Performance Computing)

Através da colaboração de três empresas (IBM, Motorola e Apple), foi criadaa arquitetura PowerPC (Power Optimization With Enhanced RISC Perfor-mance Computing), com conjunto de instruções RISC otimizada de 64 bits e32 bits, com suporte para operação nos modos Big-Endian e Little-Endian,possuindo especi�cação completa de 64 bits e mantendo a compatibilidadecom o modo 32 bits [6].

Para sistemas embarcados, é mais comum o uso de processadores de 32bits PowerPC, com o objetivo de diminuir os custos. A Motorola e a IBMsão os principais fabricantes deste processador com base nesta arquitetura. Épossível encontrar a arquitetura PowerPC em aplicativos embarcados comoSet Top Box, multimídia, alguns aplicativos Apple, entre outros.

3.2.5 SPARC (Scalable Processar ARChitecture)

A arquitetura escalar SPARC(Scalable Processar ARChitecture), foi desen-volvida pela SUN Microsystems, possuindo conjunto de instruções RISC.Processadores SPARC, compartilham um mesmo conjunto de instruções emum espaço linear na memória com endereços de 32 bits [16]. Esta arquiteturaé tanto usada em grandes servidores quanto em sistemas embarcados, e operanas versões 64 e 32 bits.

Os processadores podem ter de 48 a 528 registradores, os quais são com-binados em grupos de 8 registradores. As limitações no código de execução,estão restringidas a 6 bits de tamanho, permitindo 64 instruções. Utilizamdados inteiros que variam de 8 bits até 64 bits e dados representados emponto �utuante com largura de 32, 64 e 128 bits, armazenados no métodobig-endiam [16].

3.2.6 DSP (Digital Signal Processor)

O DSP é uma arquitetura de processador especí�ca para processamento desinais (geralmente de áudio e vídeo), usando técnicas matemáticas para trans-

18

Page 22: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

formar estes sinais. O processamento destes sinais é representado por umasequência númerica [19].

O processador DSP é diferente dos processadores RISC e CISC, porqueele possui uma série de instruções matemáticas e poucas funções lógicas, oque o torna bem especí�co. Entretanto para processament de sinais, ele émuito rápido se comparado com as demais arquiteturas de processadores [15].

Estes processadores são encontrados em aplicações como telecomunica-ções e processamento de áudio. Os principais fabricantes de processadoresDSP são a Texas Instruments, Philips Trimedia, Airelog Device e AdaptiveSolutions [19].

3.3 Tecnologias de Projeto

Para o projeto de sistemas embarcados estão diponíveis algumas tecnologiaspara modelar o hardware. Com o intuito de saber como estas funcionam noentendimento dos projetos de sistemas embarcados. As próximas subseçõesapresentam as principais tecnologias de projeto.

3.3.1 Microcontroladores

Segundo [20], os cientistas começaram a colocar microprocessadores em apli-cações que não tinham a ver com a computação, originando assim os micro-controladores, processadores que passaram a operar como controladores emdiferentes cenários. Um carro por exemplo, possui vários microcontrolado-res, um para cada tipo de controle (nível de combustível, velocidade, porta,quilômetros percorridos, entre outros).

Um microcontrolador é pequeno, independente e de baixo custo e devegarantir sua operação em diferentes ambientes e temperaturas. É basica-mente constituído por um microprocessador simples, juntamente com dadose memória. À ele é adicionada uma interface de periféricos, por exemplo,entrada e saída digital e analógica [20].

3.3.2 ASIC (Application Speci�c Integrated Circuit)

Um ASIC (Application Speci�c Integrated Circuit) é chip ou um cicuito inte-grado projetado para uma aplicação especí�ca com lógica não recon�gurávelcomplexa. Uma vez que o circuito integrado é construído, para outra aplica-ção é vantajoso começar um novo projeto do zero, pois o circuito foi modeladopara tal aplicação, isso implica que as ligações são feitas de acordo com as

19

Page 23: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

exigências de cada aplicação. ASIC trabalha com a abordagem System-on-chip, sendo esta, uma vantagem com relação ao custo global destes sistemas,que geralmente são produzidos em grandes quantidades [21].

Outra vantagem é a velocidade e con�abilidade destes circuitos, pois oscaminhos dentro de um chip são mais curtos do que os caminhos entre chips.ASICs são geralmente encontrados em computadores de bordo para controlarfunções de um carro e também em PDAs (Personal Digital Assistant) [15].

3.3.3 FPGA (Field-Programmable Gate Array)

O FPGA (Field-Programmable Gate Array) é um plataforma recon�gurávele conhecida como circuito integrado ou dispositivo semicondutor, que possuiuma grande quantidade de unidades lógicas idênticas para processar infor-mações digitais, sendo que as unidades lógicas são compostas de blocos decontrole (CLB), blocos de entrada e saída (IOB) e chaves de interconexão(Switch Matrix )esta composição possibilita a criação de circuitos integradoscomplexos [21].

FPGA é uma das plataformas mais usadas no projeto de hardware parasistemas embarcados com ampla variedade de aplicações. Por ser �exível,é possível reduzir o tempo gasto para desenvolver novos embarcados. Secomparado com ASIC, os FPGAs são mais lentos e são mais caros [22].

3.3.4 ASIP (Application-Speci�c Instruction-set Proces-sor)

O ASIP (Application-Speci�c Instruction-set Processor) é um circuito inte-grado para aplicações especí�cas com um conjunto de instruções de processa-dor especí�co, empregado em projeto de SoCs, sendo este adaptado para umadeterminada aplicação. Tem funcionalidade semelhante aos cicuitos ASIC,tendo como objetivo geral a �exiblidade da CPU e o desempenho de umASIC [23].

As vantagens em usar ASIP re�etem na otimização de SoCs referenteao desempenho, e�ciência, consumo de energia e suporte a con�guração doconjunto de instruções [21].

3.4 Sistemas Operacionais Embarcados

Sistemas operacionais embarcados são comumente chamados de �rmware,responsáveis por gerenciar os recursos de hardaware e fornecer um interfaceintuitiva ao usuário. No mundo dos sistemas operacionais embarcados existe

20

Page 24: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

uma separação de conceito de sistema operacional: existem os sistemas ope-racionais real-time hard e real-time soft [21].

Sistemas operacionais real-time hard são determinísticos e, além de geren-ciar tasks do próprio sistema, processam tasks requisitadas pelos aplicativosem um tempo determinado.

A garantia dos resultados em tempo real do SO embarcado, implica noproblema de escalonamento, que caracteriza um conjunto de tasks que dis-putam concorrentemente um processador. O escalonador é responsável porgerenciar o acesso, visto que cada uma das tasks possui parâmetros de pe-ríodo de solicitação e tempo necessário para a sua execução. Para tanto,algoritmos de escalonamento como FIFO e round-robin são usados [10].

RTOS (Real-Time Operating Systems), assim são denominados os site-mas operacionais da classe real-time [24]. RTOS são ideais para ambientescom recursos limitados, oferecendo ao programador fácil acesso a recursos dehardware e são adaptados para o desenvolvimento de sistemas embarcados[15]. Nos próximos tópicos são abordados os principais sistemas operacionaisreal-time hard e real-time soft.

• eCos: Sistema operacional hard real-time desenvolvido pela empresaRed Hat (Software Open Source), baseado em arquiteturas modulares,possuindo con�guração extensiva e a sua interface de programação écompatível com o padrão POSIX (Portable Operating System Inter-face). Ele também é caracterizado pelo suporte a múltiplos processoscom espaços de endereçamento independentes, mesmo quando a MMU(Memory Management Unit) está disponível [15];

• uClinux: Sistema operacional Linux enxuto, usado para rodar emmicrocontroladores sem MMU e com tamanho pequeno se comparadocom um Linux padrão. Por padrão, uClinux não é hard real-time, massegundo [15] exitem versões deste sistema que operam neste modo;

• EPOS: Sistema operacional com propósito de suportar alto desempe-nho em aplicações dedicadas, possuindo suporte à customização, po-dendo ser facilmente adaptado para aplicações especí�cas. Outra vir-tude do EPOS é dispor recursos para as aplicações com menor overheadpossível, além de ser econômico [25];

• TinyOS: Sistema operacional liberado sob licença BSD (Berkeley Soft-ware Distribution), projetado para rede de sensores sem �o. É umsitema relativamente pequeno, mas inclui protocolos de rede, serviçosdistribuídos, sensor de driver e ferramentas de aquisição de dados, ope-rando como hard real-time [26];

21

Page 25: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

• QNX: Sistema operacional real-time baseado no kernel Unix, bastanteusado em sistemas de telecomunicação. Empresas como Cisco, Delphi,General Electric, Siemens e Thales utilizam este sistema operacionalem seus produtos, por ser escalável, con�ável e oferecer alto desempe-nho para esta área de mercado [27];

• RTEMS: Sistema operacional �exível e real-time, pois fornece suporteà maioria dos processadores de sistemas embarcados. Além disso, ébastante conhecido por implementar processos simples em ambientemultithread e suportar multiprocessadores [28];

• Android OS: É um sistema operacional para dispositivos móveis, pro-prietário da empresa Open Handset Alliance. O Android oferece umconjunto completo para o desenvolvimento de aplicações, com o propó-sito de aproveitar ao máximo o que os aparelhos tem a oferecer, sendoque o sistema é aberto para aplicar modi�cações[29];

• HellFireOS: É um sistema operacional real-time, pode ser implemen-tado tanto hard quanto soft real-time e seu código é Open Source.Desenvolvido pelo grupo de pesquisa GSE (Grupo de Sistemas Em-barcados) da PUCRS (Pontifícia Universidade Católica do Rio Grandedo Sul), tendo como objetivo fornecer escalabilidade e modularidade.Nele são permitidas a migração de tasks de forma explícita e implícita.É um sistema capaz de ser adaptado para as principais arquiteturasde processadores e suportar dinamicamente a con�guração de tarefas,pilhas, entre outros [30];

• OpenWrt: Sistema operacional com licença livre, baseado no kernelLinux, com o propósito de fornecer ao usuário total administração euma con�guração customizada, fornecendo suporte a uma grande vari-edade de embarcados wireless [31];

• Windows CE: Sistema operacional de soft real-time, proprietário daempresa Microsoft. Este sistema propõe uma interface grá�ca robusta,usado em dispositivos como celulares e Handhelds, com suporte às prin-cipais arquiteturas de processador embarcado, como MIPS e ARM [32].

22

Page 26: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

4 Computação Paralela

Em ambientes computacionais, computação paralela consiste em aumentaro desempenho a partir de aplicações sequênciais, as quais representam asolução de um problema grande (tarefas que demoram para ser processadas)[33]. O objetivo da computação paralela é dividir este grande problema emproblemas menores, a �m de prover maior desempenho [34]. Computaçãoparalela é uma forma de se obter alto desempenho. Sistemas embarcadostambém usam este conceito em seus ambientes e novos desa�os de pesquisasão lançados constantemente. Qualquer ganho de desempenho acaba sendoimportante em sistemas tão limitados. Nas próximas subseções, é realizadoum estudo da abordagem de alto desempenho e paralelismo em sistemasembarcados [35].

4.1 Sistemas Embarcados Multiprocessados

Os dispositivos embarcados (em todas as áreas em que se aplicam) têm exi-gido mais desempenho, tarefa esta, di�cultada quando da ultilização de sis-temas monoprocessados. Sistemas multiprocessados são o caminho para au-mentar o desempenho [35]. Segundo [3], desa�os são constantes para estessistemas, objetivo é aumentar o número de processadores em um único chipaté atingir o espaço e a capacidade de cores que um sistema embarcado podeter. A tecnologia e a aplicação irão limitar a quantidade de cores em umMPSoC.

Há alguns anos, a indústria de processadores estava aumentando a po-tencialidade a cada versão lançada, porém, a energia consumida tambémaumentava, que se tornou um problema. Sistemas embarcados têm �cadomais limitados, ameaçando a evolução dos mesmos.

A ideia de multi-core possibilitou abrir um novo caminho para a indús-tria de processadores e sistemas embarcados. Trabalhando com frequênciasmenores é possível reduzir o consumo de energia e aumentar a potencialidadedos processadores.

23

Page 27: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Em sistemas embarcados a ideia também foi aplicada aos SoCs, o que pas-sou a ser referênciado como MPSoC. Era justamente isso que estava faltadopara que os sistemas embarcados passassem a evoluir no mercado. Sistemasmultiprocessados, então, passaram a ser alvo de muitas pesquisas para obterganho de desempenho e reduzir o consumo de energia. No entanto, a comple-xidade para trabalhar e programar nestes sistemas é um grande obstaculo.

Paralelizar a arquitetura foi um dos primeiros passos. Além disso, tam-bém são usadas técnicas para reduzir o consumo de energia, a partir detécnicas para redução de clock e otimização dos barramentos [35].

4.1.1 Tipos de Sistemas Multiprocessados

Computação de alto desempenho também é aplicada em sistemas embarcadosmultiprocessados. No entanto, existem diferentes formas de se implementarMPSoC, usando abordagem Heterogênea e Homogênea, ambas ilustradas naFigura 4.1.

Figura 4.1: MPSOC Heterogênio e Homogênio. Adaptado de [3]

Conforme a Figura 4.1, embarcados heterogêneos são aqueles que possuemmúltiplos cores diferentes. No entanto, embarcados homogêneos possuemmúltiplos cores idênticos [36].

4.1.2 Memória em Sistemas Embarcados

A complexidade da programação paralela com relação aos sistemas embarca-dos está diretamente ligada com a hierarquia (ou topologia) da memória, ouseja, como ela está organizada no MPSoC. Na Seção 4.1.1 conceitua-se comoo MPSoC pode estar organizado, homogêneo e heterogêneo.

As memórias também entram neste contexto, sendo que, para sistemasheterogêneos, a complexidade é muito maior para a criação de software secomparado com o modelo homogêneo do ponto de vista de programação [12].Existem 3 abordagens diferentes de organização de memórias em um MPSoC:

24

Page 28: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

• Memória Distribuída.

• Memória Compartilhada.

• Memória Híbrida.

A memória distribuída em sistemas embarcados é exempli�cada na Figura4.2. Para cada processador em um MPSoC existe uma memória privada,sendo a comunicação realizada por uma rede de alta velocidade (uma NoC).

Figura 4.2: Memória Distribuída. Adaptado de [3]

Na memória compartilhada, por sua vez, os processadores usam a mesmamemória, uma memória pública que os servem. Este contexto é exempli�cadona Figura 4.3.

Figura 4.3: Memória Compartilhada. Adaptado de [3]

A organização de memória híbrida é composta de memória pública eprivada. Cada core (CPU) tem sua memória privada e sua disposição orecurso de memória compartilhada (que está disponível entre o cores de umMPSoC). A ideia é ilustrada na Figura 4.4.

Segundo [3], em um MPSoC com dois cores é possível ter aumento dedesempenho sem qualquer alteração, pois torna-se usual um core para osistema operacional e outro para as tarefas especí�cas do sistema, tais comointerrupção e manipulação. Porém, em um MPSoC com vários núcleos, a

25

Page 29: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Figura 4.4: Memória Híbrida. Adaptado de [3]

aplicação precisa ser redesenhada para fazer o uso de todos os núcleos eaproveitar melhor o processamento.

4.1.3 Paralelismo

O paralelismo não é algo novo para sistemas embarcados, mas a complexidadeem explorar paralelismo continua presente, pois um sistema deve manter aordem sem causar problemas [37]. Existem 4 formas de explorar paralelismo,que são explicadas a seguir.

Paralelismo em Nível de Bit: É uma forma de paralelismo em siste-mas embarcados baseada na arquitetura para operar simultaneamente dadosmaiores. Um exemplo disso é que, se um core de 8 bits está executando cál-culos de dados de 16 bits é necessário o uso de duas instruções. Se o tamanhoda palavra for aumentado (de 8 para 16), a operação poderá ser executadaem uma única instrução [19];

Paralelismo em Nível de Instrução: Consiste na técnica que idên-ti�ca instruções que não dependem uma das outras. Situação similar àquelade trabalhar com várias variaveis executando ao mesmo tempo. Alguns apli-cativos (como processamento de voz e vídeo) podem funcionar de maneirae�ciente. Esta técnica é geralmente implementada em compiladores [19];

Paralelismo em Nível de Dados: Ocorre quando múltiplos cores exe-cutam a mesma task. Os múltiplos cores desempenham um papel importantena melhoria do desempenho, dependendo de muitos cores para trabalhar comos dado em menos tempo. No entanto, existem restrições nesta técnica, poisnem todas as partes de um programa podem ser paralelizadas, porque nãosuportam execução paralela [19];

26

Page 30: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Paralelismo em Nível de Tarefas: Distribui diferentes aplicações,processos, ou threads para unidades diferentes, sendo que isso pode ser feitomanualmente ou através do sistema operacional. A principal di�culdade emparalelizar tarefas não é a forma como as threads são distribuídas, mas sim,como dividir uma aplicação em múltiplas threads [19].

4.2 Paradigmas entre MPSoCs e Multi-Core

Os termos MPSoC e multi-core são alvo de muitas discussões com relaçãoa de�nição e onde são empregados no âmbito dos sistemas embarcados. Éde suma importância diferenciar ambos os termos, sendo que a literaturacaracteriza da seguinte forma:

• MPSoCs: Tem como objetivo reduzir os custos do sistema, reduzir oconsumo de energia e aumentar o desempenho. A implementação emmuitos casos é baseada em uma arquitetura heterogênea. São carac-terizados como complexos sistemas em um único chip e customizadospara uma determinada aplicação, signi�cando que o projeto de hard-ware ou arquitetura é modelado especi�camente para os requisitos deuma aplicação [12];

• Multi-core : Consiste em explorar paralelismo não customizado. É umtermo genérico baseado na ideia dual-core e quad-core do mercado deestações de trabalho e servidores. A implementação em muitos casos ébaseada em uma arquitetura homogênea [3].

Baseados nos conceitos levantados sobre as abordagens, pode-se a�rmarque existe processamento multi-core em um MPSoC. Porém, a�rmar que umMPSoC é um multi-core não é correto. Alguns conceitos são semelhantesentre as abordagens multi-core e MPSoC, como a organização de memória eprogramação paralela.

Termos como NoC somente estão no contexto de MPSoC. O termo hete-rogêneo é mais comum nesta abordagem, pois nele caracteriza-se o processa-mento dedicado para uma determinada aplicação. Por exemplo, nos dias dehoje, MPSoC está contido em um celular, sendo que para o processamentode áudio e vídeo usa-se um processador dedicado e voltado a este tipo deprocessamento (um processador DSP). No entanto, para o processamentode tarefas do sistema, usa-se outro processador dedicado (um processadorARM). Porém no contexto multi-core, o termo heterogenidade não é tão co-mum, pois na maioria dos casos os núcleos do processador são idênticos e, osistema não está contido em um único chip.

27

Page 31: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Isso não quer dizer que MPSoCs não podem ser homogêneos e que osmulti-cores não podem ser heterogêneos. Nada impede que se monte umsistema multi-core para uma dada aplicação.

Em um MPSoC, os cores são denomidados de PE, no qual cada corecontém um processador. Multi-core é mais conhecido como múltiplos núcleosem uma CPU, enquanto em um MPSoC podem existir cores com múltiploscores (múltiplos núcleos).

4.3 Programação Paralela

Programação paralela consiste em explorar a potencialidade dos processado-res, podendo ser distribuído ou local. Durante vários anos, diferentes estudosforam realizados para aplicar a teoria de paralelismo não apenas em super-computadores.

Sistemas embarcados aderiram a ideia de paralelismo para prover o melhoraproveitamento de hardware e melhorar os recursos disponibilizados. Estaseção, faz um paralelo dos conceitos e de como é aplicada a programaçãoparalela em sistemas embarcados, bem como os recursos disponíveis pararealizar o paralelismo.

4.3.1 SMP (Symmetric Multiprocessing)

SMP (Symmetric Multiprocessing) quer dizer multiprocessamento simétrico,é voltado para sistemas embarcados homogêneos (MPSoCs homogêneos). So-mente é possível o uso de SMP quando os cores são iguais e existe uma hie-rarquia de memória compartilhada. A memória é alocada por todos os cores[38].

Sistemas que trabalham com SMP têm muitas vantagens, principalmenteno desenvolvimento do software. SMP possibilita que cada core seja dedicadopara uma determinada tarefa. Por exemplo, um core pode ser destinado paraaplicações hard real-time e os outros para aplicações que são de soft real-time. Porém, é preciso ter maior controle com relação ao acesso à memóriae mecanismos como semáforos e Mutex Locks, resolvem este problema [39].

4.3.2 ASMP ou AMP (Asymmetric Mutiprocessing)

ASMP (Asymmetric Mutiprocessing) quer dizer multiprocessamento assimé-trico, é um termo referênciado para desenvolver SO para sistemas embarcadosheterogêneos (MPSoCs heterogêneos), pois quando os cores são diferentes, acarga de uma task não pode ser compartilhada entre os cores [38].

28

Page 32: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

ASMP trabalha com o conceito de mestre e escravo, também aplicado emcluster. Existe um mestre que distribui as tasks para os escravos processareme, ao término deste processamento, retornam o resultado ao mestre. A ideiado ASMP é simples, porém complexa para o programador [38].

4.3.3 Processos e Threads

Processo e threads são duas formas de um sistema operacional proporcionarprocessamento paralelo. A�rmar que um processo é uma thread é uma a�r-mação inválida, pois um processo descreve um instância de um programa emexecução. Ele tem um endereço de espaço associado e um bloco de controleque contém atributos e informações de estado sobre um processo [38].

O processo pode ter uma ou mais threads associadas a ele. Uma threadé apenas uma unidade de um programa executando um �uxo de instrunçõesque executam em um processador independente de outros �uxos. Threadspodem ser executadas em processadores locais ou ditribuidos em rede, éde responsabilidade do sistema operacional SMP escalonar as threads paraexecutar em processadores disponíveis [38].

Para uma thread executando em um único core, apenas pequenas fatiasde tempo são dadas a ela, para emular a execução de múltiplas tarefas si-multâneas. Já na existência de mais cores, as threads executam em paralelo.

Como um processo é caracterizado pesado em sistemas multiprocessadosembarcados, processadores operam com frequências baixas. Nestes processa-dores são executadas threads, pois o espaço de troca entre elas é uma tarefamais leve para o sistema operacional, uma vez que o espaço de endereçamentoe os recursos são comuns entre elas [38].

4.3.4 Task e Mapeamento

Para mapear em que core uma thread deve executar, é necessário modi�car a�la do algoritmo de escalonamento, no qual cada task tem um marcador queindica a sua prioridade. Ao alocar o tempo, cada task é alocada para o seucore parente na ordem de preferência, esse processo é chamado de processora�nity e pode ser soft ou hard [3].

Um soft a�nity é quando uma thread é destina a executar em um deter-minado core, mas permite que seja escolhido outro core para ser executada.Já um hard a�nity é quando o programador determina em qual core querexecutar uma thread, e ela pode somente executar neste core, mesmo que osoutros estejam disponíveis [3].

Em sistemas embarcados que exigem qualidade de serviço, geralmenteusa-se o mapeamento hard a�nity, pois se o caminho de dados pode ser

29

Page 33: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

mapeado para determinar um subconjunto de cores é mais fácil projetar etestar estes requisitos [3].

4.3.5 Comunicação e Sincronização

Sistemas embarcados geralmente operam com múltiplas threads, fazendo-senecessário que exista uma comunicação entre elas para trocar informações eestados. Alguns SOs possuem funções para permitir a comunicação e forçara sincronização. Pipes, sockets, �la de mensagens e sinais são meios paraconstruir sua própria estrutura de comunicação [38].

A sincronização entre threads é necessária para o correto funcionamento,evitando corrupções no processamento de uma aplicação. Também são neces-sários mecanismos de controle de acesso à memória, para que duas threadsnão acessem o mesmo endereço. Para isso, são usados mecanismos comosemáforos e Mutex locks [38].

4.3.6 Semáforos e Locks

Semáforo é usado para controlar o acesso à região crítica na memória, reali-zando duas operações, uma de teste e outra de incremento. Este mecanismoé implementado em sistemas embarcados quando existe hierarquia de memó-ria compartilhada e implementa a abordagem SMP. Pode ser implementadoem nível de software, ou em nível de hardware [38].

Lock (ou mais conhecido como mutex ) implementa a mesma ideia de se-máforo, sendo contemplado com duas funções básicas: lock(1) (bloqueia oacesso à sessão crítica para que outra thread não acesse) e unlok(1) (desblo-queia, permite o acesso à região que era crítica, que a thread estava usandoanteriormente) [38].

4.3.7 Memória Transacional

Memórias transacionais, conhecidas como TM (Transactional Memory), éum mecanismo de controle de acesso a memória compartilhada. O conceitode TM é análogo ao conceito de transações em banco de dados, na qual umatransição é uma espécie de leitura e escrita em uma memória compartilhadade maneira a não causar con�itos com outras transações. Se os estados dastransações não foram alterados, a operação é registrada e ao �nal é veri�cadose o estado lido é consistente, caso sejam consistentes, as transações sãorealizadas [40].

A implementação da TM pode ser feita em software STM (Software Tran-sactional Memory), em hardware HTM (Hardware Transactional Memory) e

30

Page 34: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

de forma híbrida software/hardware HyTM (Hybrid Transactional Memory).O objetivo da TM é eliminar o uso de locks no acesso a memória compar-tilhada, visto que o uso de lock em programação paralela possui problemas(dois processos acessando a mesmo endereço de memória região crítrica, porexemplo) [41].

TMs ainda se encontram em constantes pesquisas, alguns testes realizadosapontaram um ganho de desempenho com relação ao uso de locks, fatorque vem incentivando a pesquisa para resolver o problema de deadlock emmemória compartilhada [40]. A TM tende a ser usada intensivamente emMPSoCs para o controle de acesso a memória compartilha, algo que seráimprescindível, a medida que os sistemas estão se tornando cada vez maiscomplexos.

4.3.8 Paralelizando uma Aplicação

Como exemplo, utilizou-se uma aplicação de processamento de imagem JPEG(decodi�cação), com a �nalidade de exempli�car como é realizado a paraleli-zação. Cuidados como gerenciamento de memória, manipulação de arquivose I/O devem ser levados em conta [42].

A partir da biblioteca padrão não é fornecida nenhuma função para aloca-ção dinâmica de memória. As alocações são realizadas estaticamente, sendoresponsabilidade do programador determina se uma variável deve ser mape-ada para uma quantidade limitada de memória, mais rápida do que o corelocal ou para uma memória externa, porém mais lenta. Alocar uma matrizestaticamente requer que o programador conheça a fundo o algoritmo [42].

O decodi�cador usa um sistema de arquivos para ler o �uxo de bits codi-�cado. Como um sistema embarcado não dispõe de um sistema de arquivo,o core deve ler a imagem codi�cada a partir de uma memória externa [42].

Para realizar o paralelismo desta aplicação, podem ser usadas duas abor-dagens: paralelismo por dados (permite que múltiplos-cores trabalham comdiferentes partes da imagem); paralelismo por tasks (no qual as tasks dedecodi�cação são mapeadas em diferentes cores) [42].

A ideia de paralelização em um primeiro momento parece simples, poisconsiste em repartir uma imagem em pequenos fragmentos dentro de umamatriz na memória. Porém, existem alguns obstaculos, como na paralelizaçãopor dados, na qual a parte crítica é saber aonde exatamente começa um blocona matriz, sendo necessário decodi�car os blocos anteriores. Na paralelizaçãopor tasks, a complexidade está na obtenção do balanceamento de carga entreos cores, pois as tasks possuem pesos diferentes de processamento [42].

Para paralelizar uma aplicação em sistemas multiprocessados, podem serusados os seguintes modelos:

31

Page 35: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

• Master/Worker : Neste modelo uma thread é mestre, sendo que esta�ca executando até encontrar uma área em que pode ser paralelizada.Ao encontrar, manda uma certa quantidade de threads operárias pararealizar o trabalho computacional. Quando o trabalho estiver acabado,as threads operárias retornam o resultado para a thread mestre [38];

• Peer : Este modelo parte da ideia Master/Work, possuindo uma threadmestre e o mesmo tem uma funções tal como um coléga operário com-partilhando trabalho computacional, economizando uma thread. Asaplicações de destino que tem uma partição sequencial, são di�ceis deserem removidas, pois necessitam de uma combinação de execução con-corrente e sequêncial [38];

• Pipelined : É um modelo de paralelização que divide uma aplicaçãoem várias pequenas partes, estapas independentes, na qual a saída deum etapa é a entrada para a próxima. Cada etapa pode ser colocadaem cores diferentes, formando um série de etapas desassociadas em umpipeline. O uso de pipeline pode ser poderoso se a paralelização foralta, mas pode gerar um throughput alto [38].

4.4 Soluções para Programação Paralela

Esta sessão demonstra algumas das principais e conhecidas soluções de pro-gramação paralela em sistemas embarcados MPSoCs, enfatizando o seu fun-cionamento e suas funções nestes sistemas.

4.4.1 OpenMP (Open MultiProcessor)

OpenMP é uma API (Application Programming Interface) multiplataformaque suporta memória compartilhada em programas escritos em C/C++, en-tre outras linguagens de programação. OpenMP tem por objetivo forneceruma interface simples e ao mesmo tempo �exível, tanto para computadorespessoais quanto supercomputadores, fornecendo suporte a multi-thread commemória compartilhada, sendo que o controle de deadlock e sincronização dethreads devem ser implementados [38].

OpenMP também é usado atualmente em sistemas embarcados (MP-SoCs), o que facilita a programação paralela a partir de códigos sequenciais,sendo que a implementeção somente pode ser feita se usada a hierarquia dememória compartilhada. Existem versões customizadas da API do OpenMPpara execução paralela de DSPs e diretivas customizadas para otimização dealocação de memória explorando bloco de dados [43].

32

Page 36: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

4.4.2 BSP (Bulk Synchronous Parallel)

BSP (Bulk Synchronous Parallel) é um modelo de programação paralela pro-posto por Valiant BSP em 1989, no qual são incluidos uma arquitetura decomputador, uma classe de algoritmos e uma função de cobrança de custosaos algoritmos [44].

Um computador BSP consiste em uma coleção de processadores, sendoque cada um tem sua memória privada e uma rede de comunicação, e cadaprocessador pode acessar as memórias de outros processadores. Cada pro-cessador pode fazer leitura e escrita em cada célula de memória da maquinainteira. A célula pode ser local ou de outro processador. Se for local, a ope-ração tende a ser rápida, mas se for remota, pode haver um atraso, pois énecessária uma troca de mensagem na rede [44].

É importante notar que o usuário apenas se preocupa com o tempo deacesso remoto, que é fornecido pela rede (que deverá ser uniforme) e não comos detalhes de rede e comunicação [44]. O BSP pode ser usado em sistemasembarcados MPSoCs para fazer implementação de coerência de memóriaem ambientes heterogêneos nos quais os cores precisam acessar células dememória de outros cores.

4.4.3 LogP (Latency overhead gap Processor)

LogP (Latency overhead gap Processor) é um modelo de máquina paralela,mais precisamente um modelo exato para identi�car os efeitos de uma comu-nicação de processadores paralelos, para este modelo os detalhes de interli-gação de rede não são importantes para ele [33]. O que na verdade interessano modelo LogP (quando desenvolvida uma nova rede) são os seguintes pa-râmetros:

• Latency : Análise do limite superior quando mensagens de poucas pa-lavras de um nó de origem são enviadas para um nó de destino (latênciada comunicação na rede);

• Overhead : De�ne o período de tempo, quando um processador é de-dicado para a transmissão ou recepção de mensagem, não sendo capazpara fazer outra computação (sobrecarga do processador);

• Gap: De�ne um tempo mínimo que as transmissões e recepções deve-rão ser realizadas entre mensagens consecutivas por um único proces-sador;

• Processor : Especí�ca o número de unidades de processamento.

33

Page 37: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Como LogP tem por objetivo trabalhar com unidades de processamentoarbritrárias com memória distribuída, entre estas unidade existe uma comu-nicação ponto a ponto [33]. O modelo pode ser bem aplicado em MPSoCsheterogêneos com memória distribuída.

4.4.4 HellFire Framework

A programação em sistemas embarcados (MPSoCs) está se tornando sem-pre mais complexa a medida que a tecnologia de projeto de hardware temaumentado. Visto que em sistemas heterogêneos a complexidade é maior, énecessário fazer mapeamento, escalonamento e sincronização [30].

O Hell�re Fremework traz a ideia de �exibilidade para modelar um SOpara uma determinada aplicação. Sua função é oferecer uma interface para acon�guração do Hell�reOS. Sem uma interface o programador precisa progra-mar o SO para cada aplicação, processo que requer tempo e muito trabalho.Toda esta complexidade é abstraída com o uso do framework. Além da in-terface de con�guração, é fornecido um ambiente de simulação para testar oSO que foi previamente modelado [30].

Montar um SO para determinada aplicação torna-se fácil com o Hell�reFramework. Ele oferece opções escaláveis como, números de cores em umMPSoC, memória, política de escalonamento, modo de operação real-timedentre outras funções, sendo estas apresentadas por uma interface grá�casimples. Ao montar ou desenhar o SO para uma aplicação, a geração decódigo é automatizada e o desenvolvedor pode, na sequência, desenvolver aaplicação que vai rodar no Hell�reOS [30].

4.4.5 MAPS (MPSoCApplication Programming Studio)

O MAPS é uma ferramenta para programação em MPSoC, seu objetivo éanalisar um programa sequencial e, a partir deste, transformar o código paratrabalhar em paralelo, e, na sequência, simular o desempenho obtido com oparalelismo realizado [45].

Antes de resultar no produto �nal, MAPS passa por 4 etapas. A pri-meira etapa corresponde à avaliação do código sequencial desenvolvido em Cou C++. A segunda etapa corresponde ao particionamento do código que foianalisado, identi�cando os pontos de paralelismo. Na terceira etapa é reali-zado o mapeamento para MPSoCs heterogêneos, com base nas informaçõespassadas sobre a forma de operação do sistema (real-time soft ou real-timehard). Na última etapa é feita a compilação do código, no qual são con-siderados aspectos como APIs de comunicação e sincronização do MPSoC[45].

34

Page 38: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

5 Considerações Finais

O trabalho apresentou um estudo sobre sistemas embarcados como um todo,realizando uma abordagem sobre as principais arquiteturas, componentes,tecnologias de projeto e computação paralela voltada a estes sistemas. Sendoassim, pode-se a�rmar que as expectativas com relação aos objetivos destetrabalho foram atingidas.

No entanto, vale ressaltar que no estudo realizado, sistemas embarcadosapresentam um grande nicho de pesquisa. Suas aplicações estão por toda aparte e possuem um papel importante no cotidiano. Isso deixa claro que oslimites para esta área ainda não foram alcançados, muitas coisas tendem aser embarcadas e otimizadas ainda.

Constatou-se que no projeto de software de sistemas embarcados de hoje,vários aspectos são semelhantes ao projeto de software para computadoresso�sticados, tais como, programação em memória compartilhada, memóriadistribuída e memória híbrida. Ferramentas e modelos de programação pos-suem APIs para desenvolver neste tipo de contexto, com a existência delimitações de recursos de hardware.

Identi�cou-se que os modelos de programação paralela como BSP, LogPe OpenMP foram desenvolvidos inicialmente para serem usados em com-putadores so�sticados. Hoje, são importantes para desenvolver aplicaçõesparalelas em MPSoCs. Os métodos de controles para resolver os problemasde acesso à memória, consequentemente migraram para estes sistemas, masalgumas soluções (como memória transacional) estão sendo estudadas emambientes embarcados.

Notou-se que o projeto de software em MPSoCs é, na maioria dos ca-sos complexo, por trabalhar com o mesmo princípio de cluster (conceito demáquina ASMP). MPSoCs em sua grande maioria são heterogêneos, e con-troles como escalonamento e mapeamento são fundamentais, principalmenteem sistemas de tempo real, para garantir qualidade de serviço.

35

Page 39: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

Referências Bibliográ�cas

[1] CARARA E.A., OLIVEIRA R.P., CALAZANS N.L.V., and MORAESF.G. Hemps - a framework for noc-based mpsoc generation. In Circuitsand Systems, 2009. ISCAS 2009. IEEE International Symposium on,pages 1345�1348, Taipei, Taiwan, May 2009.

[2] DURÕES R. Ramon durões homepage, Extraído dehttp://www.ramonduraes.net/?tag=/sistemas+embarcados. Aces-sado em Junho de 2010.

[3] FREESCALE. Embedded Multicore, an Overview. Freescale Semicon-ductor, Arizona, USA, 2009.

[4] DORF R. C. Systems, Controls, Embedded Systems, Energy and Ma-chines. CRC Press, New York, 2006.

[5] MARTINEZ R. D., BOND A. R., and VAI M. M. High PerformanceEmbedded Computing Handbook. CRC Press, Massachusetts, 2008.

[6] KARIM Y. Building Embedded Linux Systems. O'Reilly, Sebastopol,2003.

[7] STANKOVIC A. J. Strategic directions in real-time and embeddedsystems. ACM Comput. Surv., 28(4):751�763, 1996.

[8] KARKOWSKI I. and CORPORAL H. Design of heterogenous multi-processor embedded systems: Applying functional pipelining. In ParallelArchitectures and Compilation Techniques, 1997. International Confe-rence on, pages 156�165, San Francisco, CA, USA, November 1997.

[9] RAVIKUMAR C. P. Multiprocessor architectures for embedded system-on-chip applications. In VLSI Design, 2004. Proceedings. 17th Interna-tional Conference on, pages 512�519, Mumbai, India, January 2004.

[10] FISHER A. J., FARABOSCHI P., and YUNG C. Embedded Computing.Elsevier, San Francisco (CA), 2005.

36

Page 40: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

[11] ABBOTT D. Linux for Embedded and Real-Time Aplications. Elsevier,United States of America, 2003.

[12] JERRAYA A., TENBUNEM H., and WOLF W. Guest editors' in-troduction: Multiprocessor systems-on-chips. Computer, 38(7):36�40,2005.

[13] WOLF W. Multiprocessor system-on-chip (mpsoc) tecnology.IEComputer-Aided Design of Integrated Circuits and Systems, IEEETransactions on, 27(10):1701�1713, 2008.

[14] MARTIN G. Overview of the mpsoc design challenge. In Design Au-tomation Conference, 2006 43rd ACM/IEEE, pages 274�279, San Fran-cisco, CA, USA, July 2006.

[15] ZURAWSKI R. Embedded Systems. Taylor and Francis Group, LLC,New York, 2006.

[16] MONTEIRO M. Introdução a Organização de Computadores. LTC, Riode Janeiro, 2007.

[17] BRITTON L. R. MIPS Assembly Language Programming. PearsonEducation, New Jersey, 2004.

[18] PETERSON D. and HENNESSY J. Organização e Projeto de Compu-tadores. Campus, Rio de Janeiro, 2005.

[19] SRIRAM S. and BHATTACHARYYA S. S. Embedded Multiprocessors.Taylor and Francis Group, LLC, New York, 2009.

[20] WILMSHURST T. Designing Embedded Systemas With PCI Microcon-trollers. Elsevier, United States of America, 2010.

[21] NICOLESCU G. and MOSTERMAN J. P. Model-Based Design of Em-bedded Systems. Taylor and Francis Group, LLC, New York, 2010.

[22] DUAN C., KHATRI P. S., and LAMERES J. B. On and O�-ChipCrosstalk Avoidance in VLSI Design. Espringer, LCC, New York, 2010.

[23] GRIES M. and KEUTZR K. Building ASIPS. Springer, New York,2005.

[24] NEISHABURI M.H., DANESHTALAB M., KAKOEE M.R., and SA-FARI S. Improving robustness of real-time operating systems (rtos)services related to soft-errors. In Computer Systems and Applications,

37

Page 41: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

2007. AICCSA '07. IEEE/ACS International Conference on, pages 528�534, Amman, Jordan, May 2007.

[25] FRÖHLICH M. A. A. Epos: Embedded parallel operating system (ma-nual)., Extraído de http://epos.lisha.ufsc.br/. Acessado em Março de2010.

[26] TINYOS. Tunyos homepage., Extraído de http://www.tinyos.net/.Acessado em Abril de 2010.

[27] QNX. Qnx homepage., Extraído de http://www.qnx.com/. Acessadoem Abril de 2010.

[28] RTMES. Real-time executive for multiprocessor systems rtems home-page, Extraído de http://www.rtems.com/. Acessado em Abril de 2010.

[29] ANDROID. Android homepage, Extraído de http://www.android.com/.Acessado em Junho de 2010.

[30] AGUIAR A., FILHO S.J., MAGALHAES F.G., CASAGRANDE T.D.,and HESSEL F. Hell�re: A design framework for critical embeddedsystems' applications. In Quality Electronic Design (ISQED), 2010 11thInternational Symposium on, pages 730�737, San Jose, CA USA, March2010.

[31] OPENWRT. Openwrt wireless freedrom homepage, Extraído dehttp://openwrt.org/. Acessado em Maio de 2010.

[32] Microsoft. Windows embedded ce overview homepage, Ex-traído de http://www.microsoft.com/windowsembedded/en-us/products/windowsce/default.mspx. Acessado em Junho de 2010.

[33] PARHAMI B. Introduction to Parallel Processing. Kluwer AcademicPublishers, New York, 2002.

[34] ZOMAYA A. Y. Parallel and Distributed Computing Handbook.McGraw-Hill Professional, New York, 1996.

[35] GOODMAN R. and BLACK S. Design challenges for realization of theadvantages of embedded multi-core processors. In AUTOTESTCON,2008 IEEE, pages 447�452, Salt Lake City, Utah, September 2008.

[36] GORACZKO M., LIU J., LYMBEROPOULOS D., MATIC S.,PRIYANTHA B., and ZHAO F. Energy-optimal software partitioning in

38

Page 42: Pontifícia Universidade Católica do Rio Grande do Sul Computação Computação … · 2016. 6. 29. · so sticados e os sistemas embarcados, em geral, passarão a ser mais potentes.

heterogeneous multiprocessor embedded systems. In DAC '08: Procee-dings of the 45th annual Design Automation Conference, pages 191�196,Anaheim, California, June 2008.

[37] ZAGLEWSKI R. and WÓJCIKOWSKI M. Multi-core processor systemfor real-time image processing in embedded computer vision applicati-ons. In 1st International Conference on Information Technology, pages19�21, Salt Lake City, Utah, October 2008.

[38] RAUBER T. and RÜNGER G. Parallel Programming. Springer, NewYork, 2010.

[39] GOOS G., HARTMANIS J., and LEEUWEN J. Languages and Com-pilers for Parallel Computing. Springer, New York, 2008.

[40] MINH C. M., CHUNG J., KOZYRAKIS C., and OLUKTUN K. Stamp:Stanford transactional applications for multi-processing. In WorkloadCharacterization, 2008. IISWC 2008. IEEE International Symposiumon, pages 35�46, Atlanta, GA, USA, December 2008.

[41] MOORE K. E., J. BOBBA, MORAVAN M.J., HILL M.D., andWOOD D. A. Logtm: Log-based transactional memory. In High-Performance Computer Architecture, 2006. The Twelfth InternationalSymposium on, pages 254�265, Austin, Texas, February 2006.

[42] HANSSON A., AKESSON B., and MEERBERGEN V. J. Multi-processor programming in the embedded system curriculum. SIGBEDRev., 6(1):1�9, 2009.

[43] MARONGIU A. and BENINI L. E�cient openmp support and exten-sions for mpsocs with explicitly managed memory hierarchy. In Design,Automation Test in Europe Conference Exhibition, 2009. DATE '09,page 2009, Nice, France, April 809-814.

[44] BISSELING H. R. Parallel Scienti�c Computation. Oxford UniversityPress, New York, 2004.

[45] CENG J., J. CASTRILLON, SHENGW., SCHARWACHTER H., LEU-PERS R., ASCHEID G., MEYR H., ISSHIKI T., and KUNIEDA H.Maps: An integrated framework for mpsoc application parallelization.In Design Automation Conference, 2008. DAC 2008. 45th ACM/IEEE,pages 754�759, Anaheim, CA, USA, June 2008.

39