O Core i7 marca a introdução do Nahalem, baseado em uma arquitetura com muitas modificações em relação ao Penryn e aos processadores anteriores, incluindo um controlador de memória integrado e a tão esperada migração do FSB para um barramento serial ponto-a-ponto, duas melhorias que foram introduzidas anos antes pela AMD, às quais a Intel vinha resistindo até então.
Embora o Core i7 seja ainda um processador de nicho, a nova arquitetura servirá de base para os processadores Intel dos próximos anos, por isso é importante estudar um pouco sobre ele.

Começando com um pouco de contexto histórico, no início de 2006 a Intel estava em uma situação complicada. O Pentium D, baseado na ineficiente arquitetura NetBurst perdia para o Athlon X2 tanto em termos de desempenho quanto em termos de eficiência, gastando muita energia e rendendo pouco.
Na época, os processadores AMD eram superiores tanto nos desktops quanto nos servidores e a Intel perdia terreno rapidamente em ambas as frentes. Quando tudo parecia perdido, a Intel apresentou a arquitetura Core, que deu origem ao Core 2 Duo e aos demais processadores da linha atual. Para evitar cometer o mesmo erro que cometeu com a plataforma NetBurst, a Intel passou a investir massivamente em pesquisa e desenvolvimento, passando a desenvolver diversas novas arquiteturas em paralelo e a investir pesado no desenvolvimento de novas técnicas de fabricação e na modernização de suas fábricas.
O departamento de marketing se apressou em criar um termo que simboliza a nova fase, o “tick-tock” que passou a ser exaustivamente usado dentro do material publicitário da Intel. A idéia é simples: apresentar novas arquiteturas e novas técnicas de fabricação em anos alternados, onde um “tick” corresponde ao lançamento de uma nova arquitetura (como o Penryn e o Nehalem) enquanto o “tock” corresponde ao lançamento de uma nova técnica de fabricação (45 nanômetros ou 32 nanômetros, por exemplo), fechando o ciclo.
O plano é manter o público interessado, anunciando uma nova arquitetura, ou a migração para um novo processo de fabricação uma vez a cada ano e manter um ritmo rápido de evolução, que a AMD tenha dificuldades para acompanhar.
Dentro da idéia, a migração para a técnica de 0.065 mícron em 2005 foi um “tick”, o lançamento da plataforma Core, em 2006 foi um “tock” e o lançamento do Penryn em 2007, baseado na nova arquitetura de 0.045 mícron, foi um novo “tick”, que foi seguido pelo anúncio do Nahalem (pronuncia-se “nerreilem”), que representa uma nova arquitetura, ainda produzida usando a técnica de 45 nanômetros, mas com diversas mudanças arquiteturais em relação ao Penryn.
Assim como em todos os demais processadores da Intel, o “Nehalem” é apenas o nome-código da arquitetura. Ao chegar efetivamente às prateleiras, ele ganhou o nome de Intel Core i7.
Diferente do Yorkfield, usado nos processadores Core 2 Quad da série Q9000 (que era obtido através da combinação de dois processadores dual-core, ligados através do FSB), o Nehalem é um processador quad-core nativo, onde os 4 núcleos compartilham a mesma pastilha de silício:

Os 4 núcleos são compostos por nada menos que 731 milhões de transístores, que, mesmo com a técnica de produção de 45 nanômetros, ocupam uma área de 263 mm². Para ter uma idéia, isso corresponde a mais de 10 vezes o tamanho de um Atom 230, que possui apenas 25.9 mm².
Para acomodar os 4 núcleos, a Intel fez várias mudanças na arquitetura dos caches. Em vez de um grande cache L2 compartilhado, a Intel optou por utilizar uma arquitetura similar à utilizada pela AMD no Phenom, com um pequeno cache L2 (de 256 KB) para cada núcleo e generosos 8 MB de cache L3 compartilhados entre todos os núcleos. Dentro da arquitetura, o cache L3 assume a posição que no Core 2 Duo era executada pelo cache L2, servindo como um reservatório comum de dados.
A grande diferença entre o cache do Nahalem e do Phenom reside na forma como os dados são armazenados nos caches. Nos processadores AMD é usado um cache “exclusivo”, onde o cache L2 armazena dados diferentes do cache L1 e o L3 armazena dados diferentes dos do L2, maximizando o espaço de armazenamento. A Intel, por outro lado, utiliza um sistema “inclusivo” onde os cache L1 e L2 armazenam cópias de dados também armazenados no cache L3.
Embora reduza o volume total de dados que pode ser armazenado nos caches, o sistema da Intel oferece um pequeno ganho de desempenho, já que o processador não precisa checar os dados em cada um dos caches de forma independente.
Outro motivo para o uso do cache inclusivo são os novos estágios de baixo consumo (C3 e C6) suportados pelo processador, onde alguns (ou mesmo todos os núcleos) são completamente desligados, reduzindo o consumo a um patamar bastante baixo, mas em troca causando a perda dos dados armazenados nos cache L1 e L2. Como o cache L3 é independente dos 4 núcleos, ele permanece ativo, permitindo que os núcleos recarreguem os caches a partir do L3 ao acordarem, sem que o processador precise executar operações de checagem, nem que precise buscar os dados novamente na memória RAM.
à nesse ponto que os investimentos da Intel em novas técnicas de produção se pagam, já que com transístores menores, eles podem se dar ao luxo de fabricar processadores maiores e com mais cache, compensando a perda de espaço causada pelo uso do sistema exclusivo com um volume maior de cache.
O cache L1 continua sendo dividido em dois blocos (32 KB para dados e 32 KB para instruções), assim como em todos os processadores anteriores, mas houve um aumento na latência de acesso, que subiu de 3 para 4 ciclos em relação ao Penryn. A perda de desempenho é compensada pela redução na latência do cache L2, que caiu consideravelmente, de 15 para 11 ciclos.
Essa redução no tempo de acesso é uma das justificativas da Intel para o uso de um cache L2 tão pequeno. Com apenas 11 ciclos de acesso, ele funciona mais como um cache nível “um e meio”, que serve como um intermediário entre o cache L1 e o grande bloco de cache L3 compartilhado.
O cache L3 trabalha com uma latência de 39 ciclos, o que pode parecer bastante se comparado com a latência dos caches L1 e L2, mas é um pouco mais rápido do que o cache L3 usado no Phenom, que além de menor, trabalha com uma latência de 43 ciclos.
Outra mudança dramática é a inclusão de um controlador de memória integrado, assim como temos nos processadores AMD. O controlador de memória integrado reduz substancialmente o tempo de latência da memória, resultando em um ganho de desempenho considerável. Um dos grandes motivos o Athlon X2 ter se mantido competitivo em relação ao Core 2 Duo, apesar de possuir bem menos cache era justamente devido ao fato de utilizar o controlador dedicado, enquanto o Core 2 Duo dependia do trabalho do chipset.
A grosso modo, podemos dizer que o Athlon X2 precisa acessar a memória com mais freqüência (devido ao cache menor) mas que em compensação perde menos tempo a cada acesso devido ao controlador de memória integrado. A Intel bem que resistiu, mas acabou tendo que ceder à idéia.
Em vez de utilizar um controlador single-channel, ou dual-channel, a Intel optou por utilizar um controlador triple-channel, com suporte a memórias DDR3, operando a até 1.33 GT/s. Isso significa uma banda total de até 32 GB/s (ao utilizar 3 módulos). Para ter uma idéia, isso é 40 vezes mais do que tínhamos há 10 anos, quando utilizávamos módulos de memória SDR PC-100 em conjunto com o Pentium III.
Os três canais operam de forma independente, de forma que o processador por iniciar uma nova leitura em um dos módulos enquanto ainda espera os dados referentes a uma leitura anterior, realizada em outro módulo. Isso contribui para reduzir o tempo de latência do acesso à memória, que é, proporcionalmente, muito mais alto nos módulos DDR3.
Naturalmente, para tirar o melhor benefício do triple-channel, é necessário usar os módulos em trios. Ao usar um único módulo, apenas um dos canais será ativado e, ao usar quatro, o último módulo compartilhará o mesmo canal com o primeiro.
O problema com o controlador integrado é que ele aumenta substancialmente o número de contatos do processador, o que quebra completamente a compatibilidade com as placas soquete 775 atuais. A versão triple-channel do Nehalem utilizará um soquete LGA com nada menos do que 1366 contatos. O formato do processador também mudou, passando a ser retangular, assim como no antigo Pentium Pro:
Companhando as mudanças no processador, foi lançado também um novo chipset, o X58, que faz par com o ICH10, que concentra as interfaces de I/O:
Como o controlador de memória foi movido para dentro do processador, o X58 é um chipset relativamente simples, que serve basicamente como uma interface entre o barramento QPI do processador, os periféricos PCI Express e o chip ICH10 (acessado através de um barramento DMI), que concentra as outras interfaces. Os transístores referentes às linhas PCI Express ocupam a maior parte do die do chipset e é por isso que ele continua ocupando uma área relativamente grande.
Outra novidade é que o X58 é certificado pela nVidia para uso de SLI (ou seja, o primeiro pelo qual a Intel aceitou pagar a licença), o que permite o desenvolvimento de placas que sejam simultaneamente compatíveis com o SLI e com o CrossFireX. Como estamos falando do topo do mercado high-end aqui, onde se paga US$ 999 pelo processador e mais US$ 400 pela placa-mãe, o suporte a SLI acaba sendo um recurso importante.
A principal observação é que triple-channel está disponível apenas nos processadores da família i7, que são destinados a servidores e estações de trabalho de alto desempenho. Os processadores i5 destinados a desktop (baseados no core Lynnfield) possuirão apenas dois canais ativados, mudança que se reflete no soquete, que possui um número menor de contatos.
Um dos fatores que permitem que o Core 2 Duo supere a maioria dos processadores AMD atuais clock por clock é o fato de os processadores serem capazes de processar 4 instruções por ciclo (4 issue), contra 3 dos processadores AMD. Naturalmente, existem muitos outros fatores a se considerar (a eficiência dos circuitos de branch prediction, o tamanho e velocidade dos caches e assim por diante), mas as 4 instruções por ciclo oferecem uma vantagem considerável.
O Nehalem mantém o processamento de 4 instruções, mas adiciona uma série de refinamentos arquiteturais, que permitem que as unidades de execução sejam alimentadas com um volume maior de dados, reduzindo o tempo em que elas ficam ociosas esperando por dados na memória cache ou pelo resultado de uma operação de branch prediction, por exemplo. Isso resulta em um ganho de eficiência considerável em relação ao Penryn.
Além das mudanças nos caches e a adição do controlador de memória, outra mudança é a substituição do antigo FSB por um barramento aprimorado, batizado de QuickPath Interconnect, ou QPI.
O FSB (front-side bus, ou barramento frontal), tem sido utilizado desde os primeiros processadores Intel. Ele consiste um um barramento compartilhado, que liga o processador ao chipset, como você pode ver nesse diagrama da Intel:
Como ele é usado não apenas para a comunicação entre os núcleos do processador e a memória, mas também para a comunicação entre os 2 ou 4 núcleos do processador, ele acaba estrangulando o acesso à memória, prejudicando o desempenho do sistema. O problema se agrava ao usar vários processadores em SMP, como no caso das placas para servidores, ou na plataforma Skultrail
Até o Penryn a Intel remediou o problema na base da força-bruta, simplesmente adicionando mais cache L2 aos processadores. Com o QuickPath, resolveram atacar a raiz do problema, substituindo o FSB por um barramento modernizado, composto por links independentes que operam a 4.8 ou 6.4 GT/s (a siga “GT/s” indica o volume de transações por segundo, diferente de “GHz”, que indica o clock), com a transmissão de 16 bits de dados em cada direção por ciclo, resultando em um barramento de 9.6 ou 12.8 GB/s em cada direção (25.6 GB/s no total) por linha de dados.
Como a memória é agora acessada diretamente pelo controlador de memória, este link fica inteiramente disponível para o tráfego de I/O. Ao utilizar dois processadores, cada processador passa a se comunicar com o chipset através de uma linha independente e uma terceira linha de dados é implantada para coordenar a comunicação entre os dois:
Ao usar 4 processadores (possibilidade que deverá ser bem explorada no caso dos servidores de alto desempenho) são incluídos barramentos adicionais, que fazem com que cada processador tenha acesso direto a todos os demais:
Se você acompanhou a evolução dos processadores da AMD nos últimos anos, vai notar uma grande semelhança entre o QuickPath e o HyperTransport, usado nos processadores AMD. Obviamente, não se trata de mera coincidência. A Intel estudou os pontos fortes da solução da AMD e acabou chegando a uma solução adaptada à sua arquitetura. Como dizem, a cópia é a forma mais sincera de elogio.
Com relação ao processamento das instruções, uma novidade importante é o Loop Stream Detector (LSD), um controlador adicional que vasculha as instruções decodificadas antes que elas cheguem ao processador, localizando instruções referentes a loops de processamento.
Em vez de reprocessar as instruções do loop repetidamente, o processar armazena as instruções em um pequeno cache interno e as executa a partir daí. Além de permitir ganhar tempo, isso reduz sutilmente o consumo elétrico, pois permite desativar o circuito de branch prediction, juntamente com as unidades fetch e decode durante o processamento do loop:
No Conroe (usado na geração inicial do Core 2 Duo), a Intel inaugurou o uso do “macro-ops fusion”, que permite que algumas instruções específicas sejam fundidas durante a fase de decodificação e processadas como uma única instrução, resultando em um pequeno ganho de desempenho. No Conroe o macro-ops fusion funcionava apenas com instruções de 32 bits, mas o Nehalem ganhou suporte à fusão de instruções de 64 bits, o que é uma boa notícia para quem já fez ou pretende fazer a migração.
O Nehalem marca também a volta do Hyper Threading, chamado agora de SMT (Simultaneous Multi-Threading) o que faz com que o processador se apresente ao sistema operacional como tendo 8 núcleos em vez de 4. Naturalmente, o SMT não dobra o desempenho do processador, servindo apenas como um recurso extra que permite que ele aproveite melhor os recursos de processamento, processando dois threads simultaneamente sempre que possível.
Se você acompanhou a era do Pentium 4, talvez não tenha boas lembranças do Hyper Threading, já que ele reduzia o desempenho do processador em algumas operações e aumentava consideravelmente o consumo elétrico. No caso do Nehalem, entretanto, a função passou por uma série de melhorias, tornando-se mais eficiente. Além das otimizações, alguns outros fatores importantes são:
a) O Nahalem possui um controlador de memória integrado e caches muito maiores, o que garante um fluxo de dados muito maior. Isso é um pré-requisito para uma boa eficiência ao usar o SMT, já que ao processar dois threads simultaneamente, cada núcleo precisa ser alimentado com dados referentes a ambos.
b) Hoje em dia temos um volume muito maior de softwares otimizados para o processamento simultâneo de vários threads, diferente do que tínhamos na época do Pentium 4.
O ganho ao utilizar o SMT no Nehalem fica abaixo dos 10% na maioria das tarefas (em algumas situações, pode haver até mesmo uma pequena perda), mas existem alguns casos específicos onde ele representa ganhos expressivos, como no caso do 3DMark, onde o ganho chega aos 35%, o que não é nada ruim, considerando que ele consiste em aproveitar ciclos de processamento que de outra forma seriam desperdiçados.
Além da questão do desempenho, existe também um pequeno ganho do ponto de vista do consumo elétrico, já que ao executar as tarefas mais rápido, o processador passa mais tempo em modo de baixo consumo. Ã de se observar que a Intel tem utilizado o SMT também no Atom, pelo mesmo motivo.
Ao contrário do deselegante Kentsfield (usado na primeira geração do Core 2 Quad), onde todos os núcleos operam sempre à mesma freqüência e usando a mesma tensão, o Nehalem oferece um sistema de gerenciamento um pouco mais elegante, onde os núcleos continuam operando à mesma frequência, mas podem ser configurados com tensões diferentes, de acordo com o nível de utilização. Os núcleos ociosos são colocados em um estágio de baixo consumo, onde são quase inteiramente desligados, o que permite que o processador fique com apenas um dos núcleos ativos ao executar tarefas leves, ativando e desativando os outros núcleos conforme necessário.
O gerenciamento é feito com a ajuda do PCU (Power Control Unit), um controlador dedicado, que possui seu próprio firmware e seus próprios circuitos de processamento e é dedicado unicamente à tarefa de monitorar as requisições do sistema e os níveis de utilização dos núcleos, tomando as decisões com relação aos clocks e tensões usadas por cada um.
O PCU ocupa uma área moderadamente grande do processador, com nada menos do que um milhão de transístores. Ã como se o Nehalem tivesse um 486 integrado, dedicado unicamente ao gerenciamento de energia.
Outra mudança importante é o Turbo Boost, no qual o processador pode aumentar a frequência de operação quando apenas um ou dois dos núcleos estiverem ativos, em uma espécie de overclock automático.
Tradicionalmente, processadores single-core ou dual-core operam a frequências ligeiramente superiores aos processadores quad-core, o que permite que eles dêem combate ou até mesmo superem os sucessores em aplicativos com um baixo nível de paralelismo, como no caso da maioria dos jogos. Sem dúvidas, a Intel não gosta muito de ver um simples Pentium E overclocado superar um caro Core 2 Quad em alguns testes.
Com o Turbo Boost, o Nehalem pode ser “convertido” em um processador single-core, dual-core ou triple-core em situações em que o pequeno aumento no clock compense a desativação dos núcleos adicionais, tapando esta última lacuna. Outro ponto de vista seria ter o Turbo Boost como um sistema de overclock “suportado”, que permite que mesmo quem não pensa em fazer overclock possa se beneficiar de uma parte do potencial oculto do processador.
O aumento da frequência é controlado pelo PCU, que monitora o nível de utilização, decidindo em que situações ele pode ser aplicado. A regra básica é que o aumento é feito apenas em situações em que resulta em um ganho tangível de desempenho (já que aumenta o consumo elétrico) e apenas quando o processador está operando confortavelmente abaixo do TDP e da temperatura máxima.
Nas versões iniciais, o Turbo Boost é capaz de aumentar o clock em duas unidades (266 MHz) caso apenas um dos núcleos esteja ativo e em apenas 133 MHz caso dois ou mais estejam em atividade, mudança que é feita através do aumento do multiplicador (sem afetar a frequência dos demais componentes).
Estes pequenos aumentos equivalem apenas a um overclock leve, mas versões posteriores devem trazer aumentos mais significativos. Ã possível também desativar o Turbo Boost através do Setup, o que é importante ao fazer overclock, já que com o processador operando mais perto do limite, qualquer aumento adicional pode ser suficiente para desestabilizar o sistema.
Uma perspectiva sombria é que versões mais agressivas do Turbo Boost podem marcar o início do fim para os overclocks, já que com o processador passando a ajustar a frequência de operação dinamicamente entre, digamos, 2.66 e 4.0 GHz, não fará muito sentido arcar com o maior consumo e a necessidade de usar um cooler superdimensionado para manter o processador trabalhando a 4.0 GHz o tempo todo.
Citação … acho que deu pra entender … pelo menos um pouco né !







