sexta-feira, 19 de junho de 2009

Hyper Pipelined Technology

ct

Hyper Pipelined Technology


O pipeline é um recurso que divide o processador em vários estágios, que trabalham simultaneamente, dividindo o trabalho de processar as instruções. É como uma linha de produção com vários operários, em que cada um monta uma peça, até termos no final o produto completo.

O primeiro processador Intel a utilizar esse recurso foi o 486, que possuía 5 estágios. Como o 486 era um processador muito simples (para os padrões atuais), que processava uma instrução de cada vez, ele não precisava de muitos dos componentes usados nos processadores modernos, tais como o ordenador, circuito de branch-prediction e assim por diante. O processador simplesmente recebia cada instrução, fazia a decodificação e em seguida a executava. Enquanto a primeira instrução passava do primeiro para o segundo estágio do pipeline, o primeiro estágio recebia a instrução seguinte e assim por diante.

O Pentium manteve os 5 estágios do 486, mas incorporou uma segunda unidade de execução e um coprocessador aritmético muito aprimorado. Com o uso de duas unidades de execução, surgiu a necessidade de dividir as instruções entre elas, o que gerou um problema adicional, já que a grande maioria dos programas executam processamento de maneira sequencial, esperando que o processador execute uma instrução de cada vez.

Surgiu então a necessidade de incluir circuitos adicionais, que ordenam as instruções de forma que o processador possa executar duas instruções por ciclo na maior parte do tempo. O mais importante dele é o circuito de branch prediction, que permite que o processador use o tempo ocioso para ir "adiantando o trabalho", processando um dos caminhos possíveis em uma operação de tomada de decisão enquanto não sabe o resultado da operação que diz qual dos caminhos é o carreto, como, por exemplo, ao executar um trecho de código, como neste exemplo:

if [ a = b ]; then
bloco de código 1
else
bloco de código 2
fi

Aqui o processador não tem escapatória, já que só vai saber se deve executar o bloco de código 1, ou o bloco de código 2 depois que souber o resultado da primeira operação, ou seja, souber se "a" é igual a "b". O circuito de branch prediction escolhe então o caminho que parece mais provável, permitindo que o processador permaneça ocupado.

O nível de exatidão do circuito de branch prediction varia muito de acordo com o processador. No Pentium ele era bastante simples, escolhendo qual caminho seguir praticamente de forma aleatória, enquanto nos processadores atuais ele decide consultando uma tabela com resultados anteriores de operações similares.

Quando o processador escolhe o caminho certo, ele ganha tempo, já que pode aproveitar o trabalho já feito. Mas, quando erra, ele precisa descartar todo o trabalho e recomeçar a partir do outro caminho.

O Pentium III possui um total de 10 estágios, além de um conjunto de outros circuitos (fora do pipeline) que são encarregados de converter e ordenar as instruções. Ao contrário do Pentium, que é um processador CISC, que processa todas as instruções x86 diretamente, o Pentium III e todos os demais processadores atuais, são processadores híbridos CISC/RISC, que quebram as instruções x86 em instruções simples, que são então processadas.

Graças à inclusão de todos os demais circuitos, uso do cache integrado e melhorias nas placas-mãe, o aumento no número de estágios de pipeline do Pentium III não teve um impacto muito negativo sobre o desempenho. Pelo contrário, um Pentium III é pelo menos duas vezes mais rápido que um Pentium I do mesmo clock. O Pentium II, por sua vez, é muito similar ao Pentium III em arquitetura, carecendo apenas do cache L2 on-die e das instruções SSE.

Foi graças ao aumento no número de estágios no pipeline que o Pentium III foi capaz de atingir freqüências de operação tão mais elevadas que o Pentium, que (com o MMX) atingiu apenas 233 MHz. Mesmo que fosse produzido em uma técnica de 0.18 micron, o Pentium provavelmente não seria capaz de superar a barreira dos 500 MHz, enquanto o Pentium III (de 0.18 micron) existiu em versões de até 1.0 GHz.

O Pentium 4 leva essa filosofia adiante, utilizando um total de 20 estágios de pipeline, daí o nome "Hyper Pipelined". Temos aqui um slide da Intel que mostra um comparativo entre o pipeline de 10 estágios do Pentium III com os 20 estágios do Willamette. Tenha em mente que cada instrução precisa percorrer cada um dos 20 estágios para ser completamente processada:

Com mais estágios, cada um responde por uma fração menor do processamento, o que permite que o processador seja capaz de operar a freqüências mais elevadas. Voltando ao exemplo da linha de produção, seria como se dobrássemos o número de operários e cada um passasse a encaixar apenas uma peça em cada produto que passa através da esteira, em vez de duas. Reduzindo o trabalho de cada operário pela metade, seria possível mover a esteira ao dobro da velocidade, dobrando a produção.

O grande problema é que os processadores atuais executam várias instruções simultaneamente, enquanto os programas são uma seqüência de instruções, de forma que sempre existe uma penalidade em adicionar mais estágios. Quanto mais estágios, mais tempo o processador demora para executar as instruções iniciais de tomada de decisão e mais tempo perde ao escolher o caminho errado.

Ainda no exemplo da linha de produção seria como se o produto a ser montado mudasse constantemente, de acordo com os pedidos recebidos dos clientes. Cada vez que o produto muda, é preciso parar a esteira, desmontar as unidades do produto anterior que já estavam parcialmente montadas e limpar a esteira, para só então poder recomeçar a produção.

No Pentium 4, a cada tomada de decisão errada são perdidos pelo menos 20 ciclos de processamento, uma eternidade considerando que em média, 14% das instruções processadas são de tomada de decisão.

Com exceção do Pentium 4, quase todos os processadores atuais utilizam de 8 a 14 estágios de pipeline, que parece ser a faixa com a melhor relação entre clock, complexidade e desempenho. Acima disto, mais pipelines equivalem a um desempenho por ciclo de clock cada vez menor.

A partir de um certo ponto, aumentar o número de estágios torna-se contra produtivo, já que o processador precisa operar a freqüências de clock cada vez mais altas para compensar a perda de desempenho causada pelo maior número de estágios. Um bom exemplo disto é o Pentium 4 com core Prescott (que veremos a seguir), que precisou incorporar um conjunto de várias melhorias apenas para compensar a perda de desempenho causada pelo novo aumento no número de estágios.

Além de ser mais lento que um Athlon Thunderbird da mesma freqüência, o Willamette é também substancialmente mais lento que um Pentium III do mesmo clock em praticamente todos os aplicativos. Todas as demais alterações feitas pela Intel, explicadas a seguir servem como paliativos para tentar diminuir a perda de desempenho trazida pelo maior número de estágios de pipeline.

Foi justamente devido a isto que a Intel optou por lançar diretamente os modelos de 1.4 e 1.5 GHz do Pentium 4, pulando as versões de 1.1 e 1.2, que seriam o caminho mais óbvio já que o Pentium III ficou estacionado na versão de 1 GHz. Caso fosse lançado, um Pentium 4 de 1.1 GHz perderia para um Pentium III de 1 GHz, o que não seria uma boa propaganda.

Além da perda de desempenho, outro efeito colateral de se usar mais estágios de pipeline é o fato de tornar o processador maior e mais complexo e fatalmente bem mais caro de se produzir. O Pentium 4 de 0.18 micron mede 217 milímetros quadrados, quase o dobro do Athlon Thunderbird, que mede 120 mm². Isso significa que o Pentium 4 é proporcionalmente mais caro de se produzir.

Nenhum comentário:

Postar um comentário

FAÇA UMA DOAÇÃO PARA O NOSSO BLOG

MAKE A DONATION TO OUR BLOG/ HACER UNA DONACIÓN A NUESTRO BLOG/ FAI UNA DONAZIONE PER IL NOSTRO BLOG/ FAITES UN DON DE NOTRE BLOG/ Spenden AUF UNSERE BLOG/ บริจาคให้กับบล็อกของเรา/ 私達のブログに寄付する/

WATCHMEN – Trailer Oficial

TOP 100 GATAS


TABLE OF HOTNESS

100. Deanna Russo
99. Melissa Rycroft
98. Rebecca Mader
97. Marisa Tomei
96. Olivia Munn
95. Padma Lakshmi
94. Yvonne Strahovski
93. Michelle Obama
92. Joanna Krupa
91. Chelsea Handler
90. Roselyn Sanchez
89. Jamie Chung
88. Diane Kruger
87. Summer Glau
86. Ali Campoverdi
85. Michelle Trachtenberg
84. Minka Kelly
83. Whitney Port
82. Emma Watson
81. Heidi Montag
80. Jamie Gunns
79. Jaime King
78. Danica Patrick
77. Stacy Keibler
76. Cameron Richardson

75. Tricia Helfer
74. Amanda Bynes
73. Ashley Tisdale
72. Camilla Belle
71. Gabrielle Union
70. Maria Menounos
69. Jennifer Morrison
68. Ashley Greene
67. Emmy Rossum
66. Emma Stone
65. Amanda Righetti
64. Diora Baird
63. Milla Jovovich
62. Heidi Klum
61. Dania Ramirez
60. Carrie Underwood
59. Ana Ivanovic
58. Miranda Kerr
57. Audrina Patridge
56. Amber Heard
55. Christina Milian
54. Rachel Bilson
53. Kim Kardashian
52. Beyoncé
51. Sienna Miller

50. Taylor Swift
49. Freida Pinto
48. Arielle Kebbel
47. Katie Cassidy
46. Nicole Scherzinger
45. Fergie
44. Avril Lavigne
43. Elisha Cuthbert
42. Nikki Reed
41. Nadine Velazquez
40. Lily Allen
39. Anna Faris
38. Charlize Theron
37. Cameron Diaz
36. Hayden Panettiere
35. Anna Kournikova
34. Scarlett Johansson
33. Blake Lively
32. Ciara
31. Hilary Duff
30. Penélope Cruz
29. Zoe Saldana
28. Danneel Harris
27. Vanessa Hudgens
26. Angelina Jolie

25. Julianne Hough
24. Eva Mendes
23. Lindsay Lohan
22. Kate Beckinsale
21. AnnaLynne McCord
20. Moon Bloodgood
19. Chan Marshall
18. Marisa Miller
17. Britney Spears
16. Gina Carano
15. Katy Perry
14. Christina Aguilera
13. Jessica Alba
12. Leighton Meester
11. Jessica Biel

Click here to
see the top 10!


Gatas USA



2008
Jenna - Cuyahoga Falls, OH Shaun - Conroe, TX undefinedundefinedundefinedundefinedundefinedMegan - Parma, OH undefinedundefinedundefinedundefinedundefinedundefinedJacquelyn - Dayton, MD undefinedSarah - Baltimore, MD undefinedLucia - Burbank, CA undefinedEdnyr Marie - Orlando, FL undefinedundefinedChristina - Fresh Meadows, NY undefinedundefined
Debbie - Huntington Beach, CA
2007
2007