filipepolinaaffonso - uel.br · em instruções de desvios condicionais, ... poder do processador e...

37
FILIPE POLINA AFFONSO BRANCH PREDICTION LONDRINA–PR 2016

Upload: vantuong

Post on 10-Feb-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

FILIPE POLINA AFFONSO

BRANCH PREDICTION

LONDRINA–PR

2016

FILIPE POLINA AFFONSO

BRANCH PREDICTION

Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Ciência da Com-putação da Universidade Estadual de Lon-drina para obtenção do título de Bacharel emCiência da Computação.

Orientador: Prof. Dr. Wesley Attrot

LONDRINA–PR

2016

Filipe Polina AffonsoBranch Prediction/ Filipe Polina Affonso. – Londrina–PR, 2016-35 p. : il. (algumas color.) ; 30 cm.

Orientador: Prof. Dr. Wesley Attrot

– Universidade Estadual de Londrina, 2016.

1. Branch Prediction. 2. Predição de Desvios. I. Dr. Wesley Attrot. II.Universidade Estadual de Londrina. III. Departamento de Computação. IV.Branch Prediction

CDU 02:141:005.7

FILIPE POLINA AFFONSO

BRANCH PREDICTION

Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Ciência da Com-putação da Universidade Estadual de Lon-drina para obtenção do título de Bacharel emCiência da Computação.

BANCA EXAMINADORA

Prof. Dr. Wesley AttrotUniversidade Estadual de Londrina

Orientador

Prof. Dr. Segundo Membro da BancaUniversidade/Instituição do Segundo

Membro da Banca

Prof. Dr. Terceiro Membro da BancaUniversidade/Instituição do Terceiro

Membro da Banca

Prof. Ms. Quarto Membro da BancaUniversidade/Instituição do Quarto

Membro da Banca

Londrina–PR, 24 de novembro de 2016

Este trabalho é dedicado às crianças adultas que,quando pequenas, sonharam em se tornar cientistas.

AGRADECIMENTOS

Muitos agradecimentos e tals. . .

“No início, o Universo foi criado.Isso irritou profundamente muitas pessoas e,

no geral, foi encarado como uma péssima ideia.”(Douglas Adams)

AFFONSO, F. P.. Branch Prediction. 35 p. Trabalho de Conclusão de Curso (Bacha-relado em Ciência da Computação) – Universidade Estadual de Londrina, Londrina–PR,2016.

RESUMO

Previsores de Desvio são técnicas implementadas nos processadores para aumentar a efi-ciência no uso do pipeline. Diferentes técnicas tem taxas melhores de assertividade com-paradas com outras técnicas. Este trabalho tem o intuito de criar e comparar técnicas dePrevisão de Desvios que sejam mais assertivas que as técnicas usadas atualmente.

Palavras-chave: Predição de desvios. Pipeline. Otimização

AFFONSO, F. P.. Branch Prediction. 35 p. Final Project (Bachelor of Science in Com-puter Science) – State University of Londrina, Londrina–PR, 2016.

ABSTRACT

Branch Predictors are techniques implemented in processors to increase efficiency on thepipeline usage. Newer routines provide better resolution rates. This paper will create andcompare new methods that will try to be more assertive using less hardware power.

Keywords: Branch Prediction. Pipeline. Optimization

LISTA DE ILUSTRAÇÕES

Figura 1 – Contador Saturado de dois bits . . . . . . . . . . . . . . . . . . . . . . 25

LISTA DE TABELAS

LISTA DE ABREVIATURAS E SIGLAS

PC Program Counter (Contador de Programa)

SUMÁRIO

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2 PREDITORES DE DESVIO DINÂMICOS . . . . . . . . . . . 252.1 Two Bit Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.2 Bi Modal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.3 Local Branch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.4 GShare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3 NAM SED TELLUS SIT AMET LECTUS URNA ULLAM-CORPER TRISTIQUE INTERDUM ELEMENTUM . . . . . 27

3.1 Pellentesque sit amet pede ac sem eleifend consectetuer . . . 27

4 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

ANEXOS 33

ANEXO A – MORBI ULTRICES RUTRUM LOREM. . . . 35

23

1 INTRODUÇÃO

A busca para uma melhor performance em termos de tempo de execução sempre foium norte para a Ciência da Computação. No final dos anos 50, sentindo a necessidade deampliar a performance de máquinas para estudos científicos [1], como o IBM 704, criou-seuma máquina que usa um técnica de paralelismo de processamento chamada futuramentede Pipeline.

O Pipeline é uma técnica implementada em processadores para otimizar o uso decada ciclo de execução. O formato do método possui estágios, em que cada um deles possuiao menos um circuito que realiza uma função específica. As principais funções são: Fetch,Decode, Execute e Write-back [2]. Em processadores Escalares, existe uma dependênciaentre os estágios, logo, o estágio de Execução, por exemplo, somente poderá executar umcódigo que o estágio de Decodificação já tenha processado.

Para a implementação de paralelismo no Pipeline é necessário que as próximasinstruções sejam carregadas continuamente. Isso se faz apenas tomando o próximo PC(Program Counter) da instrução que foi executada mais recentemente no Pipeline.

A escolha do próximo endereço a ser carregado no PC, contudo, pode não ser aquelaque o programa deveria executar. Em instruções de desvios condicionais, o processadorsomente obtém o endereço da próxima instrução no estágio de execução, fazendo com quea fase de carregamento (Fetch) possa ter sido carregada com um endereço indesejado.Este fato gera problemas como um taxa baixa de Ciclos Por Instrução, subutilizando opoder do processador e também força que o Pipeline descarte informações, gerando umfenômeno conhecido por Bolha.

Não se conhece uma máquina que é capaz de determinar o futuro de uma execução,logo o carregamento do próximo endereço a ser executado depende de uma previsão dequal seja este endereço e, assim, aumentar a probabilidade de que um endereço carregadoseja de fato executado.

Preditores de Desvio foram criados a partir da necessidade de evitar o desperdíciode ciclos do processador. Desta forma, podemos definir políticas sobre quais endereçosdevem ser carregados quando existe uma instrução em que é possível acontecer um salto.É importante notar que instruções de saltos incondicionais não sofrem desta mazela, jáque esta instrução possui o endereço alvo disponível já na fase de Decode.

Uma forma de superar esta dificuldade é tentar prever o endereço que tem a maiorprobabilidade de ser executado no futuro. Com isso surgem as técnicas de Predição deDesvios estáticas, que podem ser implementadas sem a adição de hardware especializado.O Pipeline pode ser construído de forma que sempre irá, por exemplo, carregar o próximo

24

endereço da própria instrução do salto. Em termos mais práticos, isso significa que oPipeline vai sempre ignorar que o salto vai acontecer.

Com facilidade percebe-se que uma técnica estática não convém, já que se umcódigo for escrito com a intenção de tomar todos os saltos como verdade, significa queeste Pipeline do exemplo vai gerar Bolhas todas as vezes que uma instrução de salto tiverque ser executada.

Para superar este obstáculo, criaram-se técnicas de Previsão de Desvios Dinâmicas.Estas técnicas necessitam de hardware adicional pois algumas exigem o uso de memória.Técnicas Dinâmicas tentam aprender com a execução do código qual o caminho maisprovável a ser seguido e, então, aplica este caminho no Pipeline. Neste trabalho serãodemonstradas comparações entre técnicas conhecidas e utilizadas por fabricantes de pro-cessadores bem como uma tentativa de desenvolvimento de uma nova técnica que tentaráser mais eficiente em termos de assertividade do que os métodos conhecidos.

25

2 PREDITORES DE DESVIO DINÂMICOS

2.1 Two Bit Counter

O Two Bit Counter é uma técnica que usa apenas um contador para prever qualserá a direção do desvio tomando em conta quais foram as direções tomadas anteriormente.Inicialmente inicia-se o contador com o valor zero e conforme a execução segue o contadoré modificado tomando em conta os acertos e erros anteriores.

Figura 1 – Contador Saturado de dois bits

Previsor Two Bit Counter e sua explicação

2.2 Bi Modal

Um Previsor BiModal e sua explicação...

2.3 Local Branch

Previsor Local Branch e sua explicação

2.4 GShare

Previsor GShare e sua explicação

27

3 NAM SED TELLUS SIT AMET LECTUS URNA ULLAM-CORPER TRISTIQUE INTERDUM ELEMENTUM

3.1 Pellentesque sit amet pede ac sem eleifend consectetuer

Maecenas non massa. Vestibulum pharetra nulla at lorem. Duis quis quam id lacusdapibus interdum. Nulla lorem. Donec ut ante quis dolor bibendum condimentum. Etiamegestas tortor vitae lacus. Praesent cursus. Mauris bibendum pede at elit. Morbi et felisa lectus interdum facilisis. Sed suscipit gravida turpis. Nulla at lectus. Vestibulum anteipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent nonummyluctus nibh. Proin turpis nunc, congue eu, egestas ut, fringilla at, tellus. In hac habitasseplatea dictumst.

29

4 CONCLUSÃO

Sed consequat tellus et tortor. Ut tempor laoreet quam. Nullam id wisi a liberotristique semper. Nullam nisl massa, rutrum ut, egestas semper, mollis id, leo. Nullaac massa eu risus blandit mattis. Mauris ut nunc. In hac habitasse platea dictumst.Aliquam eget tortor. Quisque dapibus pede in erat. Nunc enim. In dui nulla, commodoat, consectetuer nec, malesuada nec, elit. Aliquam ornare tellus eu urna. Sed nec metus.Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpisegestas.

Phasellus id magna. Duis malesuada interdum arcu. Integer metus. Morbi pulvinarpellentesque mi. Suspendisse sed est eu magna molestie egestas. Quisque mi lorem, pulvi-nar eget, egestas quis, luctus at, ante. Proin auctor vehicula purus. Fusce ac nisl aliquamante hendrerit pellentesque. Class aptent taciti sociosqu ad litora torquent per conubianostra, per inceptos hymenaeos. Morbi wisi. Etiam arcu mauris, facilisis sed, eleifend non,nonummy ut, pede. Cras ut lacus tempor metus mollis placerat. Vivamus eu tortor velmetus interdum malesuada.

Sed eleifend, eros sit amet faucibus elementum, urna sapien consectetuer mauris,quis egestas leo justo non risus. Morbi non felis ac libero vulputate fringilla. Mauris liberoeros, lacinia non, sodales quis, dapibus porttitor, pede. Class aptent taciti sociosqu adlitora torquent per conubia nostra, per inceptos hymenaeos. Morbi dapibus mauris condi-mentum nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nasceturridiculus mus. Etiam sit amet erat. Nulla varius. Etiam tincidunt dui vitae turpis. Donecleo. Morbi vulputate convallis est. Integer aliquet. Pellentesque aliquet sodales urna.

31

REFERÊNCIAS

[1] Bloch, E. The engineering design of the STRETCH computer. In: Proc. Fall JointComputer Conference. [S.l.: s.n.], 1959. p. 48–59.

[2] SHEN, J.; LIPASTI, M. Modern Processor Design: Fundamentals of SuperscalarProcessors. [S.l.]: McGraw-Hill, 2005.

Anexos

35

ANEXO A – MORBI ULTRICES RUTRUM LOREM.

Sed mattis, erat sit amet gravida malesuada, elit augue egestas diam, tempusscelerisque nunc nisl vitae libero. Sed consequat feugiat massa. Nunc porta, eros in eleifendvarius, erat leo rutrum dui, non convallis lectus orci ut nibh. Sed lorem massa, nonummyquis, egestas id, condimentum at, nisl. Maecenas at nibh. Aliquam et augue at nuncpellentesque ullamcorper. Duis nisl nibh, laoreet suscipit, convallis ut, rutrum id, enim.Phasellus odio. Nulla nulla elit, molestie non, scelerisque at, vestibulum eu, nulla. Ut odionisl, facilisis id, mollis et, scelerisque nec, enim. Aenean sem leo, pellentesque sit amet,scelerisque sit amet, vehicula pellentesque, sapien.