Vitor Fiorotto Astolfi Orientador: Jorge Luiz e Silva

Slides:



Advertisements
Apresentações semelhantes
Coerência de Cache em Multiprocessadores
Advertisements

Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
Conceitos de Programação Paralela
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Programação em Java Prof. Maurício Braga
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
Estruturas de Repetição
Noções de Sistemas Operacionais
Processadores AMD.
Banco de Dados SQL Stored Procedures
Threads (Linha de execução )
Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II
Software Básico Silvio Fernandes
Pontifícia Universidade Católica do Rio Grande do Sul
ARQUITETURA DE COMPUTADORES II
Modelos de Troca de Dados em Nível Elétrico
Multithreading e multiprocessamento
William Stallings Arquitetura e Organização de Computadores 8a Edição
Arquitetura de Sistemas Operacionais
Introdução à Informática
Arquiteturas Diferentes
Aproveitamento do Processador
Chapter 4: Threads.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
CISC e RISC.
DIAGRAMA DE ATIVIDADES
SSC144 Arquitetura de Computadores Introdução
Threads Estagiário: Bruno Guazzelli Batista Slides de autoria do Prof Drº Marcos José Santana baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum.
Walfredo Cirne Threads Walfredo Cirne
Sistemas Operacionais
AED – Algoritmos e Estruturas de Dados
Processos Conceitos Básicos.
Organização da Memória Principal
Arquitetura de Computadores
Sincronização e Comunicação entre Processos
09/03/10 20:13 Claudio de Oliveira – 1/21.
Experiments with Strassen’s Algorithm: from sequential to parallel
Tratamento de Ficheiros
1 Felipe L. Severino Geração de Cenários para Desktop Computing Felipe L. Severino paralela e.
Listas Encadeadas.
Revisão da Linguagem C.
Classes e objetos P. O. O. Prof. Grace.
Sistemas Operacionais
2- Entendendo o que é Arquitetura e Organização
Threads: Introdução e Implementação
PROGRAMAÇÃO I UNIDADE 1.
Pesquisa em Memória Primária
SISTEMAS OPERACIONAIS
GAPH Integração de Hardware do Usuário ao CoreConnect Leandro Heleno Möller e Leonel Pablo Tedesco Prototipação Rápida e Computação.
Paralelismo Computadores de alto-desempenho são utilizados em diversas áreas: - análise estrutural; - previsão de tempo; - exploração de petróleo; -
Fundamentos de programação CUDA
Tipos Abstratos de Dados
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
Linguagem de Programação IV
Arquitetura de computadores
Sistemas Operacionais
Entendendo as definições de classe
Arquitetura de computadores
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Aula 6 - Estruturas de Controle
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Problema do Produtor - Consumidor
CMP 167– Programação com Objetos Distribuídos Prof. Cláudio Geyer
Processos.
Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (at) utfpr (dot) edu (dot) br.
Programação de PIC em C Exposição das funções básicas para
Transcrição da apresentação:

Vitor Fiorotto Astolfi Orientador: Jorge Luiz e Silva PROCESSAMENTO CONCORRENTE EM ALGORITMOS COM EXECUÇÃO ORIENTADA A FLUXO DE DADOS EM HARDWARE RECONFIGURÁVEL Vitor Fiorotto Astolfi Orientador: Jorge Luiz e Silva

Problemas Enfrentados pelas Indústrias de Processadores Maior barreira – densidade de potência. (W/cm²) Pentium Pro – densidade de uma chapa quente. Em 2010 – atingiria a temperatura de um reator nuclear Porém: em 2004 Intel anuncia que focará nos multi-core. Outras fabricantes seguem.

Problemas Enfrentados pelas Indústrias de Processadores Gargalo – aumento da freqüência dos barramentos não acompanhou aumento da freqüência dos processadores. 7% ao ano.

PARALELISMO EM NÍVEL DE INSTRUÇÃO – PROCESSADORES SUPERESCALARES. Técnicas – pipeline, execução fora-de- seqüência, execução especulativa. Temos algum processamento dirigido pelo fluxo de dados. Essas técnicas forneceram aumento de desempenho de 600% na década passada.

PARALELISMO EM NÍVEL DE INSTRUÇÃO – LIMITAÇÕES Aumento indefinido de estágios de pipeline não é uma boa solução Potência consumida Baixo speedup

PARALELISMO EM NÍVEL DE INSTRUÇÃO – LIMITAÇÕES Especulação agressiva aumenta muito o uso de memória Aumento da latência Prejudica preenchimento dos pipelines. Aumento da EPI

Arquiteturas Dataflow Usa todo paralelismo possível Sem considerar execuções especulativas Elimina gargalo de acesso à memória centralizada Não há necessidade de armazenamento de dados compartilhado. Arquiteturas Dataflow (anos 70 e 80): problemas Granularidade fina demais – mais tempo era gasto durante o tráfego que a computação em si dos dados. Estruturas de dados Linguagens de programação Etc...

Projeto ChipCFlow Compilador da linguagem C para grafos Dataflow (fluxo de dados) Não usa linguagens de programação específicas das Arquiteturas Dataflow. Multi-tarefa – Uso do paralelismo natural do hardware Threads – Condições de disputa. Execução direta em hardware. Similar ao Impulse C, etc.

CPSEQ – DUAS COMPARAÇÕES SIMPLES EM SEQÜÊNCIA. /* Programa CpSeq – Duas comparações em seqüência */ int main () { int a, b, c, d, e, f; int p, q, r, s, t, u; input(&a, &b, &c, &d, &e); if (a > 0) { f = b + c; } else { f = d – e; output(f); input(&p, &q, &r, &s, &t); if (p < 0) { u = q / r; } else { u = s * t; output(u);

CPPAR – DUAS COMPARAÇÕES SIMPLES EM PARALELO. /* Programa CpPar – Duas comparações em paralelo */   void F( ) { int a, b, c, d, e, f; input(&a, &b, &c, &d, &e); if (a > 0) { f = b + c; } else { f = d – e; output(f); void U ( ) { int p, q, r, s, t, u; input(&p, &q, &r, &s, &t); if (p < 0) { u = q / r; } else { u = s * t; output(u); int main ( ) { thread tf, tu; thread_create(&tf, F); thread_create(&tu, U);

REPRESENTAÇÃO DE AMBOS CPSEQ E CPPAR EM GRAFO DATAFLOW

PROBLEMA DO PRODUTOR-CONSUMIDOR (MODIFICADO) – IMPLEMENTAÇÃO INCORRETA /* quantidade máxima de elementos */ #define N 100 /* quantidade de elementos no momento */ int count = 0; int produzir; int consumir;   void produtor ( ) { input(produzir); while (produzir) { if (count < N) { count = count + 1; } void consumidor ( ) { input(consumir); while (consumir) { if (count > 0) { count = count − 1; }   int main ( ) { thread p; /*1 produtor */ thread c1, c2;/*2 consumidores */ thread_create(&p, produtor); thread_create(&c1, consumidor); thread_create(&c2, consumidor);

Problema do Produtor-Consumidor (modificado) – grafo Dataflow incorreto Grafo Inseguro Grafo com condições de disputa. Inicialização da variável compartilhada

PROBLEMA DO PRODUTOR-CONSUMIDOR (MODIFICADO) – IMPLEMENTAÇÃO COM MONITORES #define N 100 int count = 0; monitor produtor_consumidor { void insere () { if (count < N) { count = count + 1; } void remove () { if (count > 0) { count = count - 1; } void produtor () { input(produzir); while (produzir) { insere(); void consumidor ( ) { input(consumir); while (consumir) { remove(); }   int main ( ) { thread p; /* 1 produtor */ thread c1, c2; /* 2 consumidores */ thread_create(&p, produtor); thread_create(&c1, consumidor); thread_create(&c2, consumidor);

Problema do Produtor-Consumidor (modificado) – grafo Dataflow com “distribuidor” Grafo seguro Escalonamento round-robin Problema: limitação do paralelismo (gargalo).

Prova de conceito – Produtor Consumidor com compartilhamento de duas variáveis Count – Número de itens disponíveis Cons – Número de itens consumidos Novos operadores em negrito Distribuidor – envio de dados simultâneo e exclusivo a cada linha de execução

PROVA DE CONCEITO – MODULARIZAÇÃO DO PROBLEMA Criação de operadores produtor e consumidor Cada um deles testado separadamente.

SUPER-BLOCO “CONSUMIDOR” – IMPLEMENTAÇÃO NO XILINX ISE

Teste do super-bloco “consumidor” Blocos INDATA e AOUT: Sincronizar dados de entrada e de saída.

Teste do super-bloco “consumidor” - Resultados

APÓS CRIAÇÃO DOS BLOCOS DISTRIBUIDOR E PRODUTOR – CIRCUITO FINAL

Circuito final – resultado (até 1000 ns)

Obrigado Perguntas?