Software Pipeline. Maria Angélica Lopes de Souza 2.SOFTWARE PIPELINE, CONCEITOS RESUMO. Palavras-Chave 1.INTRODUÇÃO. 2.1 Grafo de dependência

Tamanho: px
Começar a partir da página:

Download "Software Pipeline. Maria Angélica Lopes de Souza 2.SOFTWARE PIPELINE, CONCEITOS RESUMO. Palavras-Chave 1.INTRODUÇÃO. 2.1 Grafo de dependência"

Transcrição

1 Software Pipeline Maria Angélica Lopes de Souza RA: RESUMO Cada vez mais busca-se melhorar o desempenho da execução de programas e técnicas como Software Pipeline, que visam paralelizar o código a ser executado, podem ser utilizadas para isto. Os loops são principal alvo do paralelismo, pois são os responsáveis pela maior parte do tempo gasto na execução de programas. Neste trabalho é apresentada uma visão geral sobre Software Pipeline e a comparação de alguns algoritmos existentes. Além de adaptações para exploração de multhreads que estão sendo feitas recentemente. Palavras-Chave Software pipeline, loop, escalonamento de módulo, identificação do kernel, dependência de recursos. 1.INTRODUÇÃO A melhoria do desempenho na execução de programas tem sido buscada cada vez mais, pois o máquinas lentas perdem espaço no mercado. Utilizar paralelismo em nível de instrução (ILP) é um caminho para melhorar o desempenho. Existem duas abordagens para o ILP: dinâmica (hardware) e estática (software). No ILP estático, utiliza-se do compilador para paralelizar o código, aproveitando ao máximo possível as unidades de processamento disponíveis. Na maioria das vezes o tempo para executar loops é o grande responsável pelo tempo total da execução dos programas, por isso são o principal foco de paralelização. As principais técnicas para paralelizar (desdobrar) loops estaticamente são Loop Unrolling e o Software Pipeline. O Loop Unrolling, realiza o desdobramento do loop para que as instruções presentes no mesmo em diferentes iterações sejam executadas de forma seqüencial. Para isto utiliza mais registradores, pois precisa de registradores diferentes para evitar restrições que seriam geradas pelo uso do mesmo registrador para computações diferentes. O número de registradores disponíveis para o desdobramento de quantas iterações do loop forem necessárias é um fator limitante da técnica, além do aumento do tamanho do código (que é escalonado no final do processo de desdobramento). Software Pipeline utiliza a idéia de que o corpo do loop pode ser reformado de modo que uma iteração do loop possa iniciar antes da iteração anterior ter terminado. Obtendo assim maior paralelismo [4]. Esta técnica será explicada com mais detalhes deste trabalho, na seção 2. Na seção 3, será feita uma revisão sobre os algoritmos de Software Pipeline existentes destacando as vantagens e desvantagens. Um método para reverter o pipeline é apresentado na seção 4. Finalmente, na seção 5, são realizadas algumas conclusões sobre os algoritmos apresentados. 2.SOFTWARE PIPELINE, CONCEITOS A técnica realiza uma reorganização de instruções, reestruturando loops de modo que várias iterações sejam sobrepostas (executadas ao mesmo tempo). Software Pipeline comporta-se de forma similar a um Loop Unrolling ilimitado, isto é, infinito[1]. A paralelização é feita no novo corpo do loop, denominado kernel (onde instruções de todas as iterações possíveis sendo executadas em paralelo nas unidades de processamento disponíveis), as instruções do loop que iniciam o processo de paralelismo antes da formação do kernel são denominadas prólogo e as que sucedem o kernel denominam-se epílogo. A figura 1, mostra a um novo loop, indicando suas partes. Figura 1: Corpo do Loop[4] Em um loop certamente existem operações conflitantes, isto é, dependentes, uma das outras e estas não podem ser executadas simultaneamente. A dependências podem ser classificadas como de dados verdadeira (quando a instrução dependente precisa ler um registrador a ser escrito por uma instrução anterior), antidependência (quando uma instrução precisa escrever, mas deve esperar uma anterior ler o registrador em questão) e dependência de saída (quando as instruções escrevem no mesmo registrador). Um grafo de dependência de dados (DDG- data dependence graph) é utilizado para ilustrar as relações de dependência entre várias instruções. 2.1 Grafo de dependência O grafo de dependência é representado por DDG(N,A), onde: N :são os nós ou vértices do grafo e correspondem as instruções A: são as arestas ou arcos do grafo, indicam a existência de dependência entre as instruções dos nós incidentes As arestas são categorizadas por [1] como: loop-independent, que indicam dependência entre instruções na mesma iteração, e loop-

2 carried, que indicam dependência entre instruções em iterações diferentes. Quando não há dependência loop-carried, é possível paralelizar todo o loop, chamado de doall loop. A fim de respeitar as dependências indicadas pelas arestas e indicar quanto uma instrução deve esperar para ser executada, relaciona-se cada vértice do grafo um par de valores de espera (diff,min). O valor de diff está associado ao loop-carried pois indica uma instrução deve esperar para iniciar na próxima iteração (em loop-independent diff=0 [1]), e o de min indica espera para mesma iteração. Na figura 2 é possível observar um exemplo do grafo DDG e do escalonamento gerado para 4 iterações do loop apresentado Intervalo de Inicialização Para inciar uma nova iteração do loop é preciso respeitar as dependências entre iterações. O intervalo constante utilizado para iniciar sucessivas iterações é denominado Intervalo de Inicialização (II) [5]. Por conseqüência quanto maior o valor de II, maior é o tempo gasto para execução de todas iterações do loop. O II é limitado pela restrição de recursos (limita o II de acordo com a quantidade de recursos disponíveis de acordo com a necessidade das instruções, por exemplo, pode haver conflito para utilização de unidades funcionais) e de dados (determinada pelas dependências representadas no DDG). O melhor valor para II corresponde ao valor da maior restrição (de recursos, ou de dados). No trabalho de [1], são citados os seguintes métodos para calcular o melhor II: Enumeração de Ciclos, Algoritmo do menor caminho (usa fecho transitivo), Menor caminho iterativo (simplificação do menor caminho), Programação linear (encontra menor II baseado nos valores de (diff, min)). É importante minimizar o valor do intervalo de inicialização, pois pesquisas realizadas por [9] revelaram que o número de registradores necessários para escalonamento pode aumentar com o aumento do valor de II. Desta forma, é perceptível que o intervalo de inicialização é um elemento chave para paralelismo com Software Pipeline. Figura 2: (a) Corpo do loop, pseudo-código. (b) primeiras três iterações do loop.(c) DDG. (d) Representação do código: prólogo, kernel e epílogo. (e) Escalonamento [1] 3. ALGORITMOS PARA SOFTWARE PIPELINE Algoritmos para realização Software Pipeline são apresentados nesta seção. [1] os divide em duas categorias: Escalonamento de Módulo e Identificação do Kernel. 3.1 Escalonamento de Módulo O algoritmo utiliza a idéia de que inicialmente deve-se prever um valor para o kernel e realizar adequações para melhorá-lo, gerando um novo kernel. Durante o escalonamento para descoberta do novo kernel deve-se garantir que não haja violação das restrições de recursos ou da dependência de dados no processo de sobreposição de iterações. O início de cada iteração da sobreposição deve seguir o valor do intervalo de inicialização. Segundo [1] a dificuldade do algoritmo é garantir que as instruções sejam posicionadas de forma que todas as iterações sejam identicamente escalonadas, mas apresenta vantagem em relação a outros algoritmos por não precisar que o loop seja desenrolado para que se inicie o escalonamento. Assim, a principal questão do algoritmo está em descobrir o valor do II para iniciar o escalonamento (pois determina o posicionamento das instruções). O problema para encontrar o melhor II é NP-Completo, e por isso o algoritmo realiza uma estimação: atribui um valor pequeno a ele e o incrementa até encontrar um que esteja de acordo com as restrições (de recursos e dados) existentes[1]. O nome escalonamento de módulo vem do fato de que instruções cuja localização módulo II são executadas simultaneamente.

3 Como pode ser observado na figura 3, as instruções F 1,F 3, F 5 são executadas ao mesmo tempo, pois II=2 e (F i mod2=1, i=1,3,5). escalonamento. Um ponto a se destacar é que escalonamentos podem não se comportar adequadamente para grandes valores de II, se tornando um problema para escalonamento com hierarquia. Além disso, a realização do escalonamento da parte condicional do código antes das demais instruções pode gerar problemas quando decisões tomadas arbitrariamente com base em algumas instruções influenciam negativamente outras, que ainda não foram analisadas. Figura 3: (a) Instruções a serem escalonadas II=2 (b) O resultado do pipeline[1] O tratamento de desvios neste algoritmo é complicado e por isso para escaloná-los é preciso o auxílio de algoritmos que transformem o código eliminando os desvios. Este fator motivou diferentes autores a propor algoritmos que utilizam o princípio do escalonamento de módulo, dentre eles: Escalonamento de Módulo via Redução Hierárquica, Caminho Algébrico, Escalonamento de Módulo Predicado, Enhanced Módulo, Single-dimension Software Pipeline; e serão apresentados nas seções a Figura 4: Redução do grafo de dependência. Os nós 3 e 5 (a) são reduzidos a um único nó (b) [1] Escalonamento de Módulo via Redução Hierárquica Escalonamento de módulo via redução hierárquica recebe este nome por ser uma variação do Escalamento de Módulo que realiza o escalonamento de componentes fortemente conectados em separado. Foi proposto em 1988, e será descrito como em [1]. Um dos principais objetivos foi resolver o problema de escalonamento de desvios encontrado no Escalamento de Módulo básico. O modelo permite que múltiplas instruções sejam apresentadas em um dado nó do grafo de dependência. Inicialmente o algoritmo quebra o problema em subproblemas, escalonado-os separadamente (loops internos primeiro), os nós do DDG são simples. Posteriormente realiza-se a redução do grafo, os componentes fortemente conectados são reduzidos a um único nó de modo que o grafo se torne acíclico. A figura 4 ilustra um passo de redução do DDG, no qual os nós com os valores 3 e 5 são condensados em um único nó (o processo é feito de forma sucessiva até o grafo se tornar acíclico). O que pode ser identificado como a primeira etapa do algoritmo, e utiliza um valor baixo para o II. Na segunda etapa é realizado o escalonamento do DDG acíclico produzido na etapa anterior. Caso algum dos escalonamentos falhar, restaura-se o DDG original e repete-se todo processo de escalonamento incrementando-se o valor de II. Pode ocorrer do algoritmo ser ineficiente para paralelizar o loop em questão, o que ocorre quando aumenta-se muito de II e ainda existem falhas no Escalonamento Caminho Algébrico Formula o problema de Software Pipeline rigorosamente em termos matemáticos. O Algoritmo mostra ser uma solução elegante para o paralelismo, mas torna-se uma ferramente teórica e não prática [1]. Por este motivo não será descrito em detalhes neste trabalho Escalonamento de Módulo Predicado O Escalonamento de Predicado se difere da redução hierárquica por não precisar da redução dos componentes fortemente conectados [1], pois escalona o loop gerando caminhos diferentes apenas para as instruções dependentes do desvio condicional. Aplica a idéia aproximada do if-conversion, em que cada if está associado a um predicado (conjunto de instruções). Este predicado pode ter valor true ou false (relacionados aos bits, 1 e 0 respectivamente). Todas as instruções sofrem fetch, mas apenas as que estiverem ligadas ao valor de predicado true são completamente executadas. O método evita a expansão desnecessária de código através da expansão de variável para renomeamento de registradores. Isto reduz a quantidade de recursos necessários para execução do código. O total de recursos é calculado como união da quantidade de recursos que cada desvio precisa. Segundo [1], o suporte oferecido pelo hardware facilita o processo

4 de renomeação, através de um arquivo rotativo de registradores. Cada iteração acessa diferentes registradores, uma vez que a referência a um registrador n nem sempre refere ao mesmo endereço físico, mas sim a um registrador disponível do arquivo. Apesar de resolver o problema gerado pelo escalonamento antecipado do código condicional que ocorre na Redução Hierárquica, o escalonamento de Predicado possui outro problema que é iniciar a execução de todas as instruções Enhanced Módulo O método utiliza if-conversion para posicionar linearmente as instruções, código predicado [1]. Após o escalonamento renomeia os registradores para as diferentes iterações. Posteriormente restaura-se a estrutura do desvio, reverse ifconversion, inserindo instruções do desvio condicional no código. A simplicidade do método pode ser apresentada como uma vantagem, no entanto possui a desvantagem da explosão de código (que pode levar a complexidade do algoritmo para 2 n ) Single-dimension Software Pipeline (SSP) O algoritmo foi proposto em 2004 por [6], para possibilitar o escalonamento de loop multi-dimensional, transformando o mesmo em um código uni-dimensional (é um aprimoramento do Escalonamento de Módulo tradicional). O escalonamento se dá em três etapas: 1. Seleção do loop: Etapa em que busca-se o nível de loop mais profundo em um conjunto de loops alinhados (L1, L2,..., Ln onde 1 x n são os níveis de loop e x o nível selecionado. 2. Simplificação de dependências e construção de escalonamento 1-D: O multi-dimensional DDG é reduzido a um uni-dimensional DDG para o loop selecionado. Com base no grafo de uma dimensão e na restrição de recursos o escalonamento de módulo é construído. 3. Cálculo do escalonamento final: De acordo com o resultado do escalonamento 1-D, deriva-se uma função que especifica o tempo de escalonamento entre as instruções em um loop multi-dimensional. Apesar de manter a simplicidade de implementação do escalonamento de módulo, sua complexidade pode chegar a O(n 3 ) ou O(n 4 ) dependendo do critério de seleção do loop e do módulo utilizado inicialmente para o escalonamento (dependente do II). 3.2 Identificação do Kernel Algoritmos com esta classificação identificam o kernel através do desdobramento do loop, não precisando repetir o escalonamento para diferentes II como no Escalonamento de Módulo. No entanto, este desdobramento pode elevar o custo do algoritmo. A idéia básica para o escalonamento com Identificação do Kernel é dividida em três etapas: 1. Desenrolamento do loop e verificação de dependências. 2. Escalonamento das instruções, de acordo com o permitido pelas dependências de dados. 3. Observação de blocos de instruções consecutivas que são idênticos a outros blocos. Este bloco representa o novo corpo do loop. Em seguida as iterações desenroladas são reescritas como um novo loop, cujo corpo é o bloco repetitivo observado. Pode acontecer do bloco repetitivo não ser encontrado, o que é solucionado através da movimentação de código (processo de deslocar instruções na execução do escalonamento). A idéia surgiu inicialmente no software pipeline URPR (UnRolling, Pipelining, and Rerolling). No entanto esta solução foi superada, em termos de tempo de execução do código, por diferentes algoritmos para Identificação do Kernel, dentre eles: Perfect Pipeline, Modelo de Redes de Petri, Técnica de Vegdahl's ( seções 3.2.1, e respectivamente Perfect Pipeline Foi introduzido por Aiken e Nicolau em 1988 para ser utilizado com arquiteturas com modelo mais geral, e resolve o problemas de mudança da arquitetura através da mudança de parâmetros da problema. Combina a movimentação de código com escalonamento [1]. Segue o raciocínio base utilizado em URPR, apresentando vantagens em arquiteturas multiway branching (que oferecem suporte a desvios baseados em múltiplas condições boolenas). E alcança tempo ótimo quando é aplicado a um corpo de loop com um único bloco básico e recursos ilimitados. Resolve o problema de desvios através da técnica do ifconversion. Para a identificação do kernel, utiliza-se um histórico de execução de algumas iterações iniciais. O escalonamento é feito com base nas dependências entre estas iterações do histórico, para identificar o corpo do kernel, escalona-se apenas as instruções que não estão no caminho crítico. No início do processo de escalonamento, que utiliza movimentação de código, os recursos são considerados como infinitos. Identifica-se o prólogo, kernel e epílogo e se a quantidade de processadores disponíveis para paralelizá-los não for suficiente é necessário adequar o kernel em relação à quantidade de recursos disponíveis Modelo de Redes de Petri O algoritmo de rede de Petri é fundamentado na teoria de grafos para resolver o problema de identificação do kernel [1]. Para otimizar a performance de loops que contém predicados utiliza renomeamento de registradores. O grafo utilizado se difere do DDG, pois mapeia as dependências existentes no loop em forma cíclica e possui dois tipos de nós: um que indica localização e outro as transições. A figura 5 mostra um grafo da rede de Petri, no qual as instruções a serem paralelizadas são representadas pelas transições, cada par de arestas indica a dependência existente entre as transições. Adicionalmente realiza-se o controle das instruções que podem ser

5 executadas identificando-as através do nó de localização (quando o nó de localização, antes da transição, contém um token e o posterior não tem é um indício de a que a primeira instrução foi executada mas a segunda não). Não é um algoritmo muito utilizado, apesar de facilitar a identificação do kernel através do controle de execução. Pode ser utilizado em arquiteturas multiway com execução condicional. Um dos problemas do método é a expansão do código, a técnica de janelamento pode ser utilizada para reduzir o trabalho de paralelizar um grande código. A movimentação das instruções é feita em um conjunto de instruções, o que é chamado de janela. No entanto o janelamento pode limitar a a execução concorrente de instruções em um corpo de loop [1]. Na tabela 1 pode ser observada a comparação dos algoritmos de Software Pipeline apresentados até o momento. Figura 5: Grafo da Rede de Petri [1] Técnica de Vegdahl's Diferentemente das outras técnicas apresentadas até o momento, Vegdahl's representa um método exaustivo em que todas as possíveis soluções são representadas e a melhor selecionada. Por ser um software pipeline NP-Completo, se torna impraticável para códigos reais [1]. Lineariza o código a ser escalonado através de programação dinâmica, para formar o corpo do loop. Utiliza um grafo similar ao do modelo de Rede de Petri, exceto que as instruções são representadas como todas decisões possíveis para o escalonamento e em tempo de execução refina-se para uma única decisão. A interpretação automática das dependências nas arestas pode ser desvantajosa se a renomeação de registradores eliminar as anti-dependências do loop-carried. 3.3 Enhanced Pipeline Enhanced Pipeline integra a transformação de código com escalonamento para produzir excelentes resultados [1], o que supera o fato de ser um algoritmo de difícil entendimento. A movimentação do código é utilizada para o escalonamento (como no Perfect Pipeline). Evita o problema de identificar o kernel no código, pois manipula o loop inteiro em vez de iterações individuais. Todas dependências de loop-carried são consideradas para o escalonamento. Além disso, o prólogo e o epílogo são gerados automaticamente pela movimentação do código. Redução Hierárquica Caminho Algébrico Escalonam ento de Predicado Enhanced Modulo Expansão de Código Complexidade Escalonamento de Módulo poli sim sim não poli não sim não poli não sim não 2 n não sim não SSP n 3 ou n 4 sim sim não Perfect Pipeline poli sim não sim Petri poli sim não sim Vegdahl's 2 n sim não sim poli sim não não Identificação do Kernel Enhance Pipeline Tabela 1: Comparação dos algoritmos de escalonamento quanto ao tipo, complexidade e expansão do código. 3.4 Explorando Paralelismo em Multithread Deixar a tarefa de melhorar o desempenho de programas sob responsabilidade do programador é complicado, pois é mais difícil escrever códigos multithread. Além disso, exige que o programador conheça o mecanismo de acesso a dados e recursos para que possa implementar uma boa lógica de sincronização. Desta forma, é muito mais interessante que o compilador produza códigos multithreads a partir de single-thread. Ainda não ocorreu o sucesso completo de técnicas para desenvolver o paralelismo em nível de thread (TLP Thread Level Paralelism), no entanto grandes progressos foram alcançados. Nesta seção serão apresentados dois algoritmos (Macro Software Pipeline, seção e Multi-Thread Software Pipeline, seção 3.5.2) o primeiro explora TLP em arquiteturas multithreads e o segundo em multi-core Macro Software Pipeline (MSWP) Embora técnicas software pipeline melhorem a performance de

6 execução em diversas arquiteturas, freqüentemente não exploram a capacidade máxima de processadores multithreads. Afim de tirar maior proveito desta capacidade [2] desenvolveram o Macro Software Pipeline. O método realiza o escalonamento de loops particionando o corpo do loop em tarefas de modo que cada thread execute todas as iterações de uma tarefa. Adicionalmente utiliza a especulação para maximizar a exploração do paralelismo. A figura 6, mostra um código a ser paralelizado, assim como o grafo de tarefas (HTG- Hierarchical Task Graf) e o escalamento nas threads. O algoritmo é simples e consiste de quatro etapas: 1. Particionamento do código: Extração de tarefas baseada na análise de dependências e de acordo com a representação do código. As informações de dependência são colocadas no HTG. O maior objetivo desta etapa é extrair a máxima sobreposição de iteração para serem executadas nas threads. 2. Eliminação de dependência e especulação: A especulação se dá no sentido de que o escalonamento de uma iteração depende de uma ou mais iterações (dependência de controle). As dependências de dados são analisadas para verificar quando é possível realizar a próxima instrução. O código a ser executado é colocado em cada thread, e as possíveis compensações devido a miss especulação são inseridas. 3. Inserção do código de comunicação: São inseridas instruções para comunicação entre threads, esta etapa é altamente dependente dos recursos de comunicação suportados pela arquitetura. As instruções são inseridas e forma a evitar deadlocks. 4. Aplicação de software pipeline em nível de instrução nas threads: Software pipeline em threads é significativo apenas a thread executa todas iterações do loop. O algoritmo foi testado por [2] em um processador modelo Coral 2000, obtendo 25% de speedup quando utilizaram o benchmark SPEC Multi-Thread Software Pipeline (MTS) É evidente o crescimento da utilização de arquiteturas multi-core, no entanto o sucesso de chips multi-core depende de avanços em sistemas de software, como compiladores, utilizem técnicas para paralelizar threads. O método é um modelo geral em que, dado um loop escrito em uma linguagem seqüencial, resolve automaticamente a emissão múltipla geralmente associada ao escalonamento paralelo: extração de threads, escalonamento, comunicação e sincronização [3]. O algoritmo utilizado para gerar o escalonamento por software é o Single-dimension Software Pipeline (SSP), discutido na seção A implementação do modelo foi bem sucedida em compiladores Open64 e testado em arquiteturas multi-core IBM Cyclops64. Figura 6: Exemplo de escalonamento MSWP. Grafo de tarefas e código (a). Escalonamento, nas threads A a E (b). Diferentes problemas podem ser encontrados para realizar o TLP[3]: 1. Primeiro, da mesma forma que em arquiteturas singlecore as dependências de dados e recursos devem ser respeitadas em multi-core. O que difere é o fato da dependência de memória entre unidades de threads independentes e leva a necessidade sincronização para garantir corretude no acesso à memória. 2. Segundo, deve-se implementar a sincronização de modo que o paralelismo minimize o tempo de execução do programa, para isto o escalonamento deve ser livre de deadlock. 3. Terceiro, a dependência que pode existir entre diferentes threads levam a necessidade de um buffer, para comunicação de dados e da sincronização dessa comunicação. O escalonamento final particiona o escalonamento ideal em grupos idênticos com o número máximo de iterações, todas as unidades de thread executam o mesmo escalonamento, incluindo o processo de sincronização. A sincronização utiliza pontos que visam minimizar a duplicação

7 de código. Uma operação WAIT é colocada antes de cada repetição e uma operação SIGNAL é colocada depois. Sua implementação é feita de maneira que cada thread utilize dois contadores: contador de sincronização e contador de clock. O contador de clock (interno a cada unidade de thread) é incrementado a cada WAIT. Quando alcança-se um WAIT, a execução na unidade de thread só continua se o contador de sincronização for maior que o de clock. Durante a compilação, dependência de registradores são transformadas em dependências de memória. A sincronização garante que uma instrução só é emitida quando a instrução precedente de acesso à memória tenha sido comitada. 4 PIPELINE REVERSO O método é chamado de De-pipeline, e realiza a operação reversa do pipeline. Desenvolvido por [7][8], restaura um código assembly de um loop que passou por software pipeline, construindo um código semanticamente equivalente à forma seqüencial. Os criadores do método justificam sua importância da seguinte forma: 1. Muitas vezes é difícil analisar, compreender e debugar o código de um loop que passou por software-pipeline. 2. A conversão de código entre processadores de sinal digital (DSP, Digital Signal Processors) é de grande importância prática, mas não é fácil de ser feita entre VLIW (Very Long Instruction Word) DSP e outros processadores DSP. 3. Pode ser necessário realizar o de-pipeline de um loop que foi paralelizado em aplicações com memória crítica, pois a aplicação de software-pipeline em loops melhora o tempo de execução, mas freqüentemente é ineficiente quanto a utilização de memória. O processo de de-pipeline envolve sete etapas: 1. Detecção do loop: Identificar o corpo de um loop linearizado pelo software-pipeline, a partir de um segmento de código assembly. 2. Análise de variáveis: Encontrar no loop identificado as instruções que escrevem em registradores ou que fazem acesso à memória. 3. Construção do DDG: Montar o grafo DDG de um loop. 4. Verificação do loop que passou pelo software pipeline: Se existirem duas instruções cuja distância no corpo do loop é menor que no DDG, então o loop é resultado de um software pipeline. 5. Encontrar as partes de prólogo e epílogo: identificar instruções correspondentes ao prólogo e epílogo do código assembly. 6. Escalonamento: Para conversão do DDG em código seqüencial. Percorre-se o grafo identificando as instruções (pode ser necessário incluir NOP para satisfazer as latências), as instruções são inseridas no caminho determinado pelo escalonamento, por fim são deletadas as instruções de prólogo e epílogo que repetem no corpo do loop. 7. Cálculo de contagem do loop: para entender a contagem do loop em código seqüencial. Nos experimentos realizados por [7] com vinte códigos assembly todas as conversões foram corretamente executadas, quando comparadas aos códigos produzidos por um software pipeline. 5. CONCLUSÃO A técnica Software Pipeline é um importante e poderoso meio para melhorar o tempo de execução de programas através da paralelização de loops. Diferentes algoritmos implementam a técnica, a escolha de qual utilizar deve ser feita com cuidado pois pode ser difícil chegar ao kernel e conseqüentemente paralelizar o código. Atualmente não foi proposto nenhuma algoritmo de Software Pipeline revolucionário, pesquisadores modificam as idéias tradicionais apresentadas neste trabalho na tentativa de melhorá-las. Arquitetos buscam melhorar o desempenho dos computadores projetando arquiteturas para dar suporte à execução de mais tarefas ao mesmo tempo, como multithreads e multi-cores. No entanto, para que se alcance o desempenho desejado é preciso auxílio de tecnologias de software para paralelizar as aplicações. Pesquisas neste sentido estão sendo realizadas, alcançando bons resultados. 6.REFERÊNCIAS [1]Allan V.H., Jones R.B., Lee R. M., Allan S.J. Software Pipeline.1995 ACM Comp Survey [2]Dimitriou, G.; Polychronopoulos, C Parallel Computing in Electrical Engineering [3] Douillet, A.; Gao, G.R Software-Pipelining on Multi- Core Architectures. Parallel Archicteture and Compilation Techniques. 16th International Conference [4]Jones, R.B. Allan, V.H Software pipelining: a comparison and improvement Microprogramming and Microarchitecture. Micro 23. Proceedings of the 23rd Annual Workshop and Symposium., Workshop on [5] Rau B. R Iterative modulo scheduling: an algorithm for software pipelining loops MICRO 27: Proceedings of the 27th annual international symposium on Microarchitecture San Jose, California, United States [6] Rong H., Tang Z., Govindarajan R, Douillet A, Gao G.2004 Single-Dimension Software Pipelining for Multi-Dimensional Loops. Proceedings of the International Symposium on Code Generation and Optimization [7] Su B, Wang J; Hu E.; Manzano J Acoustics, Speech, and Signal Processing. Proceedings. IEEE International Conference on [8]Su B, Wang J; Hu E.; Manzano J Software De- Pipelining Technique. Source Code Analysis and Manipulation,

8 Fourth IEEE International Workshop on [9]Touati S On the Periodic Register Need in Software Pipelining. IEE Transactions on Computers

Software Pipeline. Sergio Ricardo Souza Leal de Queiroz. IC-Unicamp - RA: 107070 RESUMO 2. SOFTWARE PIPELINE, CONCEITOS 1.

Software Pipeline. Sergio Ricardo Souza Leal de Queiroz. IC-Unicamp - RA: 107070 RESUMO 2. SOFTWARE PIPELINE, CONCEITOS 1. RESUMO Software Pipeline Sergio Ricardo Souza Leal de Queiroz A partir do momento em que se constatou que a evolução dos computadores não estaria mais na velocidade do processador, e sim em projetar máquinas

Leia mais

Software Pipelining Carla Geovana do Nascimento Macário RA: 895063

Software Pipelining Carla Geovana do Nascimento Macário RA: 895063 Software Pipelining Carla Geovana do Nascimento Macário RA: 895063 RESUMO Software pipelining constitui uma das principais técnicas utilizadas pelos compiladores para aumentar o paralelismo na excução

Leia mais

Organização e Arquitetura de Computadores. Capítulo 13 Paralelismo no nível de instruções

Organização e Arquitetura de Computadores. Capítulo 13 Paralelismo no nível de instruções Organização e Arquitetura de Computadores Capítulo 13 Paralelismo no nível de instruções O que é Superescalar? As arquiteturas superescalares são aquelas capazes de buscar, decodificar, executar e terminar

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 6 - ARQUITETURAS AVANÇADAS DE COMPUTADORES 1. INTRODUÇÃO As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com ela o conceito de arquitetura avançada tem se modificado. Nos

Leia mais

Arquitetura e Organização de Computadores 2

Arquitetura e Organização de Computadores 2 Arquitetura e Organização de Computadores 2 Escalonamento Estático e Arquiteturas VLIW Dynamic Scheduling, Multiple Issue, and Speculation Modern microarchitectures: Dynamic scheduling + multiple issue

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

28/9/2010. Paralelismo no nível de instruções Processadores superescalares Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados

Leia mais

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB 2.3 Dependências de dados (Data Hazards) Ocorre quando uma instrução depende do resultado de outra instrução que ainda está no pipeline. Este tipo de dependência é originado na natureza seqüencial do código

Leia mais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Notas da Aula 4 - Fundamentos de Sistemas Operacionais Notas da Aula 4 - Fundamentos de Sistemas Operacionais 1. Threads Threads são linhas de execução dentro de um processo. Quando um processo é criado, ele tem uma única linha de execução, ou thread. Esta

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

Unidade 4 Paralelismo em Nível de Instrução. Filipe Moura de Lima Gutenberg Pessoa Botelho Neto Thiago Vinícius Freire de Araújo Ribeiro

Unidade 4 Paralelismo em Nível de Instrução. Filipe Moura de Lima Gutenberg Pessoa Botelho Neto Thiago Vinícius Freire de Araújo Ribeiro Unidade 4 Paralelismo em Nível de Instrução Filipe Moura de Lima Gutenberg Pessoa Botelho Neto Thiago Vinícius Freire de Araújo Ribeiro Sumário Introdução O Pipeline Pipeline em diferentes CPUs ARM Cortex-A9

Leia mais

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

Leia mais

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva Arquitetura de Computadores - Arquitetura RISC por Helcio Wagner da Silva Introdução RISC = Reduced Instruction Set Computer Elementos básicos: Grande número de registradores de propósito geral ou uso

Leia mais

7-1. Parte 6 Otimizações da Arquitetura

7-1. Parte 6 Otimizações da Arquitetura 7-1 Parte 6 Otimizações da Arquitetura 7-2 Bibliografia [1] Miles J. Murdocca e Vincent P. Heuring, Introdução à Arquitetura de Computadores [2] Andrew S. Tanenbaum, Modern Operating Systems [3] William

Leia mais

Arquiteturas que Exploram Paralismos: VLIW e Superscalar. Ch9 1

Arquiteturas que Exploram Paralismos: VLIW e Superscalar. Ch9 1 Arquiteturas que Exploram Paralismos: VLIW e Superscalar Ch9 1 Introdução VLIW (Very Long Instruction Word): Compilador empacota um número fixo de operações em uma instrução VLIW As operações dentro de

Leia mais

Predição de Desvios e Processadores Superescalares Especulativos

Predição de Desvios e Processadores Superescalares Especulativos Predição de Desvios e Processadores Superescalares Especulativos Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Tomasulo Especulativo Se os

Leia mais

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ Microarquiteturas de Alto Desempenho Pipeline Gabriel P. Silva Introdução Pipeline é uma técnica de implementação de processadores

Leia mais

Unidade 14: Arquiteturas CISC e RISC Prof. Daniel Caetano

Unidade 14: Arquiteturas CISC e RISC Prof. Daniel Caetano Arquitetura e Organização de Computadores 1 Unidade 14: Arquiteturas CISC e RISC Prof. Daniel Caetano Objetivo: Apresentar os conceitos das arquiteturas CISC e RISC, confrontando seus desempenhos. Bibliografia:

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

Cálculo Aproximado do número PI utilizando Programação Paralela

Cálculo Aproximado do número PI utilizando Programação Paralela Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Cálculo Aproximado do número PI utilizando Programação Paralela Grupo 17 Raphael Ferras Renan Pagaiane Yule Vaz SSC-0143 Programação

Leia mais

Algumas características especiais

Algumas características especiais Algumas características especiais Tópicos o Medidas de desempenho o CISC versus RISC o Arquiteturas Superescalares o Arquiteturas VLIW Medidas de desempenho Desempenho é muito dependente da aplicação MIPS:

Leia mais

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64 Arquitecturas Alternativas Pipelining Super-escalar VLIW IA-64 Pipeline de execução A execução de uma instrução passa por várias fases: Vimos o ciclo: fetch, decode, execute fetch decode execute instrução

Leia mais

Pipelining. Professor: Carlos Bazilio. Pólo Universitário rio de Rio das Ostras

Pipelining. Professor: Carlos Bazilio. Pólo Universitário rio de Rio das Ostras Pipelining Professor: Carlos Bazilio Contextualizando Após apresentação da arquitetura interna de processadores Memória de Controle Microprograma Linguagem de Máquina... Motivação Idéia Geral Estágios

Leia mais

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Informática I Aula 5 http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100

Leia mais

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

Leia mais

Microarquiteturas Avançadas

Microarquiteturas Avançadas Univ ersidade Federal do Rio de Janei ro Info rmátic a DCC/IM Arquitetura de Computadores II Microarquiteturas Avançadas Gabrie l P. Silva Introdução As arquiteturas dos processadores têm evoluído ao longo

Leia mais

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir. O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline Todos os estágios devem estar prontos ao mesmo tempo para prosseguir O tempo requerido para mover uma instrução

Leia mais

Aula 26: Arquiteturas RISC vs. CISC

Aula 26: Arquiteturas RISC vs. CISC Aula 26: Arquiteturas RISC vs CISC Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Arquiteturas RISC vs CISC FAC 1 / 33 Revisão Diego Passos

Leia mais

Arquiteturas de Software

Arquiteturas de Software Universidade Federal do Amazonas Faculdade de Tecnologia Departamento de Eletrônica e Computação Arquiteturas de Software Lucas Cordeiro lucascordeiro@ufam.edu.br Notas de Aula Estes slides são baseados

Leia mais

O cursor se torna vermelho e uma Paleta de Edição contendo as instruções mais utilizadas é apresentada.

O cursor se torna vermelho e uma Paleta de Edição contendo as instruções mais utilizadas é apresentada. Editor de Ladder para VS7 Versão Teste O editor de ladder é um software de programação que permite que o VS7 e o µsmart sejam programados em linguagem de contatos. Esse editor está contido na pasta Público

Leia mais

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Sistemas Operativos Threads 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv) Dos Processos para os Threads O conceito de thread foi introduzido na tentativa de

Leia mais

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP.

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP. A ARQUITETURA DE UM COMPUTADOR A arquitetura básica de um computador moderno segue ainda de forma geral os conceitos estabelecidos pelo Professor da Universidade de Princeton, John Von Neumann (1903-1957),

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Pipeline Slide 1 Pipeline Pipeline Hazards: Hazards Estruturais Hazards de Dados Hazards de Controle Organização e Arquitetura de Computadores I Caminho de Dados

Leia mais

Sistemas Operacionais I

Sistemas Operacionais I UFRJ IM - DCC Sistemas Operacionais I Unidade II - Threads 24/04/2014 Prof. Valeria M. Bastos 1 ORGANIZAÇÃO DA UNIDADE Threads Processos Threads Conceituação Descrição e Imagem de uma Thread Tipos de thread

Leia mais

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Capítulo 2 Processos e Threads Prof. Fernando Freitas slide 1 Capítulo 2 Processos e Threads Prof. Fernando Freitas Material adaptado de: TANENBAUM, Andrew S. Sistemas Operacionais Modernos. 3ª edição. Disponível em: http://www.prenhall.com/tanenbaum_br slide

Leia mais

Paralelização de Simuladores de Hardware Descritos em SystemC

Paralelização de Simuladores de Hardware Descritos em SystemC Paralelização de Simuladores de Hardware Descritos em SystemC 18 de maio de 2011 Roteiro Motivação Introdução à SLDL SystemC O Escalonador SystemC Simulação Paralela baseada em Eventos Discretos Suporte

Leia mais

Sequenciamento dinâmico

Sequenciamento dinâmico Sequenciamento dinâmico João Canas Ferreira Outubro de 2004 Contém figuras de Computer Architecture: A Quantitative Approach, J. Hennessey & D. Patterson, 3 a. ed., MKP c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento

Leia mais

Programação Paralela e Distribuída (DCC/UFRJ)

Programação Paralela e Distribuída (DCC/UFRJ) Programação Paralela e Distribuída (DCC/UFRJ) Aula 7: Programação com memória compartilhada usando OpenMP 1, 8, 10 e 15 de abril de 2015 OpenMP (Open MultiProcessing) Projetado para sistemas de memória

Leia mais

Infraestrutura de Hardware. Revisão Pipeline, Superescalar e Multicores

Infraestrutura de Hardware. Revisão Pipeline, Superescalar e Multicores Infraestrutura de Hardware Revisão Pipeline, Superescalar e Multicores Pipeline Pipeline é uma técnica que visa aumentar o nível de paralelismo de execução de instruções ILP (Instruction-Level Paralellism)

Leia mais

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS MACHADO/MAIA: CAPÍTULO 07, PÁGINA 101 Prof. Pedro Luís Antonelli Anhanguera Educacional sistemas multiprogramáveis Os sistemas multiprogramáveis

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 19: Visão geral sobre otimização de programas 06 de julho de 2010 1 2 3 Características esperadas dos programas O primeiro objetivo ao escrever programas de computador

Leia mais

Programação em Memória Compartilhada com OpenMP

Programação em Memória Compartilhada com OpenMP Programação em Memória Compartilhada com OpenMP Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br

Leia mais

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara Carga Horária: 60h Sumário Unidade Lógica Aritmetrica Registradores Unidade Lógica Operações da ULA Unidade de Ponto Flutuante Representação

Leia mais

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva Arquitetura de Computadores - Processadores Superescalares por Helcio Wagner da Silva Introdução O Pipeline é uma técnica desenvolvida para a melhoria do desempenho frente à execução seqüencial de instruções

Leia mais

Técnicas de Teste de Software

Técnicas de Teste de Software Técnicas de Teste de Software Fabrício Sousa fabricio@uesb.br Projeto de Caso de Teste Conjunto de técnicas para criação de casos de testes Série de casos de testes que tem grande probabilidade de encontrar

Leia mais

Arquitetura de Computadores I

Arquitetura de Computadores I Arquitetura de Computadores I Pipeline -- Conflito de dados paradas e adiantamentos -- Conflito de controle detecção de desvios e descarte de instruções -- Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento 1 Processadores Computador Processador ( CPU ) Memória E/S Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento 2 Pastilha 3 Processadores (CPU,, Microcontroladores)

Leia mais

Sistemas Operacionais

Sistemas Operacionais 7 Sistemas Operacionais 7.1 Fundamentos da ciência da computação Cengage Learning Objetivos 7.2 Compreender o papel do sistema operacional. Compreender o processo de inicialização para carregar o sistema

Leia mais

7 Processamento Paralelo

7 Processamento Paralelo 7 Processamento Paralelo Yes, of course, who has time? Who has time? But then if we do not ever take time, how can we ever have time? (The Matrix) 7.1 Introdução Classificação de Sistemas Paralelos Diversas

Leia mais

Os textos nestas caixas foram adicionados pelo Prof. Joubert

Os textos nestas caixas foram adicionados pelo Prof. Joubert William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 4 Memória cache Os textos nestas caixas foram adicionados pelo Prof. Joubert slide 1 Características Localização. Capacidade.

Leia mais

Sistemas Computacionais II Professor Frederico Sauer

Sistemas Computacionais II Professor Frederico Sauer Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material não

Leia mais

Arquitetura de Computadores. Arquitetura de Computadores 1

Arquitetura de Computadores. Arquitetura de Computadores 1 Computadores Computadores 1 Introdução Componentes: Processador; UC; Registradores; ALU s, FPU s, etc. Memória (Sistema de armazenamento de informações; Dispositivo de entrada e saída. Computadores 2 Introdução

Leia mais

Arquitetura de processadores: RISC e CISC

Arquitetura de processadores: RISC e CISC Arquitetura de processadores: RISC e CISC A arquitetura de processador descreve o processador que foi usado em um computador. Grande parte dos computadores vêm com identificação e literatura descrevendo

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 2 - O NÍVEL DA MICROARQUITETURA 1. INTRODUÇÃO Este é o nível cuja função é implementar a camada ISA (Instruction Set Architeture). O seu projeto depende da arquitetura do conjunto das instruções

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Questões Em uma rede de sobreposição (overlay), mensagens são roteadas de acordo com a topologia da sobreposição. Qual uma importante desvantagem

Leia mais

S.O.: Conceitos Básicos

S.O.: Conceitos Básicos S.O.: Conceitos Básicos Camada de software localizada entre o hardware e os programas que executam tarefas para o usuário; Acessa os periféricos Entrada e Saída Esconde os detalhes do hardware para o programador

Leia mais

3. Comunicação em Sistemas Distribuídos

3. Comunicação em Sistemas Distribuídos 3. Comunicação em 3.1.Troca de mensagens As mensagens são objetos de dados cuja estrutura e aplicação são definidas pelas próprias aplicações que a usarão. Sendo a troca de mensagens feita através de primitivas

Leia mais

Algoritmos e Programação. Prof. Tarcio Carvalho

Algoritmos e Programação. Prof. Tarcio Carvalho Algoritmos e Programação Prof. Tarcio Carvalho Conceito de Lógica A utilização da lógica na vida do indivíduo é constante, visto que é ela quem possibilita a ordenação do pensamento humano. Exemplo: A

Leia mais

CIÊNCIA DA COMPUTAÇÃO E SISTEMAS DA INFORMAÇÃO

CIÊNCIA DA COMPUTAÇÃO E SISTEMAS DA INFORMAÇÃO CIÊNCIA DA COMPUTAÇÃO E SISTEMAS DA INFORMAÇÃO MATERIAL INSTRUCIONAL ESPECÍFICO Tomo V 1 Questão 1 Questão 1. 1 O problema P versus NP é um problema ainda não resolvido e um dos mais estudados em Computação.

Leia mais

ARQUITECTURA DE COMPUTADORES

ARQUITECTURA DE COMPUTADORES ARQUITECTURA DE COMPUTADORES CAPÍTULO IV AULA II Maio 2014 Índice Processadores Revisões Pipelining Pipeline hazards Hazard estrutural Hazard de dados Hazard de controlo Pipelining datapath Pipelined control

Leia mais

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD.

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD. AULA4: PROCESSADORES 1. OBJETIVO Figura 1 Processadores Intel e AMD. Conhecer as funcionalidades dos processadores nos computadores trabalhando suas principais características e aplicações. 2. INTRODUÇÃO

Leia mais

LUIZ GUILHERME CASTILHO MARTINS DESENVOLVIMENTO DE TÉCNICAS DE PARALELIZAÇÃO DE CÓDIGO

LUIZ GUILHERME CASTILHO MARTINS DESENVOLVIMENTO DE TÉCNICAS DE PARALELIZAÇÃO DE CÓDIGO LUIZ GUILHERME CASTILHO MARTINS DESENVOLVIMENTO DE TÉCNICAS DE PARALELIZAÇÃO DE CÓDIGO LONDRINA PR 2013 LUIZ GUILHERME CASTILHO MARTINS DESENVOLVIMENTO DE TÉCNICAS DE PARALELIZAÇÃO DE CÓDIGO Trabalho de

Leia mais

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN

Sistemas Paralelos e Distribuídos. Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN Sistemas Paralelos e Distribuídos Prof. Jorge Dantas de Melo Depto. Eng. Comp. e Automação CT - UFRN Conceitos preliminares Paralelismo refere-se a ocorrência simultânea de eventos em um computador Processamento

Leia mais

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro

Sistemas Operacionais Carlos Eduardo Portela Serra de Castro Introdução Sistemas Operacionais 1 Sistema Operacional: Um conjunto de programas, executado pelo computador como os outros programas. Função: Controlar o funcionamento do computador, disponibilizando seus

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação Disciplina A Disciplina B Código Disciplina C/H Curso Disciplina C/H Código Curso Ano do Currículo 66303 ESTRUTURA DE DADOS I 68/0 ENG. DE

Leia mais

Introdução à Programação de Computadores

Introdução à Programação de Computadores 1. Objetivos Introdução à Programação de Computadores Nesta seção, vamos discutir os componentes básicos de um computador, tanto em relação a hardware como a software. Também veremos uma pequena introdução

Leia mais

- Aula 1 - ARQUITETURA DE COMPUTADORES

- Aula 1 - ARQUITETURA DE COMPUTADORES - Aula 1 - ARQUITETURA DE COMPUTADORES Em arquitetura de computadores serão estudados aspectos da estrutura e do funcionamento dos computadores. O objetivo é apresentar de forma clara e abrangente a natureza

Leia mais

Sistemas Operacionais Processos e Threads

Sistemas Operacionais Processos e Threads Sistemas Operacionais Processos e Threads Prof. Marcos Monteiro, MBA http://www.marcosmonteiro.com.br contato@marcosmonteiro.com.br 1 Estrutura de um Sistema Operacional 2 GERÊNCIA DE PROCESSOS Um processo

Leia mais

Arquitetura de Computadores I

Arquitetura de Computadores I Arquitetura de Computadores I Pipeline Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Organização do MIPS: pipeline Visão geral do pipeline Analogia com uma Lavanderia doméstica 1

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

Leia mais

Paralelização Introdução a vetorização, OpenMP e MPI

Paralelização Introdução a vetorização, OpenMP e MPI 1/45 Paralelização Introdução a vetorização, OpenMP e MPI 1 Conceitos Paulo Penteado IAG / USP pp.penteado@gmail.com Esta apresentação: Arquivos do curso: Artigo relacionado: http://www.ppenteado.net/ast/pp_para_on/pp_para_on_1.pdf

Leia mais

1 - Processamento de dados

1 - Processamento de dados Conceitos básicos sobre organização de computadores 2 1 - Processamento de dados O que é processamento? O que é dado? Dado é informação? Processamento é a manipulação das informações coletadas (dados).

Leia mais

SIS17 - Arquitetura de Computadores

SIS17 - Arquitetura de Computadores SIS17 - Arquitetura de Computadores Organização Básica B de Computadores (Parte I) Organização Básica B de Computadores Composição básica b de um Computador eletrônico digital Processador Memória Memória

Leia mais

Muitas aplicações modernas podem ser modeladas como tarefas divisíveis.

Muitas aplicações modernas podem ser modeladas como tarefas divisíveis. 1 Introdução O grande aumento de performance das redes de computadores, combinado com a proliferação de computadores de baixo custo e alto desempenho, trouxe à tona ambientes de meta-computação, ou grids[15,

Leia mais

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura 4-1 - Exemplo 4 PROCESSOS Os primeiros sistemas operacionais permitiam que apenas um processo fosse executado por vez. Dessa maneira, este processo tinha todo o sistema computacional a sua disposição. Os atuais sistemas

Leia mais

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto: Processadores BIP A família de processadores BIP foi desenvolvida por pesquisadores do Laboratório de Sistemas Embarcados e Distribuídos (LSED) da Universidade do Vale do Itajaí UNIVALI com o objetivo

Leia mais

Introdução ao Processamento Paralelo

Introdução ao Processamento Paralelo Introdução ao Processamento Paralelo Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h Introdução Crescente aumento de desempenho dos PCs (máquinas convencionais). Existem aplicações que requisitam

Leia mais

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 06: Threads Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o conceito de thread Discutir as APIs das bibliotecas de threads Pthreads, Win32

Leia mais

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo

Módulo 4: Processos. Conceito de Processo. Diagrama de Estados de Processos. Estados de Processo Módulo 4: Processos Conceito de Processo Conceito de Processo Escalonamento de Processos Operações com Processos Processos Cooperativos Comunicação entre Processos Um sistema operacional executa uma variedade

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)

Leia mais

RISC X CISC - Pipeline

RISC X CISC - Pipeline RISC X CISC - Pipeline IFBA Instituto Federal de Educ. Ciencia e Tec Bahia Curso de Analise e Desenvolvimento de Sistemas Arquitetura de Computadores 25 e 26/30 Prof. Msc. Antonio Carlos Souza Referências

Leia mais

Nível de Micro Arquitetura Melhorando o Desempenho

Nível de Micro Arquitetura Melhorando o Desempenho Nível de Micro Arquitetura Melhorando o Desempenho parte 3 Orlando Loques outubro 2006 Referências: Structured Computer Organization, A.S. Tanenbaum, (c) 2006 Pearson Education Inc Computer Organization

Leia mais

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional O conteúdo deste documento tem por objetivo apresentar uma visão geral

Leia mais

Organização de Computadores 2005/2006 Processamento Paralelo

Organização de Computadores 2005/2006 Processamento Paralelo Organização de Computadores 2005/2006 Processamento Paralelo Paulo Ferreira paf a dei.isep.ipp.pt Maio de 2006 Introdução 2 Porquê?...........................................................................................

Leia mais

Maestro. Arthur Kazuo Tojo Costa 317497. Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação

Maestro. Arthur Kazuo Tojo Costa 317497. Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação Maestro Arthur Kazuo Tojo Costa 317497 Universidade Federal de São Carlos Campus Sorocaba Bacharelado em Ciência da Computação Introdução Sistema Operacional de Redes Detalhes do hardware Multiplexação

Leia mais

Paradigmas de Linguagens de Programação. Aspectos Preliminares

Paradigmas de Linguagens de Programação. Aspectos Preliminares Aspectos Preliminares Cristiano Lehrer Motivação (1/6) Aumento da capacidade de expressar idéias: Difícil conceituar estruturas quando não se pode descreve-las. Programadores são limitados pelas linguagens.

Leia mais

Projeto de Sistemas de Tempo Real

Projeto de Sistemas de Tempo Real Projeto de Sistemas de Tempo Real Centro de Informática - Universidade Federal de Pernambuco Engenharia da Computação Kiev Gama kiev@cin.ufpe.br Slides elaborados pelo professor Marcio Cornélio O autor

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 4 SUPORTE AO SISTEMA OPERACIONAL Prof. Luiz Gustavo A. Martins Sistema Operacional (S.O.) Programa responsável por: Gerenciar os recursos do computador. Controlar a execução

Leia mais

O Processador: Caminho de Dados e Controle

O Processador: Caminho de Dados e Controle 22 Capítulo 3 O Processador: Caminho de Dados e Controle O desempenho de um computador é determinado por três fatores principais: o número de instruções executadas, o período do clock e o número de ciclos

Leia mais

O que é Arquitetura de Computadores?

O que é Arquitetura de Computadores? O que é Arquitetura de Computadores? Forças Coordenação de um conjunto de níveis de abstração de um computador sobre um grande conjunto de forças de mudança Arquitetura de Computadores = Arquitetura de

Leia mais

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico Banco de Dados // 1 Banco de Dados // 2 Conceitos BásicosB Engenharia da Computação UNIVASF BANCO DE DADOS Aula 1 Introdução a Banco de Dados Campo representação informatizada de um dado real / menor unidade

Leia mais

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo

Professores: Aula 10. Lúcia M. A. Drummond Simone de Lima Martins. Conteúdo: Arquiteturas Avançadas. - Arquiteturas RISC - Processamento Paralelo 1 Professores: Aula 10 Lúcia M. A. Drummond Simone de Lima Martins Conteúdo: Arquiteturas Avançadas - Arquiteturas RISC - Processamento Paralelo 2 Arquiteturas RISC Reduced Instruction Set Computer se

Leia mais

Arquitetura e Organização de Computadores I

Arquitetura e Organização de Computadores I Arquitetura e Organização de Computadores I Interrupções e Estrutura de Interconexão Prof. Material adaptado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Interrupções

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais