Intel Hyper-Threading: história, funcionamento e lista de jogos otimizados

A primeira aparição da tecnologia Hyper-Threading da Intel foi no processador Pentium 4 “Northwood” de 3.06 GHz e nos respectivos Xeon MP da Série “Foster” em 2002. A principal função do Hyper-Threading era melhorar a performance do processador aprimorando o paralelismo. 


Hoje, a Intel tem o Core i7-980X com seis núcleos físicos, os quais, por meio do uso da tecnologia Hyper-Threading, rendem 12 núcleos lógicos em um PC.

Esse contexto nos trás alguns questionamentos: até que ponto os softwares que usamos podem realmente se beneficiar do de 8 ou mais threads? O Hyper-Threading é bom ou ruim em termos de eficiência energética? Faz mais sentido ficar com seis núcleos físicos, assumindo o risco de em alguns casos ocorrer uma diminuição da performance?






O Intel Gulftown implementa Hyper-Threading para fornecer 12 núcleos virtuais de processamento. Entretanto, benefícios reais de performance somente podem ser verificados em poucas e específicas aplicações.

História do Hyper-Threading

Hyper-Threading foi introduzido também por uma questão de necessidade. Como o Pentium 4 empregava um pipeline, se tornou imperativo tornar esse pipeline ocupado, e assim a Intel optou por duplicar algumas unidades internas do processador para permitir que um processador de um único núcleo aparecesse como tendo dois núcleos lógicos para o sistema operacional.



Os benefícios no Pentium 4 foram principalmente uma melhoria da responsividade de sistemas mono-processados, mas em termos de aplicações, o ganho foi pequeno. Entretanto, no campo dos servidores, onde o processamento paralelo é amplamente desenvolvido, o Hyper-Threading mostrou maior impacto.

Nahalem - o retorno do Hyper-Threading

Com a chegada dos processadores Core 2, o Hyper-Threading desapareceu. Ressuscitando, porém, na arquitetura Nahelem, a qual é a base para os processadores Core i7, i5, e i3 disponíveis atualmente.



Como o Hyper-Threading funciona

Enquanto o Pentium III tinha um pipeline com 10 estágios de instrução, o Pentium 4 elevou o comprimento do pipeline para até 31 estágios no modelo Prescott, gravado em 90nm. A idéia básica por trás de um pipeline de instruções é a de estruturas o processamento em estágios independentes.

Assim, colocar mais estágios dentro de um pipeline significa ampliar a capacidade de execução de instruções do processador, especialmente em elevadas frequencias de operação. Entretanto, se ocorrer uma situação em que o pipeline fica parcialmente vazio ou ocupado com instruções erradas, a performance do sistema pode ser penalizada.

Um pipeline de 31 estágios de um Pentium 4 Prescott depende, portanto, de uma eficiente alocação de carga de trabalho dentro da CPU, sobretudo nos processos de distribuição da ordem das instruções dentro da CPU.



Todas as aplicações (softwares), quando rodam no PC, são na realidade bilhões de tarefas sendo executadas. Quando essas tarefas chegam ao processador para executá-las, ele tem que definir qual será executada primeiro, e qual será depois. O problema é que existem instruções que dependem do resultado de outras para serem concluídas. Como exemplo, uma conta do tipo 10 + (2 x 2).

Na conta acima, o processador precisa, primeiro, executar o 2 + 2, e com o resultado (4), executar a segunda instrução 10 + 4. Isso mostra que, se o processador mandar executar primeiro a soma (10 + ...), a instrução não será completada, pois falta o resultado da multiplicação. Quando ocorre isso, o processador ocupou um recurso seu de forma inútil, e que poderia ser usado para concluir uma outra instrução que pudesse ser concluída. Se muitas dessas situação se repetirem, a performance do sistema ficará severamente comprometida, pois o processador está trabalhando muito, porém de forma inútil.

No caso de processadores de múltiplos núcleos esse problema se agrava, e a chave para solucionar o problema é uma estrutura interna denominada "Branch Prediction", que tem a finalidade de organizar o fluxo de instruções, de forma a minimizar as situações nas quais um recurso do processador foi usado inutilmente. Esse problema fica particularmente agravado com o uso do Hyper-Threading.

Para solucionar o problema a Intel adicionou uma unidade de replay, que permite ao processador interceptar operações que foram enviadas equivocadamente para serem executadas, e recolocá-las na ordem de execução no momento em que as condições prévias necessárias à sua execução estiverem satisfeitas.

O lado negativo da introdução da unidade de replay é que algumas aplicações podem reduzir sua performance com o Hyper-Threading habilitado, pois os recursos internos do processador foram todos tomados e então impedindo o ganho de performance com a segunda thread. Isso significa que oHyper-Threading em algumas situações aumenta a performance do sistema, mas em outras, ele reduz.

A implementação da tecnologia Hyper-Threading hoje é similar à verificada no Pentium 4, na medida em que apresenta cada núcleo físico para o sistema operacional como um par de processadores lógicos. Se os recursos de execução não são utilizados por uma tarefa em curso, branch prediction pode colocar outra instrução no lugar para aumentar a eficiência ou mesmo impedir que instruções sejam executadas no tempo errado.



No passado, vimos a tecnologia Hyper-Threading proporcionar um desempenho adicional, mas também contribuiu claramente para o consumo de energia (mesmo que, de acordo com a Intel, é uma adição mais barato em relação ao aumento da superfície morrer). Altamente threaded aplicações e cargas de trabalho geralmente levam vantagem mais eficiente de muitos núcleos e vários segmentos do mainstream software que é menos otimizado para vários segmentos.

Softwares otimizados para processamento em multi-thread

A Intel distribuiu uma lista de aplicações otimizadas para processamento em múltiplas threads, e que, portanto, se beneficiam da tecnologia Hyper-Threading.  Os softwares que incluem uma aplicação de benchmark contém um asteristico do lado.

Tenha em mente, porém, que na lista de games abaixo, os benefícios da otimização para processamento paralelo são muito difíceis de serem mensuradas por meio do benchmark, porque na maior parte deles, os eventuais benefícios da otimização para múltiplas threads são canceladas pelas latências entre o fluxo de dados entre processador e GPU. De qualquer forma, a lista segue abaixo.

Games, Game Engines, e Middleware

Activision Ghostbusters
Capcom Lost Planet Colonies
Capcom Resident Evil 5
CJ Internet Prius Online
Codemasters GRID (com patch)
Codemasters Operation Flashpoint: Dragon Rising
Crytek Crysis Warhead (somente no Windows XP)
EA Need for Speed: SHIFT
Havok SDK v5.5 (Tool / Middleware)
Illuminate Labs Beast 5 (Tool/Middleware)
Geomerics Enlighten
Kingsoft Mission Against Terror
Kingsoft JX Online III
NC Soft Aion
NC Soft Lineage II
Neowiz Alliance of Valiant Arms
Sega Football Manager 2009
Sega Football Manager 2010
Sega Empire: Total War (with patch)
Simul Software Ltd Simul Weather (Middleware)
THQ Relic Company of Heroes
Trinigy Vision Engine v7 (Middleware)
Ubisoft Assassin’s Creed
Ubisoft Far Cry 2 (with patch)
Ubisoft HAWX
Ubisoft World in Conflict: Soviet Assault
Winking Sakura

Media e Software de Produtividade

ABBYY Fine Reader
Adobe After Effects
Adobe Photoshop*
Adobe Photoshop Lightroom
Adobe Premiere Pro
Arcsoft Total Media Showbiz DVD
AutoDesk 3ds Max*
Autodesk Maya
Avid Pinnacle Studio
Bibble Labs Bibble
Blender
Cakewalk Sonar Producer
Cineform Prospect HD
Corel DVD Factory in Digital Studio
Corel Video Studio
Cyberlink MediaShow;
MediaShow Espresso
Cyberlink Power Director
Cyberlink Power Producer
HandBrake*
Ichikawa Soft Laboratory SILKYPIX
Kolor Autopano Pro & Giga
Magix Video Deluxe / Movie Edit Pro
MainConcept Reference Encoder and Decoder*
Maxon Cinema 4D & Cinebench*
Microsoft Excel
Microsoft Expressions Encoder
Microsoft Windows Live Movie Maker
Movavi Video Converter
Nero Multimedia Suite
Newtek Lightwave
Nik Software Silver Efex Pro
On2 Technology True Motion VP8
Pegasys TMPGEnc Xpress
Persistence of Vision Raytracer
Photodex Proshow Gold
RARLAB WinRAR*
Sonic Roxio Creator
Sonic Solutions Cineplayer
Sony ACID Music Studio
Sony Sound Forge Audio Studio
Sony Sound Forge Pro
Sony Vegas Pro
Sony Acid Pro
Sorenson Media Squeeze
Steinberg Cubase
Steinberg Nuendo
VirtualDub w/Divx
XtraSens Retina
3ivx MPEG-4

Esta lista certamente não é completa. Um exemplo notório é a não listagem do aplicativo  7-Zip, que beneficia-se muito da ativação do recurso Hyper-Threading.

Comentários