Hugo T. A. Shiraishi, Paulo R. A. Costa, Rafael B. Dominiquini Instituto de Computao Universidade Estadual de Campinas (UNICAMP) Caixa Postal 6176 13084-971 Campinas SP Brazil
h.takeo@gmail.com, paulo@inutilfutil.com, rafaeldominiquini@gmail.com
Abstract. This document describes the main features of the Pentium 4 processor, such as the new instruction sets (SSE2 and EM64T), Thermal Throttling and the new data bus, known as Quad-Pumping. It also details it's architecture, known as NetBurst, emphasizing Hyper Pipelined Technology, branch prediction techniques, Rapid Execution Engine and Hyper-Threading. Finally, it compares the Pentium 4 with AMD's similar, Athlon XP. Resumo. Este documento descreve as principais caractersticas do processador Pentium 4, tais como os novos conjuntos de instruo suportados (SSE2 e EM64T), Termal Throttling e o novo barramento de dados (QuadPumping). Ele tambm detalha a arquitetura do processador, conhecida como NetBurst, dando nfase a Hyper Pipelined Technology, s tcnicas de previso de desvio, Rapid Execution Engine e ao Hyper-Threading. Por fim, comparase o Pentium 4 com o equivalente da AMD, o Athlon XP.
1. Introduo
O Pentium 4 foi lanado no mercado em novembro de 2000, com o objetivo de superar os processadores da concorrente AMD. Baseado na arquitetura NetBurst, a stima gerao de processadores da Intel foi projetada praticamente do zero, tendo poucas semelhanas com seus antecessores. Principais caractersticas do Pentium 4:
Hyper Pipelined Technology: Os pipelines so extremamente longos se
comparados com os de outras arquiteturas, o que permite frequncias mais elevadas, podendo chegar aos 4 GHz.
Termal Throttling: controla a temperatura do processador para evitar o
superaquecimento. No Pentium 4, existem duas formas de controlar o aquecimento, atravs do TM1 e TM2.
Hyper-Threading: consiste no processador de um nico ncleo atuar como se
velocidade do processador.
SSE2: Conjunto de instrues que estende a SSE e suporta totalmente as
instrues MMX.
EM64T: Permite suporte s operaes de 64 bits alm das instrues de 32 bits.
memrias virtual e fsica com mais de 4 GB. Neste documento, descreveremos os itens acima e outros de grande relevncia na arquitetura de um processador.
microinstruo buscada no buffer de destino de desvio (BTB). Esta etapa demora 2 estgios.
microinstruo. Esta etapa demora 2 estgios. Drive: Envia a microinstruo a ser executada ao alocador de recursos e ao renomeador de registradores. Alloc (Allocate): Responsvel por verificar quais recursos sero alocados pela microinstruo como, por exemplo, um load ou um store na memria. Rename: Tem o papel de renomear os oito registradores padro x86 em um dos 128 registradores internos do Pentium 4. Esta etapa demora 2 estgios. Que (Queue): Armazena as microinstrues em filas de acordo com o seu tipo (por exemplo, inteiro ou ponto flutuante). Elas so mantidas na fila at que haja espao livre no escalonador de execuo correspondente ao tipo de instruo a ser processada. Sch (Schedule): As microinstrues so escalonadas de acordo com o seu tipo (inteiro, ponto flutuante, etc). O escalonador reordena as instrues de forma que estas sejam executadas da melhor forma possvel, isto , que no fique nenhuma unidade de execuo vazia. Esta etapa demora trs estgios. Disp (Dispatch): Envia as microinstrues s unidades de execuo adequadas. Esta etapa dividida em dois estgios. RF (Register File): L os registradores internos, armazenados no pool de instrues. Esta etapa demora dois estgios. Ex (Execution): Executa as microinstrues. Flgs (Flags): Atualiza as flags do processador. Br Ck (Branch check): Responsvel por verificar se o desvio tomado pelo programa o mesmo que o previsto pelo circuito de previso de desvio. Drive: Envia o resultado da verificao anterior (Br Ck) para o buffer de destino de desvio (BTB) situado na entrada do processador.
3. Branch Prediction
Em processadores com pipelines profundos exige-se o desenvolvimento de previsores de desvios altamente precisos. No Pentium 4, com sua alta velocidade de clock e pipeline com muitos estgios, um erro na previso pode prejudicar muito o desemprenho do processador, j que vrias instrues em execuo precisam ser descartadas. Este problema representa um dos principais limitadores para a evoluo dos sistemas computacionais. O sistema de Branch Prediction (Previso de Desvio) um recurso que a maioria dos processadores com pipelines utilizam. Ele permite ao processador adivinhar o endereo da prxima instruo antes que a instruo corrente tenha terminado sua execuo. Acertar o mximo possvel nestas previses fundamental para que o processador atinja um alto nvel de desempenho. O Pentium 4 utiliza um sistema de previso esttica de desvio, no qual faz a previso de que todo desvio condicional ser feito. Ele armazena todos os saltos que ocorreram, e quando uma instruo de salto j realizado executada novamente, o processador executa a instruo de destino do salto. Na prtica, o processador pode acertar em cerca de 90% das vezes. Vale lembrar que uma grande parte de um programa executado dentro de laos, e nestes casos, o processador s erra o salto na primeira e na ltima iterao.
4. Decodificador CISC/RISC
Desde a sexta gerao, os processadores da Intel utilizam uma arquitetura hbrida CISC/ RISC. O processador deve aceitar instrues CISC (instrues x86), j que os
programas atuais so escritos utilizando este tipo de instruo, logo um processador inteiramente RISC no poderia ser usado nos PCs atualmente. As instrues RISC so instrues simples, na verdade chamadas de microinstrues RISC, e os processadores baseados nesta arquitetura baseiam-se na idia de que poucas instrues, bem simples, so utilizadas em um grande nmero. Em contrapartida os processadores CISC contam com a idia de que instrues complexas facilitam o desenvolvimento dos programas. A soluo usada por todos os processadores atualmente, tanto da Intel quanto da AMD foi usar um decodificador CISC/RISC. O processador trabalha internamente executando instrues RISC, mas aceita somente instrues CISC. Instrues CISC mais simples podem ser convertidas diretamente em at 4 instrues RISC em um pulso de clock, enquanto as mais complexas exigem mais de um pulso para a converso. Uma tabela com estas converses so armazenadas na memria ROM chamada de Seqnciador de Instrues de Microcdigo (MIS, Microcode Instruction Sequencer). As microinstrues RISC no podem ser acessadas diretamente, j que cada arquitetura usa um conjunto prprio delas. As microinstrues do Pentium 4 so diferentes das do Pentium III que por sua vez tambm so diferentes da dos processadores da AMD. Os fabricantes tambm no divulgam com quais microinstrues seus processadores trabalham internamente.
5. Agendador
O agendador do Pentium 4 possui quatro unidades. Ele analisa cada microinstruo e as coloca em uma unidade de agendamento de acordo com o seu tipo:
Unidade de agendamento de memria: para microinstrues relacionadas
memria. Essas so as microinstrues que vem da fila de microinstruo de memria. Unidade de agendamento rpida: esta unidade para microinstrues simples. Lenta / Unidade de agendamento PF geral: esta unidade para outras microinstrues e para as microinstrues de ponto flutuante complexas. Unidade de agendamento PF simples: esta unidade para microinstrues de ponto flutuante simples. Portanto, o agendador classifica as microinstrues de acordo com seus tipos. Ento o agendador pode enviar cada microinstruo diretamente para a unidade de execuo correta para ser processada. O agendador o centro da unidade que executa microinstrues fora de ordem do Pentium 4. At agora consideramos que todas as microinstrues eram entregues na mesma ordem em que eram decodificadas. Com o agendador, as microinstrues podem se enviadas em ordem totalmente diferente para a unidade de execuo. O objetivo do agendador manter todas as unidades de execuo do processador ocupadas o tempo inteiro.
6. Alocador de Registradores
Na arquitetura NetBurst, assim como em muitas outras, mltiplas instrues so executadas simultaneamente, inclusive fora de ordem. O Agendador a unidade responsvel por definir a ordem na qual as instrues sero processadas, para isso, ele agenda primeiro a execuo das instrues cujos operandos j esto disponveis (j foram lidos da memria, ou j foram calculados por instrues anteriores). Aps o
trmino de cada uma dessas instrues, o resultado da execuo precisar ser armazenado em um registrador. Porm, a arquitetura x86 define poucos registradores gerais (apenas 8), enquanto o pipeline, dividido em muitos estgios, permite a execuo simultnea de uma grande quantidade de instrues. Para armazenar os resultados intermedirios das operaes realizadas fora de ordem e evitar conflitos na atribuio dos registradores, necessrio ter um conjunto de registradores extras, e este conjunto dever ser relativamente grande, para que possa ser utilizado sem muitas restries. No Pentium 4, este conjunto contm 128 registradores de uso geral e mais 128 registradores especiais para atuar com as instrues MMX/SSE. Para que isso seja feito, o Pentium 4 conta com uma unidade de alocao de registradores, tambm conhecida como unidade de renomeamento de registradores. Esta unidade atua alterando as instrues de forma a mapear os registradores lgicos da arquitetura x86 para registradores internos. Evidentemente, esta operao bastante complexa, e necessrio que atue em conjunto com o Agendador para que as instrues fora de ordem consigam ler e armazenar em locais adequados e os resultados sejam mapeados de volta aos registradores lgicos na ordem certa.
7. Hyper-Threading
Uma das caractersticas mais interessantes e comentadas do Pentium 4 o HyperThreading. Este recurso consiste em fazer com que um processador de um nico ncleo atue como dois processadores, permitindo a execuo simultnea de dois processos (ou duas threads de um mesmo processo). O princpio de funcionamento do Hyper-Threading se baseia no fato de que, a qualquer momento, apenas 30% das unidades de execuo do processador esto ocupadas, segundo estimativas da Intel[7]. Com a adio de uma pequena quantidade de circuitos de controle, possvel utilizar as unidades de execuo livres para o processamento de uma outra thread, usando o mesmo ncleo. Um processador com Hyper-Threading visto pelo Sistema Operacional como dois processadores lgicos, cada um deles com o seu prprio estado, definido pelos valores de seus registradores e flags. Do ponto de vista da implementao, basta duplicar alguns dos circuitos de controle, de forma que o processador seja capaz de realizar a leitura de instrues e armazenar o estado de mais um fluxo de execuo, e modificar o agendador para realizar o escalonamento das duas threads. Todas essas alteraes implicam num aumento do tamanho de menos de 5%, resultando em um excelente custo-beneficio. Obviamente, apesar de ter 2 processadores virtuais, o desempenho no melhorado. Exceto por alguns poucos circuitos de controle, a maior parte dos recursos compartilhada pelas duas threads, por exemplo, as unidades de execuo, o acesso ao Trace Cache, o decodificador de instrues, a memria, etc. O ganho real de desempenho depende de diversos fatores, por exemplo, caso as duas threads tentem usar as mesmas unidades de execuo simultaneamente, no haver qualquer ganho de desempenho. Por outro lado, caso uma das threads esteja bloqueada, por exemplo, devido a uma leitura de memria, a outra thread ter todos os recursos do processador a sua disposio, evitando a perda de ciclos e levando a um uso eficiente do processador. Segundo a Intel, em algumas aplicaes o ganho real de desempenho pode ser de at 30%, mas sabe-se que, em alguns casos, no h nenhum ganho real de desempenho. Em algumas situaes especficas, o overhead causado pelo compartilhamento dos recursos pode at mesmo levar uma pequena reduo de desempenho: Por exemplo,
alm de no haver ganho quando as threads competem pelas mesmas unidades de execuo, cada uma delas possui apenas metade do tamanho no Trace Cache, na tabela de previso de Branch, na fila de Agendador, etc, o que equivale, de forma grosseira, a um processador similar sem Hyper-Threading e com apenas metade do tamanho na maioria dos buffers internos Atualmente, esta tecnologia foi parcialmente deixada de lado em favor das arquiteturas multi-core, estando presente apenas nos microprocessadores Atom. Porm, a Intel pretende trazer o uso de Hyper-Threading de volta em verses futuras de seus processadores multi-core.
8. Termal-Throttling
O Termal-Throttling o recurso do Pentium 4 para o controle de temperatura no interior do processador, prevenindo-os do caso de superaquecimento. O superaquecimento de um processador pode ocasionar perda de desempenho, desligamentos ou at sua queima. Existem duas classes de Termal-Throttling: TM1 e TM2. O primeiro modo, o TM1, funciona inserindo ciclos ociosos entre as instrues, ocasionando um delay, diminuindo o desempenho, mas baixando a temperatura do processador. TM1 existe nos processadores Pentium 4, Xeon, Celeron e Pentium M. O segundo modo, o TM2, funciona diminuindo o multiplicador de clock, diminuindo efetivamente o desempenho do processador. Este tipo existe em Pentium 4, Pentium M e Celeron soquete 775.
exemplo, o clculo de uma operao independente, por exemplo, A+B, leva 1 ciclo de clock para completar (2 ciclos da ALU). Mas o clculo de uma cadeia de operaes, por exemplo, (A+B)+C pode ser realizado em apenas 1,5 ciclo de clock (3 ciclos da ALU), pois ao fim do primeiro ciclo da ALU, os bits menos significantes do primeiro clculo (A+B) j esto disponveis para iniciar o clculo seguinte (A+B)+C, ainda que o primeiro clculo no esteja totalmente terminado. Apesar de presente nas primeiras verses do Pentium 4, este tipo de otimizao foi removido nas verses posteriores, pois os resultados no desempenho no justificavam os sofisticados circuitos de controle necessrios.
10. SSE2
Apesar de ter conseguido aumentar significativamente a performance de instrues aritmticas simples com o Rapid Execution Engine, algumas instrues mais sofisticadas ficaram significativamente mais lentas. Ao contrrio de seus antecessores, os primeiros Pentium 4 no possuam circuitos especializados para muitas operaes, incluindo algumas operaes bastante comuns, tais como shift, multiplicao e diviso de inteiros, etc., alm de possuir uma Unidade de Ponto Flutuante pouco eficiente. A situao melhorou nas verses seguintes do Pentium 4, nas quais foram adicionadas unidades para multiplicao e shift de inteiros, mas a unidade de ponto flutuante regular permaneceu como um dos pontos fracos da arquitetura, levando em mdia 2 ciclos de clock a mais para todas as operaes, o que tornou-se crtico para execuo de alguns jogos e aplicativos grficos. A situao era bastante semelhante que tinha ocorrido alguns anos antes, na qual o K6-2, da AMD, possua um pssimo desempenho para as operaes de ponto flutuante quando comparado ao seu concorrente direto, o Pentium 2. Para compensar, a AMD criou um novo conjunto de instrues, conhecidas como 3D-Now, que tornava o desempenho do K6-2 semelhante ao do Pentium 2, quando fossem usados programas otimizados. Agora, os lados haviam se invertido, mas a soluo adotada pela Intel foi exatamente a mesma: todos os Pentium 4 possuem suporte a um novo conjunto de instrues SSE, conhecidas como SSE2. As instrues SSE2 foram planejadas como uma forma de evoluo das instrues MMX, porm, permitindo o uso dos registradores XMM, ao invs de restringir a atuao aos 8 registradores MMX. Esta caracterstica permite que o programador evite completamente os registradores MMX, permitindo que sejam intercaladas operaes vetoriais (SIMD) e escalares, no sendo necessrio realizar as custosas trocas entre o modo MMX e o modo x87. Os registradores XMM possuem o dobro do tamanho (128 bits) dos registradores MMX (64 bits), o que permite que as instrues SSE2 processem o dobro da quantidade de dados por vez. Adicionalmente, cada registrador pode representar um conjunto de operandos de 1, 2, 4, 8 ou 16 bytes, inteiro ou de ponto-flutuante. Essa caracterstica permite a realizao de vrios clculos simultneos (clculos vetoriais / SIMD) ao quebrar o registrador em vrios operandos pequenos, ou de clculos de maior preciso, ao quebrar o registrador em operandos maiores. Esta caracterstica faz da SSE2 muito mais flexvel em relao ao SSE, em que cada registrador poderia representar apenas um conjunto de 4 nmeros de ponto flutuante de 32 bits cada e permite alcanar um ganho de desempenho significativo. Outro recurso interessante acrescentados no SSE2 foi a adio de instrues para controle de cache. Um dos principais objetivos da arquitetura NetBurst era de otimizar o
processamento de streams de dados. Uma vez que dados recebidos por streams freqentemente podem ser descartados aps seu processamento, estas instrues permitem restringir a alocao de cache para estes dados, permitindo que o espao seja utilizado para dados que realmente necessitem de acesso freqente. A partir de 2003, as instrues SSE2 foram suportadas tambm pela concorrente, AMD, na linha de processadores Opteron e Athlon 64. Adicionalmente, ao especificar a plataforma x86-64, a AMD determinou que a quantidade de registradores XMM fosse dobrada, indo de 8 para 16 registradores. Em verses posteriores do Pentium 4, a Intel desenvolveu o SSE3. Este novo conjunto de instrues no representou um avano to significativo quanto o SSE2, adicionando apenas instrues para trabalhar com palavras de dados desalinhadas.
11. EM64T
Tradicionalmente, a Intel sempre foi pioneira na arquitetura x86, com a AMD apenas seguindo atrs. Porm, em 2003, o cenrio foi invertido com o lanamento do Opteron, o primeiro processador a suportar um novo conjunto de instrues conhecido como x86-64 ou AMD64. Este novo conjunto de instrues estende as instrues x86, adicionando suporte a processamento de operaes de 64 bits, alm de definir uma quantidade consideravelmente maior de registradores. Por ser apenas uma extenso do x86 original, o x86-64 mantm total compatibilidade com programas antigos, em contraste com a abordagem da Intel, que at aquele momento havia investido na arquitetura IA-64, presente nos processadores Itanium e que no possui compatibilidade nativa com a arquitetura x86. Esta caracterstica trouxe grande popularidade ao x86-64, que rapidamente tornou-se o padro em computao de 64 bits. A Intel rapidamente adotou a nova arquitetura, com algumas alteraes de pouca importncia, chamando-a Intel64 (em contraste ao AMD64) ou EM64T (Extended Memory 64 Technology, ressaltando o fato que a nova tecnologia permitiria enderear uma quantidade de memria muito maior). As primeiras implementaes surgiram em algumas verses posteriores do Pentium 4 e do Xeon e algumas de suas caractersticas mais interessantes so: Todos os registradores passam a ser de 64 bits, com exceo dos registradores da unidade de ponto flutuante, que permanecem com 80 bits. 8 Registradores de uso geral adicionais, totalizando 16. 8 Registradores SIMD adicionais, que podem ser usados pelas instrues MMX e SSE. Novo modo de endereamento, relativo ao ponteiro de instrues. EXtended Disabled Bit - Funcionalidade que adiciona um bit extra para indicar se um bloco de memria usada para dados ou para instrues, lanando uma interrupo sempre se tente executar um endereo marcado como dado, o que ajuda a prevenir alguns tipos de ataques.
subida e na borda de descida do clock, da mesma forma que as transmisses DDR (Double Data Rate), mas com dois sinais que esto 90 fora de fase entre si, totalizando os 4 bits de dados por clock.
14. Concluso
O Pentium 4 executa muito menos trabalho por ciclo do que outros processadores (como o Athlon ou o Pentium III), sacrificando as instrues por ciclo de clock a fim de conseguir um nmero maior de ciclos por segundo, ou seja, houve uma maior velocidade de clock. A inteno da Intel foi cumprida: aumentar a freqncia dos processadores j que na concepo da maioria das pessoas o clock que determina o desempenho do processador. Mas a realidade mostra que o aumento do clock no resultou em um melhor processamento, como mostra o resultado dos testes[1] na comparao entre um Pentium 4 e um Athlon XP de menor clock. Ou seja, a Intel usou o marketing para chamar a ateno dos consumidores, mesmo produzindo um processador mais lento. O clock determina apenas o nmero de ciclos por segundo que ele pode executar, mas necessrio saber tambm a quantidade de instrues feitas por ciclo. Mesmo no sendo para todos os casos, a tecnologia HyperThreading mostrou-se superior nos testes[2] executados em relao ao processador concorrente. Mas a Intel descontinuou a tecnologia, investindo em processadores multicore. Atualmente, somente o processador Intel Atom possui a tecnologia HT. Apesar do sucesso de vendas, a arquitetura NetBurst acabou sendo descartada pela Intel, por no ter um desempenho to bom ao comparar com o processador da AMD. Outro motivo foi o alto consumo de energia dos processadores, o que levou a Intel a investir na tecnologia utilizada em notebooks, com clocks mais baixos, porm alto desempenho, criando assim a nova gerao de processadores com arquitetura Core.
15. Referncias
[1] Torres, Gabriel. Athlon XP vs Pentium 4 (visitado em 05/10/2008) http://www.clubedohardware.com.br/artigos/707 [2] Athlon XP 3200+ vs. Pentium 4 3 GHz (visitado em 01/11/2008) http://www.clubedohardware.com.br/artigos/715/5 [3] Quad Data Rate (visitado em 05/10/2008) http://hardwarepcinfo.wordpress.com/2008/09/03/the-fsb-bus-is-a-quad-pumped-busqpb/ [4] Torres, Gabriel. Por dentro da arquitetura do Pentium 4 (visitado em 05/10/2008) http://www.clubedohardware.com.br/artigos/1201 [5] Pentium 4 http://en.wikipedia.org/wiki/Pentium_4 (visitado em 05/10/2008) [6] Artigo sobre a arquitetura NetBurst (visitado em 03/10/2008) http://www.xbitlabs.com/articles/cpu/display/netburst-1.html [7] Hyper Threading (visitado em 03/10/2008) http://en.wikipedia.org/wiki/Hyper_Threading