instruções endereço "a execução"

Propaganda
FILIPE POLINA AFFONSO
BRANCH PREDICTION
LONDRINA–PR
2016
FILIPE POLINA AFFONSO
BRANCH PREDICTION
Trabalho de Conclusão de Curso apresentado
ao curso de Bacharelado em Ciência da Computação da Universidade Estadual de Londrina para obtenção do título de Bacharel em
Ciência da Computação.
Orientador: Prof. Dr. Wesley Attrot
LONDRINA–PR
2016
Filipe Polina Affonso
Branch Prediction/ Filipe Polina Affonso. – Londrina–PR, 201635 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 apresentado
ao curso de Bacharelado em Ciência da Computação da Universidade Estadual de Londrina para obtenção do título de Bacharel em
Ciência da Computação.
BANCA EXAMINADORA
Prof. Dr. Wesley Attrot
Universidade Estadual de Londrina
Orientador
Prof. Dr. Segundo Membro da Banca
Universidade/Instituição do Segundo
Membro da Banca
Prof. Dr. Terceiro Membro da Banca
Universidade/Instituição do Terceiro
Membro da Banca
Prof. Ms. Quarto Membro da Banca
Universidade/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 (Bacharelado 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 eficiência no uso do pipeline. Diferentes técnicas tem taxas melhores de assertividade comparadas com outras técnicas. Este trabalho tem o intuito de criar e comparar técnicas de
Previsã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 Computer Science) – State University of Londrina, Londrina–PR, 2016.
ABSTRACT
Branch Predictors are techniques implemented in processors to increase efficiency on the
pipeline usage. Newer routines provide better resolution rates. This paper will create and
compare 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
2.1
2.2
2.3
2.4
PREDITORES DE
Two Bit Counter .
Bi Modal . . . . . .
Local Branch . . . .
GShare . . . . . . .
.
.
.
.
.
25
25
25
25
25
3
3.1
NAM SED TELLUS SIT AMET LECTUS URNA ULLAMCORPER TRISTIQUE INTERDUM ELEMENTUM . . . . .
Pellentesque sit amet pede ac sem eleifend consectetuer . . .
27
27
4
CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
ANEXOS
33
DESVIO
. . . . . .
. . . . . .
. . . . . .
. . . . . .
DINÂMICOS .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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 foi
um norte para a Ciência da Computação. No final dos anos 50, sentindo a necessidade de
ampliar a performance de máquinas para estudos científicos [1], como o IBM 704, criou-se
uma máquina que usa um técnica de paralelismo de processamento chamada futuramente
de Pipeline.
O Pipeline é uma técnica implementada em processadores para otimizar o uso de
cada ciclo de execução. O formato do método possui estágios, em que cada um deles possui
ao 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ência
entre os estágios, logo, o estágio de Execução, por exemplo, somente poderá executar um
código que o estágio de Decodificação já tenha processado.
Para a implementação de paralelismo no Pipeline é necessário que as próximas
instruçõ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 aquela
que o programa deveria executar. Em instruções de desvios condicionais, o processador
somente obtém o endereço da próxima instrução no estágio de execução, fazendo com que
a 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 o
poder do processador e também força que o Pipeline descarte informações, gerando um
fenô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 de
qual seja este endereço e, assim, aumentar a probabilidade de que um endereço carregado
seja de fato executado.
Preditores de Desvio foram criados a partir da necessidade de evitar o desperdício
de ciclos do processador. Desta forma, podemos definir políticas sobre quais endereços
devem 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 maior
probabilidade de ser executado no futuro. Com isso surgem as técnicas de Predição de
Desvios 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 o
Pipeline 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 um
código for escrito com a intenção de tomar todos os saltos como verdade, significa que
este Pipeline do exemplo vai gerar Bolhas todas as vezes que uma instrução de salto tiver
que 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 mais
provável a ser seguido e, então, aplica este caminho no Pipeline. Neste trabalho serão
demonstradas comparações entre técnicas conhecidas e utilizadas por fabricantes de processadores 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 qual
será 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 ULLAMCORPER 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 lacus
dapibus interdum. Nulla lorem. Donec ut ante quis dolor bibendum condimentum. Etiam
egestas tortor vitae lacus. Praesent cursus. Mauris bibendum pede at elit. Morbi et felis
a lectus interdum facilisis. Sed suscipit gravida turpis. Nulla at lectus. Vestibulum ante
ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent nonummy
luctus nibh. Proin turpis nunc, congue eu, egestas ut, fringilla at, tellus. In hac habitasse
platea dictumst.
29
4 CONCLUSÃO
Sed consequat tellus et tortor. Ut tempor laoreet quam. Nullam id wisi a libero
tristique semper. Nullam nisl massa, rutrum ut, egestas semper, mollis id, leo. Nulla
ac 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, commodo
at, 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 turpis
egestas.
Phasellus id magna. Duis malesuada interdum arcu. Integer metus. Morbi pulvinar
pellentesque mi. Suspendisse sed est eu magna molestie egestas. Quisque mi lorem, pulvinar eget, egestas quis, luctus at, ante. Proin auctor vehicula purus. Fusce ac nisl aliquam
ante hendrerit pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia
nostra, 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 vel
metus 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 libero
eros, lacinia non, sodales quis, dapibus porttitor, pede. Class aptent taciti sociosqu ad
litora torquent per conubia nostra, per inceptos hymenaeos. Morbi dapibus mauris condimentum nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur
ridiculus mus. Etiam sit amet erat. Nulla varius. Etiam tincidunt dui vitae turpis. Donec
leo. 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 Joint
Computer Conference. [S.l.: s.n.], 1959. p. 48–59.
[2] SHEN, J.; LIPASTI, M. Modern Processor Design: Fundamentals of Superscalar
Processors. [S.l.]: McGraw-Hill, 2005.
Anexos
35
ANEXO A – MORBI ULTRICES RUTRUM LOREM.
Sed mattis, erat sit amet gravida malesuada, elit augue egestas diam, tempus
scelerisque nunc nisl vitae libero. Sed consequat feugiat massa. Nunc porta, eros in eleifend
varius, erat leo rutrum dui, non convallis lectus orci ut nibh. Sed lorem massa, nonummy
quis, egestas id, condimentum at, nisl. Maecenas at nibh. Aliquam et augue at nunc
pellentesque ullamcorper. Duis nisl nibh, laoreet suscipit, convallis ut, rutrum id, enim.
Phasellus odio. Nulla nulla elit, molestie non, scelerisque at, vestibulum eu, nulla. Ut odio
nisl, facilisis id, mollis et, scelerisque nec, enim. Aenean sem leo, pellentesque sit amet,
scelerisque sit amet, vehicula pellentesque, sapien.
Download