Sistemas Computacionais - Pipeline

8.46k views2971 WordsCopy TextShare
UNIVESP
univesp.br Eixo de Computação - COM120 Univesp - Universidade Virtual do Estado de São Paulo Profes...
Video Transcript:
E aí [Música] o Olá pessoal sejam todos bem-vindos a nossa aula 3 da semana 4 Onde nós estamos falando sobre arquiteturas paralelas nós começamos a definido essas arquiteturas paralelas no mar em quatro classes na aula passada a gente falou sobre a classe de múltiplas instruções e múltiplos dados falamos dentro dessa classe dos multiprocessadores e dos multicomputadores na aula de hoje a gente volta relembrar um pouco lá da primeira aula onde a gente falou dos computadores sequenciais das arquiteturas com nenhuma né então a gente vai falar de paralelismo no contexto desse tipo de computador né é
isso são simples e data streaming simples também tá bom Espero que vocês aproveitem o título da aula de hoje é parte Line atualmente a grande maioria dos sistemas de computação é fabricado em torno de processadores que buscam maior velocidade para fazer as atividades né então quando a gente pensa nessa busca a gente automaticamente se refere a desempenho A então o objetivo de busca por desempenho tem levado aos fabricantes de hardware é a tecnologias mais rápidas né desenvolvendo aí circuitos cada vez mais rápidos incluindo melhorias no processador né que o nosso processador com seus elementos Hoje
ele trabalha de uma maneira com melhor performance considerando os registradores e as memórias por exemplo cast de vários níveis né pensando aí no nível L1 aí já dentro como um próprio registrador do nosso processador dentro de si mesmo contexto com esse mesmo objetivo existe o que a gente vai falar na aula de hoje que é o pai pe Line de instrução é a gente falou que o paralelismo ele poderia ser empregado é para para hardware né E aí a gente falou do multiprocessadores os multicomputadores e agora a gente vai falar pensando no e nem um
papo um paralelismo de instrução né chamadas Skype online então a definição aí para vocês verem é vai Pilar missão várias instruções realizadas de forma simultânea embora lá na CPU né você tem estágios diferentes pois múltiplas instruções são emitidas aí pelo clock do do seu computador a CPU se dividir em várias partes né para execução desses estágios diferentes né e cada estágio executado aí por uma ação diferente nos seus componentes A ideia é aqui as novas entradas né discussões aí no processador elas sejam aceitas né antes mesmo de que as entradas anteriores tenham saído nesse exemplo
aí que vocês estão vendo nesse slide vocês vão encontrar uma metáfora né Vocês Imaginem aí uma lava bom né E essa lavar roupa ela tem é um conjunto de máquinas é na verdade é uma uma lavanderia é E aí você pode usar uma metáfora considerando por exemplo que a lavanderia ela seja o a nossa CPU né a tarefa de lavar a roupa seja a instrução que vai chegar nessa nova na nossa CPU e que você aí tem 4 estágios né Quatro atividades para conseguir concluir essa ação aí essa essa tarefa de lavar roupa esses estágio
ou ações são colocar uma carga nessa roupa né na lavadora Então você vai abrir a sua lavadora vai colocar um cesto de roupa lá dentro né Nós estamos chamando essa essa ação DL né e a gente está considerando que esse L ele vai ter um gasto aí de um ter né o tempo dele é um t e quando eu terminar de lavar você vai para próxima ação O que é colocar na secadora então olhando aí no nosso desenho você vai para um no seu cesto de roupa a você vai para uma segunda estágio que é
colocar na secadora né no terceiro estágio quando terminou de secar você vai dobrar né pensando aí chamando esse estágio de e também considerando esse estágio de um te como na secadora que era é essa E também o estágio de um te quando você termina de dobrar você vai para o próximo estágio que é colocar de novo no 6º a né Então aí você vai colocar no cesto né de cada um vai ter um texto né as quatro trouxas de roupas né os quatro sextos a b e c né E você vai passar por essa sequência
de ações para executar instrução de lavar a roupa na dentro dessa Lavanderia e compartilhada em 4 com 4 cestos da sua própria roupa quatro pessoas aí tentando lavar roupa né e e nesse último estágio de dobrar e armazenada representada aqui no armariozinho né eu também tenho um tempo aí de um te é quatro te depois né um ter para lavar um ter para secar um ter para dobrar e um ter para pôr no sexto né então 43 depois 4 tempos depois né você vai começar a lavar o cesto de roupa B E aí você vai
fazer novamente o a instrução né você vai executar as ações insere tá no conjunto dos 4 cestos que você tem você vai gastar 444 e quatro né então você vai considerar e que você vai gastar para lavar essa roupa um tempo aí de 16 né diesel 4 x 4 né você vai ter um tempo aí de 16 três para o e Executar a instrução de lavar a roupa né Isso daí é um tempo porque você somou né o conjunto de ações aí nos seus tempos tá uma outra maneira de abordar é você pensar que após
a máquina terminar o sexto A é você transfere o sexto A para secadora né E aí você passa a trabalhar no sexto ver né quer dizer o próximo sexto já é inserido na máquina de lavar né Para que você não deixe esse essa máquina de lavar ociosa né até o final da Etapa até o final do 6º a né E aí você a secadora vai processar e aí continua o processo da do sexto A enquanto o processo do 6º B começa e continua e assim por diante né então você vai fazer o mesmo processo sei
para o 6º D bom então por uns quatro sextos né você vai ter um tempo aí de certa te né Lógico que nós estamos considerando um domínio aí sem novos recursos e contei igual para todas as atividades Então esse exemplo aí mostra como você pode paralisar esta instrução aí de lavar roupa de maneira a diminuir o tempo total gasto aí para lavar a quatro cesto de roupas né Eu quero dizer executar quatro instruções em vez de 16t você passa a executar as mesmas quatro instruções de um tempo aí de 73 Lógico que a gente está
Considerando o texto iguais para cada uma dos recursos né tanto a lavar roupa como para secar dobrar e colocar não sei se a gente sabe que isso é bastante O tópico já não aconteça aqui de lavar roupa a gente sabe que esses tempos aí não seria o mesmo né Agora vamos trazer para o contexto aí do nosso processo e é agora considere aí um pai Pilar me né de 6 estágios continuando ainda com a ideia de mesmo a duração é onde você tem busca né então lembra-la dos nossos círculos de instruções da aula passada né
você tem a busca depois da busca você tem a decodificação né da instrução depois você tem o cálculo dos operandos busca de operandos né executa a instrução e armazena escreve o operando né então no processador basicamente se você pensar numa instrução dos seis estágios são essas aí as ações que a gente tem que executar trazendo isso por um gráfico aí de tempo por instrução né se a gente considerar que todo é toda a instrução vai gastar ao mesmo tempo né a gente teria essa situação aqui né é porém né a gente sabe que se os
o Anjos não tem duração igual vai existir aí uma espera envolvida entre os estágios né E aí a gente falou em na na primeira aula sobre a questão da espera né que aí você pega o estágio por exemplo e coloca buffers nesses estágios né de modo que ele possa esperar aguardar uma informação ali né enquanto ele trabalha em outra né Além disso você tem uma outra questão envolvida que são as instruções de desvios condicionais né todo mundo fez programa aqui e sabe que um desvio condicional né ele pode acabar invalidando aí as buscas de instruções
né mesmo acontece com as interrupções nesses casos aí você acaba tendo aquele gráfico ideal de instruções para o mesmo tempo com o tempo Ocioso né E aí esse tempo Ocioso foi causado pelo desvio aí condicional Então você tinha uma instrução aqui O que é utilizando é fazendo uma escrita né onde você teve um desvio desta instrução três por uma instrução 15 né E aí você teve esse tempo aqui né agora instrução de desvio esse Jump ele acaba piorando a situação de tempo né pois o que foi carregado na memória vai ter que ser descartado e
começar carregar de novo né isso gera uma penalidade né porque fica sem execução Total aqui é a aqueles dois né Só Para efeito de comparação né limpeza iguais aí sem instruções de desvio e aqui com aquela instrução de desvio aqui gerando esse espaço aqui de de ociosidade é pensando então no desempenho se você considerar o pai Pilar me né você vai ter que o tempo para cada instrução né o a por exemplo aqui para o sexto A é o mesmo né o tempo para isso e vai ser o mesmo né Vai ser 4 t4t 434
te né esse tempo é o que a gente chama de latência é a taxa de excreção do partline ela também não muda porque ela acaba sendo delimitada quando você tem por exemplo tarefas com tempos diferentes né pela tarefa mais lenta né ele tem que terminar aquela instrução lembra Olá do ciclo de instrução para passar a próxima instrução lei para o contador de programa e para próxima instrução então ele vai ser sempre determinado essa taxa Pela expressão da mais o tempo da mais lenta né O que existe de Gama e de fato é a vazão da
informação né o total de várias opções que estão executadas em geral ele é melhor né a vazão os thruput pode aumentar né a meta Então se é essa aumentar a produtividade né você acaba tendo ganho de desempenho né o ideal né seria que esse Spike Lines estivessem sempre Esteio né que essas áreas das figuras aí elas fossem preenchidas né esse problema fosse resolvido Então a gente tem essa situação aí de desvio que foi mostrada para vocês que a gente chama de Harley né e outros tipos de radares aí que a gente vai citar então a
palavra arrasa ela vem da ideia de conflito o perigo né que impede o fluxo normal da instrução e aí você vai ter Rasa de que acontece porque não é um partline ou parte dele precisa parar porque as condições né atual de execução não permite que continue a E aí a gente tem diversos tipos de Harvard né então se você for pensar por exemplo lá na máquina de lavar roupa né a gente tem aí no primeiro razard né se a máquina de lavar e de secar elas são combinadas numa mesma máquina né Igual existe hoje em
dia máquina que lava e certa né e não ser separados você não você teria o problema né de um executar duas ou mais instruções que precisam desse mesmo recurso E aí nesse sentido a gente tem um razard de pai Pilar é uma bolha né que vai executar e não desempenho menor que é ótima né as duas instruções aí de lavar e secar elas precisam do mesmo recurso né Então esse é chamado de Hazard estrutural nós temos também os hard dado que na verdade aí o problema é que duas instruções leitura ou escrita elas querem acessar
a mesma posição do operando né in terceira categoria nós temos os radares de controle aí o grande exemplo é o desvio é porque nesse tipo alma necessidade de se tomar uma decisão Com base no resultado de um e não é um desvio um condicional por exemplo e quando as outras estão sendo executadas né então raça de controle o pap Laine pode tomar uma decisão errada ao prever um dia e trazer instruções que estejam aí dentro do parque Laine que precisa ser descartadas em seguida uma solução para esse problema de raça de desvio fazer de controle
né É você fazer a busca antecipada né aquela que a gente comentou lá na primeira aula né usar um buffer né que fica aí com as instruções recentemente lindas nessa figura você encontra aí uma uma série aí sequencial de um ciclo sequencial né onde você tem a entrada da instrução A Busca aí passa instrução para execução né mas se você aí tem um problema de desvio né ou outro tipo de problema que você consegue resolver aí fazendo o banco fez e fazendo espera aí e os estágios do ciclo de instrução né Então esse é um
pai Pilar ele aí tô pensando no partline em dois estágios então parte larm ele tem a busca de instruções na memória que acaba sendo para ele um grande gargalo na velocidade de execução do paralelismo é é para amenizar esse problema os computadores têm a capacidade de buscar instruções na memória antecipadamente que a ideia do Perfect né E aí quando elas forem necessárias elas vão estar presente né O problema é que você vai acabar precisando de banco esse para guardar essas instruções antecipadas né então elas são guardadas aí nesse buffer de busca antecipada e sempre que
necessário é uma instrução pode ser apanhada nesse banco cerveja guardar conclusão aí de uma leitura na memória Ah é Então só para deixar registrado a leitura aproveita o ciclo de memória de execução para obter a próxima instrução requer mais registradores é a gente sabe que os tempos de leitura eles também não são iguais e os tempos de execução aí por isso né ele ele é na verdade ele é maior né e ele é maizena operando o instruções de desvios que não se conhecem o endereço né isso acaba aumentando o tempo e afetando o desempenho né
e tem a regra de que o estágio de leitura sempre obtém a próxima instrução na memória após a instrução de desvio né então se o desvio ocorrer você tem aí aqui a instrução é descartada e uma nova instrução é Élida né então para acelerar né então esse em resumo que se pensa fazer essa leitura antecipada aí do próximo né mas para ter ganho esse Oi e o tempo de leitura e de execução eles devem ser o mais próximo né Isso realmente ajudaria bastante normalmente como o visto aí né como a gente colocou nesse slide a
execução acaba tendo um tempo maior né E também é instruções de desvios que não se conhece o endereço né esse é o caso o exemplo típico né então para melhorar o estágio de leitura sempre se obtém aí a instrução né a próxima na memória após a instrução de desvio se o desvio ocorrer aí tem um descarte da instrução em resumo né você pensando aí em questões de tempos né é e função do número de Estágios que você tem aí para execução das instruções né o fator de aceleração se aproxima do número de instruções né que
podem ser introduzidas aí no Pilar e pensando em não te bom né então quanto maior o número de estágio do paip Laine maior vai ser a sua taxa de execução né porque aí você tem é denominado Isso numa medida né chamada de aceleração ou Speed Up né algumas situações frustram isso né Por exemplo o estágio do Pilar e exige é que esforço extra para movimentar os dados e poderes acelarar o tempo total de execução né isso acaba tendo o custo de implementação e atraso entre estágios Alô outra situação é a lógica de controle da passagem
entre o estágio ela acaba sendo mais complexa do que os estágios controlados né na figura a seguir vocês vão ver que o número de estágio entre 6 e 9 né Ele parece o número de estágio aí mais adequado para conseguir um ganho de performance usando o pai pe Line aí e já tem levantado aí é qual é o a quantidade de estágio e por instrução que seria adequada e no gráfico de baixo vocês vão ver a questões aqui da quantidade de instruções né Por estágios né Então aí Você tem o número de instruções daí que
seria adequado para ganhar Performance em parte Lines né então é bem interessante os estudos para a gente saber né até quanto executar e até quanto né explorar fazendo parte Lines aí das nossos das instruções né com isso com as três aulas dessa semana a gente falou de arquiteturas paralelas falamos dentro da arquitetura paralela à questão de um único processador né Esse processador executando um ciclo de instrução que pode variar em número de Estágios é para paralisar essa questão a gente falou da do pai pe Line né e você pode colocar várias instruções em diferentes aí
estágios de execução por um único processador a gente falou de situações também onde a gente tem mais de um processador né sendo Esse processador com memória compartilhada né os multiprocessadores ou mesmo uma situação onde você tem diversos processadores com um memórias aí é distribuídas né não compartilhada E aí a gente falou dos multicomputadores e deu exemplo para cada uma dessas classes e E aí E aí E aí
Copyright © 2024. Made with ♥ in London by YTScribe.com