Você está na página 1de 18

O AVANO TECNOLGICO DOS PROCESSADORES

E SUA UTILIZAO PELO SOFTWARE

EDSON PEDRO FERLIN


Professor e Coordenador - Curso de Engenharia da Computao / UnicenP
Professor - PUCPR
Professor - SPEI
ferlin@unicenp.br

da Vinci , Curitiba, v. 1, n. 1, p. 1-140, 2004 43


O AVANO TECNOLGICO DOS PROCESSADORES E SUA UTILIZAO PELO SOFTWARE

RESUMO
Neste artigo abordaremos algumas questes envolvendo o avano tecnolgico dos
processadores e a sua utilizao pelos softwares e em especial pelo sistema operacional. Os
processadores tm tido um crescimento muito significativo nas ltimas dcadas, em virtude
dos recursos tecnolgicos que foram incorporados nas suas arquiteturas. Contudo, para apro-
veitar este potencial preciso que o software tambm acompanhe este crescimento, mas o que
se percebe que isto no est acontecendo, pelo menos no com a velocidade que seria
necessria para se obter um desempenho prximo do mximo permitido para a arquitetura.
Como discutiremos neste artigo, poderemos observar que muitos dos limitadores so influen-
ciados pelos fatores mercadolgicos e que implicam em uma limitao no desempenho dos
computadores, em virtude da utilizao de softwares obsoletos que no utilizam adequada-
mente os recursos computacionais dos processadores, gerando uma baixa eficincia.
Palavras-chave: Arquitetura, Desempenho, Processador, Software, Tecnologia.

ABSTRACT
This paper addresses some questions regarding the technological advance of processors
and their utilization by software, specially operating systems. The processors have gained
importance in the last decades, because of technological resources that were incorporated in
their architecture. However, in order to take advantage of this potential, it is necessary that
software also follow suit, what is not happening, at least not as quickly as necessary to obtain
a performance close to the maximum allowed by the architecture. It was observed that many
limiting factors are imposed by the market, due to the utilization of obsolete software, which
do not adequately use the computational resources of the processors, resulting low efficiency
in the systems.
Key words: Architecture, Performance, Processor, Software, Technology.

44 da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004


EDSON PEDRO FERLIN

O AVANO TECNOLGICO DOS PROCESSADORES


E SUA UTILIZAO PELO SOFTWARE
EDSON PEDRO FERLIN

1. INTRODUO

Atualmente, muito se comenta a respeito do avano tecnolgico dos processadores,


como por exemplo o aumento da freqncia de clock, o acrscimo de memria cach, maior
nmero de unidades funcionais, execuo especulativa, hyper-threading e outros. Contudo,
pouco se discute a respeito do software, pois apenas sabe-se que executa e a partir da uma
incgnita para a maioria dos usurios e tambm para uma parcela dos desenvolvedores.
Muitos programadores se preocupam somente em digitar linhas de cdigo sem compreen-
der a arquitetura que est por de traz, e que efetivamente executar o software. Eles no
sabem tambm, por exemplo, qual o software o mais apropriado para uma dada arquitetura
ou se est conseguindo utilizar a potencialidade do processador.
Os computadores possuem em sua arquitetura como componente principal o
processador, que o crebro do sistema e que realiza o processamento das informaes. O
processador no o nico componente, mas com base nele que o computador ganha a
maioria das caractersticas, dentre outras a freqncia de operao (clock), a largura do
barramento de dados, e a capacidade mxima de memria.
O processador em disparado o produto de maior avano tecnolgico construdo
pelo homem, sendo muitos outros produtos desenvolvidos pela utilizao dele nos compu-
tadores, direta ou indiretamente. Os avies, os equipamentos mdicos e as simulaes
meteorolgicas so exemplos da utilizao deste componente.

2. OS PROCESSADORES

Os processadores atuais, como Pentium, PowerPC, UltraSparc, e outros, incorporam


diversos recursos computacionais, como memria cach, pipeline, unidade de ponto flutuante,
unidade de branch, que no existiam nas primeiras geraes de processadores. Esta evoluo teve
inicio em 1971 com o lanamento do primeiro microprocessador, o 4004 da Intel e que era um
modesto processador de 4 bits, mas que inaugurou a nova tecnologia dos integrados VLSI (Very
Large Scale Integration), devido ao avano de uma nova rea da eletrnica que iniciava, denominada
de Microeletrnica (ENDERLEIN, 1994).
Contudo, foi com o desenvolvimento do conceito de computador pessoal (PC Personal
Computer), na dcada de 80, que a computao comeou a tomar forma como a conhecemos hoje,
pois o mercado dos computadores para uso domstico fez com que as diversas empresas de
hardware tivessem que conquistar mercado com novos produtos. Um dos principais produtos foi
o processador com o objetivo de atender a este novo mercado mais exigente em termos de
velocidade de processamento.
Com a reduo dos espaos ociosos dentro do encapsulamento do chip (Circuito Inte-
grado) do processador, devido ao avano da microeletrnica, possibilitou que mais recursos,

da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004 45


O AVANO TECNOLGICO DOS PROCESSADORES E SUA UTILIZAO PELO SOFTWARE

que antes estavam fora do processador, fossem, agora, encapsulados na mesma unidade. Um
dos primeiros recursos incorporados aos microprocessadores foi co-processador aritmtico,
que realizava todo o processamento das operaes de ponto flutuante, e que agora so
realizadas pela unidade de ponto flutuante, que uma das unidades internas dos processadores.
Os primeiros processadores tinham uma srie de limitaes que os tornavam de
uso restrito e o software, no passado, estava quase sempre em concordncia com o hardware,
ou seja, o software tinha o cdigo que era prprio para a arquitetura do processador e por
conseqncia do computador. Entretanto, com o avano da microeletrnica os processadores
continuaram evoluindo a passos bem mais audaciosos, criando com isso microprocessadores
avanados, longe do que os softwares conseguiam utilizar, resultando em uma lacuna entre o
hardware e o software, a qual continua nos dias de hoje.
Esta distncia mencionada est aumentando, pois a evoluo dos processadores
muito rpida, tendo como evidncia o grande nmero de novos que foram lanados nos
ltimos anos, sem contar com os que ainda esto nas pranchetas dos engenheiros e projetistas
e que aguardam a finalizao dos testes para serem disponibilizados no mercado.
Todavia, por motivos econmicos as empresas de software no esto conseguindo
acompanhar esta evoluo. Para cada novo processador devemos ter tambm novos softwares
e neste ponto que os problemas comeam, pois desta forma h diversas verses para um
mesmo software, onerando-o e restringindo ainda este mercado.
O software composto por instrues que so prprias de cada processador ou a
uma famlia de processadores como o caso do x86 da Intel. por meio das instrues que
se consegue acessar os diversos recursos dos processadores. Estas instrues esto definidas
no conjunto de instrues no nvel ISA (Instruction Set Architecture) do processador
(TANENBAUM, 2001). Quando se compila um programa, o compilador transforma cada
comando da linguagem em uma seqncia de instrues apropriada para a arquitetura. Esta
seqncia de instrues montada pelo desenvolvedor do compilador e tambm elabora-
da com base na lgica do programador. Contudo nem sempre o compilador consegue apro-
veitar as melhores instrues do conjunto de instrues disponveis para aquele determina-
do processador, deixando o software muito pobre em termos de utilizao dos recursos.
Este comportamento ocorre porque nem sempre o desenvolvedor conhece to bem a
arquitetura, os recursos do processador e a melhor maneira de acess-los por meio da pro-
gramao.
Para compreendermos um pouco melhor estes fatos, verificaremos os recursos
atualmente disponveis da arquitetura interna dos processadores, com base na arquitetura do
Pentium 4 da Intel (HINTON, 2001), no por ser o mais avanado, mas pelo simples fato de
ter grande utilizao no mercado.

2.1. Arquitetura Interna do Processador

Na Figura 1 vemos a arquitetura interna de um processador Pentium 4, o qual


possui sete unidades funcionais independentes: Store, Load, 2xALU(Aritmetic Logic Unit)
Inteiro, ALU Complexo, MMX/SSE (MultiMdia eXtension)/(Streaming SIMD Extensions) e
FP (Floating Point). Alm destes recursos, temos tambm as memrias cachs nvel 1 e nvel
2, execuo fora-de-ordem e pipeline com 20 estgios. Contudo, se a seqncia das instrues,
e a dependncia entre elas, no for a mais apropriada, ento a maioria destas unidades fica-

46 da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004


EDSON PEDRO FERLIN

ro ociosas, resultando em um desempenho inferior ao possvel, dando uma falsa sensao


de baixa eficincia.

Figura 1. Arquitetura Interna do Processador Pentium 4 (Fonte: Intel)

A seguir esto descritos os principais recursos tecnolgicos incorporados nos


processadores. Ressaltamos que nem todos os recursos descritos se encontram presentes em
todos os processadores, pois dependem da arquitetura e da topologia interna de cada um:

2.1.1. Unidade de Inteiro

A unidade de inteiro a unidade funcional mais utilizada no processador. Ela a


responsvel pelas operaes aritmticas unrias e binrias que operam sobre os nmeros
inteiros e tambm operaes booleanas. denominada na maioria das vezes como ULA
(Unidade Lgica Aritmtica), ou em ingls como ALU (Aritmetic Logic Unit), e sua largura
(em bits) determinada pelo barramento de dados do processador. Esta uma unidade
presente desde o primeiro processador e considerada como a primeira unidade funcional,
devido a estar presente no modelo de mquina de Von Neumann (STALLINGS, 2002).
Apesar do fato de ser uma unidade bsica de todos os processadores, ela possui
diferenas funcionais considerveis, por exemplo, se no tiver a funo de multiplicao
ento se deve re-escrever o cdigo utilizando o recurso de sucessivas somas, e logicamente

da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004 47


O AVANO TECNOLGICO DOS PROCESSADORES E SUA UTILIZAO PELO SOFTWARE

isto tem impacto direto sobre o software. A utilizao de diferentes seqncias de instrues
implica em tempo de execuo e tamanho em bytes tambm diferentes, dependendo da
arquitetura do processador.

2.1.2. Unidade de Ponto Flutuante

Esta unidade foi incorporada, a partir dos 80486DX (HYDE, 2003), para possibi-
litar a execuo de operaes de ponto flutuante no prprio processador. Anteriormente era
necessrio utilizao de um chip adicional que desempenhava esta funo e era chamado de
co-processador aritmtico. Contudo com a crescente necessidade deste tipo de operao,
por parte do software, os projetistas resolveram incorporar dentro do processador este re-
curso, no mais como um opcional mas como um recurso de grande valia para o
processamento numrico. Esta unidade normalmente denominada de FP (Floating Point).
Este recurso proporcionou um ganho no desempenho, pois, as operaes que en-
volvem ponto flutuante, tinham que ser emuladas via software utilizando a ULA. Com este
recurso passaram a ser executadas diretamente pelo hardware desta unidade especializada
resultando em uma economia de tempo, de processamento e de recurso computacional.

2.1.3. Pipeline

A idia de um Pipeline a de dividir o ciclo da instruo em estgios consecutivos


(STALLINGS, 2002), como uma linha de produo. Desta forma, consegue-se acelerar a
execuo das instrues, resultando em uma reduo do tempo de execuo e por conseqncia
o aumento do desempenho. Teoricamente, quanto maior o nmero de estgios do pipeline,
maior o speedup (PATTERSON & HENNESSY, 2000). Entretanto, na prtica, o ganho
potencial com a introduo de estgios adicionais no pipeline reduzido pelo aumento do
custo, por atrasos entre estgios e pelo fato de que as instrues de desvio requerem que o
pipeline seja esvaziado.
Um dos maiores problemas do projeto de pipeline assegurar um fluxo constante
de instrues nos estgios iniciais, pois desta maneira ele no se esvaziar. O principal impe-
dimento a isso a existncia das instrues de desvio condicional, que faz com que se tenha
que retirar as instrues do pipeline para colocar outras que correspondam ao ramo do desvio
a ser executado. Antes que a instruo seja realmente executada, impossvel determinar se
o desvio ser executado ou no. Para minimizar este impacto que os processadores tm a
unidade de branch, que procura fazer uma antecipao sobre o ramo a ser executado (FOG,
2003).
O pipeline determinante na execuo dos programas. Anlises de comportamento
de programas mostram que desvios condicionais so tomados em mais de 30% das vezes
(LILJA, 1988), e isto, obviamente, tem um impacto direto sobre o desempenho do pipeline e
por conseqncia tambm sobre o desempenho geral do sistema. O pipeline proporciona um
paralelismo temporal, em funo de que h diversas instrues sendo parcialmente executa-
das, durante o mesmo intervalo de tempo, em cada estgio do pipeline. Este recurso foi
incorporado nas arquiteturas RISC e VLIW em virtude de uma caracterstica marcante na
qual as instrues consomem o mesmo tempo para serem executadas. A durao de tempo
igual para as instrues implica tambm, mas no necessariamente, em um tempo igual nos

48 da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004


EDSON PEDRO FERLIN

estgios. Esta caracterstica crucial para as arquiteturas com pipeline, garantindo que
nenhuma instruo paralise o fluxo, o que resultaria no esvaziamento do pipeline.

2.1.4. Unidade de Branch

Os desvios condicionais so os grandes causadores da degradao do desempe-


nho do computador, principalmente nos computadores com processadores que tem pipeline
em sua arquitetura interna. Segundo Lilja (LILJA, 1988) em anlises de comportamento
de programas mostram que os desvios condicionais so tomados em mais de 30% das
vezes, e isto obviamente tem um impacto direto sobre o pipeline.
Os projetistas adotam nas arquiteturas com pipeline o recurso da unidade de
branch, que realiza uma estatstica em tempo real da probabilidade da ocorrncia de
determinado ramo de execuo (INTEL, 1997). Com isso o processador reduz o nme-
ro de esvaziamentos do pipeline, pois antev o ramo mais provvel de ocorrncia, resul-
tando em um ganho na quantidade de instrues executadas por ciclo de mquina.
Normalmente, as arquiteturas que possuem este recurso necessitam que os pro-
gramas sejam re-ordenados de forma a ter uma instruo vlida, ou seja, que pertena
ao ramo correto de execuo, imediatamente aps a instruo de salto (desvio). Cabe
ressaltar que este processo ocorre de forma transparente para o usurio e gerenciado
pelo prprio processador.

2.1.5. Unidades de Load e Store

As arquiteturas atuais possuem duas unidades especializadas para as operaes


de leitura e escrita na memria principal, denominadas de Load e Store, respectivamente.
Em algumas arquiteturas estas duas unidades so agrupadas em uma nica unidade
denominada de Load/Store.
A unidade de Load a responsvel pela busca das instrues e dados da mem-
ria, enquanto o barramento estiver ocioso, para os registradores internos ou ento para
a memria cach. Uma das vantagens que aproveita a ociosidade do barramento para
antecipar esta busca e outra que possibilita a manuteno do pipeline sempre cheio.
A unidade Store quem realiza a escrita dos dados processados novamente na
memria principal, tambm aproveitando o tempo em que o barramento est ocioso.
O trabalho destas duas unidades favorecido pela largura do barramento de
dados, atualmente de 64bits, que possibilita uma boa taxa de transferncia. Estas duas
unidades funcionais isentam os demais recursos do processador das operaes de leitu-
ra e escrita na memria principal. Estes foram recursos provenientes das arquiteturas
RISC (Reduced Instruction Set Computer), e que foram incorporados tambm nas arquiteturas
VLIW (Ver y Large Instruction Word), garantindo um melhor desempenho destes
processadores.
Uma implicao para o software nas arquiteturas com este tipo de recurso
que a operao de Load sempre atrasada, necessitando coloc-la algumas instrues
antes no cdigo para que consiga buscar as informaes no tempo hbil, ou seja, dentro
do ciclo de mquina.

da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004 49


O AVANO TECNOLGICO DOS PROCESSADORES E SUA UTILIZAO PELO SOFTWARE

2.1.6. Unidade de Gerenciamento da Memria

Os processadores modernos, como o caso do PowerPC 750 (IBM, 1999), po-


dem gerenciar uma grande quantidade de memria, tanto fsica 32bits (4Gbytes) quanto
virtual 52bits (4Pbytes). Desta forma necessrio que o processador tenha uma unida-
de que faa esse processo de translao, dos endereos virtuais em fsicos, de maneira
rpida e sem dispndios de ciclos de mquina adicionais por parte das unidades de
execuo. Com isso, o processador ganha tempo de execuo, sem que seja necessrio o
dispndio de tempo para este processo. Este processo realizado pela unidade de
gerenciamento da memria, denominada em ingls de MMU (Manager Memory Unit), e
possibilita aos computadores, por meio do Sistema Operacional, a utilizao do concei-
to de memria virtual (TANENBAUM, 2001).
Esta unidade importantssima nos processadores, pois a responsvel pelo
gerenciamento das memrias fsica e virtual, controlando o acesso memria cach e
tambm mantendo a coerncia entre os dados presentes na memria principal com a
cach. Ela gerencia a troca de processos na memria (swapping), a partio e paginao
da memria e a memria virtual (STALLINGS, 2002).
O gerenciamento eficiente da memria vital para computadores com
multiprogramao, garante que diferentes processos estejam na memria ao mesmo tempo
e preservando a isonomia entre eles.

2.1.7. Unidade Dispach

A unidade Dispach um dos pontos-chave da arquitetura VLIW (PHILIPS,


2003). Ela a responsvel pelo envio das instrues para as respectivas unidades funci-
onais, com base no gabarito de instrues. Este gabarito contm as instrues que po-
dem ser executadas simultaneamente pelo processador em suas unidades internas, e
montado pelo compilador, durante a compilao do programa.
Esta unidade posicionada no centro lgico da arquitetura e deve possuir uma
inteligncia suficiente para a tomada das decises sobre o escalonamento das instrues
nas respectivas unidades funcionais, na medida em que estas unidades ficarem ociosas.
Contudo, nem sempre todas as unidades estaro em operao ao mesmo tempo, pois
dependente do algoritmo, ento o gabarito no ser preenchido por completo e na posi-
o vaga ser colocada instruo NOP (No-OPeration). Esta instruo no interfere no
processamento, apenas consome ciclos de mquina. Como conseqncia, o compilador
para este tipo de processador deve possuir uma inteligncia e um conhecimento a res-
peito da arquitetura suficiente para efetuar o preenchimento do gabarito, aproveitando
ao mximo os recursos da arquitetura VLIW. Em caso contrrio o cdigo no fornecer
as condies para se alcanar um bom desempenho, como o caso do paralelismo
interno disponvel neste tipo de arquitetura.
A unidade de dispach s escalona as instrues que estiverem explicitadas no
gabarito. Desta forma, os softwares que no estiverem preparados com esta configura-
o, no apresentaro o melhor desempenho.

50 da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004


EDSON PEDRO FERLIN

2.1.8. Superescalar

Um processador superescalar aquele no qual so usadas vrias instrues


independentes (IBM, 1999). Cada pipeline tem diversos estgios, podendo manipular vrias instrues
a cada instante. O uso de vrios pipelines introduz um novo nvel de paralelismo, possibilitan-
do executar diversos ramos de instruo de cada vez. Um processador superescalar explora
o que conhecido como paralelismo no nvel de instrues, que diz respeito o nvel em que
instrues de um programa podem ser executadas em paralelo internamente nas unidades
funcionais.
Um processador superescalar busca tipicamente vrias instrues de cada vez, e
tenta encontrar instrues que sejam independentes umas das outras e que possam, portan-
to, serem executadas em paralelo.
O paralelismo no nvel de instrues existe quando as instrues de uma seqncia
so independentes e podem, portanto, ser executadas em paralelo, por sobreposio. O grau
de paralelismo no nvel de instrues determinado pela freqncia com que ocorrem as
dependncias de dados verdadeiras e de desvio (STALLINGS, 2002). Esses fatores, por sua
vez, so dependentes da aplicao e da arquitetura do conjunto de instrues (ISA Instruction
Set Architecture) do processador.
O paralelismo de mquina uma medida da capacidade do processador em apro-
veitar o paralelismo no nvel de instrues. O paralelismo de mquina determinado pelo
nmero de instrues que podem ser buscadas e executadas ao mesmo tempo (nmero de
pipelines paralelos) e pela velocidade e eficcia dos mecanismos usados pelo processador para
identificar instrues independentes. Tanto o paralelismo no nvel de instrues quanto o
paralelismo de mquina so fatores importantes para melhoria do desempenho. Um progra-
ma pode no ter paralelismo no nvel de instrues em grau suficiente para tirar total provei-
to do paralelismo de mquina. Contudo, o uso de uma arquitetura com um conjunto de
instrues de tamanho fixo, como em computadores com arquiteturas RISC, se observa o
aumento do paralelismo no nvel de instrues. Por outro lado, um paralelismo de mquina
limitado restringe o desempenho, qualquer que seja o programa.
A abordagem superescalar depende da habilidade de executar vrias instrues em
paralelo, por isso diz-se que o paralelismo do nvel de instrues. Este modelo ampla-
mente utilizado nas arquiteturas RISC, VLIW e EPIC (Explicity Parallel Instruction Computing),
pois aproveita a caracterstica das instrues de tamanho fixo e garante um desempenho
superior s arquiteturas CISC (Complex Instruction Set Computer).

2.1.9. Memria Cach

A memria cach utilizada pelos processadores como um repositrio rpido das


informaes durante a execuo dos programas, tanto para as instrues quanto para os
dados (STALLINGS, 2002), reduzindo significativamente o nmero de acessos memria
principal.
A memria cach mais rpida do que a memria principal. Esta diferena entre a
memria cach e a memria principal est no tipo de chips utilizados, pois a memria princi-
pal utiliza clulas de memria dinmica (maior quantidade e mais lenta) enquanto que a
memria cach utiliza clulas estticas (menor quantidade e mais rpida). Isto est atrelado

da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004 51


O AVANO TECNOLGICO DOS PROCESSADORES E SUA UTILIZAO PELO SOFTWARE

ao custo, pois a memria dinmica mais barata que a memria esttica. Alm da clula de
memria ocupar um espao fsico menor, permite uma maior integrao resultando em uma
reduo do espao fsico ocupado pela memria na placa-me contribuindo na reduo do
tamanho dos computadores.
A memria cach um recurso amplamente utilizado nos processadores, pois o
ganho no desempenho significativo e tm feito com que os projetistas de processadores
incorporassem diversos nveis de cach: nvel 1 on-chip - interno ao processador
(instrues e dados), nvel 2 - on-board na placa-me (dados) e nvel 3 slot do processador
(dados).
A forma como os programas so elaborados tambm afeta o funcionamento da
memria cach. Quanto maior o nmero de acessos memria principal, para buscar os
dados que no esto presentes na memria cach, maior ser o dispndio de tempo, e
conseqentemente menor ser o desempenho. Uma soluo a adoo de um nmero
pequeno de variveis e que implicar em uma menor quantidade de posies no cach
utilizadas para este armazenamento.

2.1.10. Execuo Fora de Ordem

O processador deve tambm ser capaz de identificar paralelismo ao nvel de


instrues e coordenar a busca, decodificao e execuo de instrues, em paralelo.
Desta forma, uma das possibilidades de se explorar este paralelismo iniciar e terminar
a execuo das instrues fora de ordem (em ingls Out-of-Order) (HINTON, 2001).
Este recurso permite que o processador execute instrues sem seguir a ordem original
do programa, desde que no ocorra dependncia e conflito entre as instrues.
A execuo fora-de-ordem possibilita um incremento no desempenho, j que a
execuo das instrues necessita de um nmero menor de ciclos de mquina. Entre-
tanto, o software tem que ter um paralelismo que permita que as unidades estejam ao
mximo ocupadas e isso depende da aplicao e tambm do compilador.
Este tipo de execuo de extrema importncia para as mquinas superescalares,
por possibilitar um melhor aproveitamento deste recurso e por conseqncia em um
melhor desempenho.
Este recurso tenta na medida do possvel obter o maior desempenho em uma
arquitetura superescalar, em virtude de executar o maior nmero de instrues por ciclo
de mquina, contornando as dependncias entre instrues do programa. Isto implica
que, independentemente do software, o processador maximiza o desempenho com a
execuo das instrues fora-de-ordem, antecipando as instrues independentes e exe-
cutando-as simultaneamente nas unidades funcionais.

2.1.11. Hyper-Threading

Os estudos preliminares da Intel tm demonstrado que computadores que uti-


lizam a tecnologia Hyper-Threading, que foi incorporada no Pentium 4, obtm um acrs-
cimo de 30% no desempenho quando comparado com um computador que no habilita
esta tecnologia (BARON, 2002). A tecnologia hyper-threading faz com que o processador
consiga trabalhar simultaneamente com mais informaes, aumentando a velocidade de

52 da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004


EDSON PEDRO FERLIN

execuo dos sistemas operacionais e aplicativos


que foram escritos para funcionar com ela. Esta
tecnologia permite que um nico processador fsi-
co consiga executar concorrentemente duas ou
mais seqncias de cdigos diferentes (threads)
(INTEL, 2003), como mostrados na Figura 2.
A Figura 3 mostra dois desenhos nos quais
podemos visualizar um sistema mono processado
com a tecnologia hyper-threading (a) e um sistema
dual tradicional com dois processadores sem hyper-
threading (b). Na Figura 3 percebe-se, claramente,
que no primeiro desenho temos um processador
com hyper-threading tem duas mquinas lgicas IA32
(INTEL, 2003), denominadas de AS(IA32 Figura 2. Comparao entre dois processadores, um sem e outro com

(a) (b)
Figura 3. Comparao de um processador com tecnologia Hyper-Threading (a) e um Sistema dual tradicional (b) (Fonte: Intel)

Architectural State) executando sobre um nico processador fsico. Enquanto, que no


segundo desenho, o sistema tem dois processadores fsicos cada um com uma nica
mquina IA32 lgica.
A prpria Intel confirma que os softwares (sistema operacional e aplicativos)
que forem escritos para funcionar com a tecnologia hyper-threading conseguem um au-
mento no desempenho. Conforme informaes da Intel os novos chips conseguiriam um
aumento de desempenho de aproximadamente 25% com o Windows XP, pois ele j
possibilita a utilizao da tecnologia hyper-
threading (MARTELL, 2002).
As configuraes hyper-threading
necessitam que o chipset e a BIOS (Basic
Input/Output System) utilize esta tecnologia,
e tambm um sistema operacional que in-
clua otimizaes para a tecnologia Hyper-
Threading (Intel, 2003) no seu cdigo, per-
mitindo aproveitar este recurso apropria-
damente.
Figura 4. Ilustrao do Code-Morphing (Fonte: Transmeta)

da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004 53


O AVANO TECNOLGICO DOS PROCESSADORES E SUA UTILIZAO PELO SOFTWARE

2.1.12. Code-Morphing

O Code-Morphing uma camada de software que est entre o processador fsico e a


camada de software, e faz a translao do cdigo x86 para um conjunto de instrues para
a mquina VLIW, que o centro do processador Crusoe da Transmeta (KLAIBER, 2000).
Esta camada de software fica na memria do microprocessador e a translao feita em
tempo de execuo.
Este recurso permite que uma arquitetura VLIW, do processador Crusoe da Transmeta,
consiga executar os programas que esto no cdigo x86, e isto garante a compatibilidade em
termos de software, mas h uma perda de desempenho, mesmo que esta perda seja pequena.
Contudo, este recurso evita o processo de re-compilao dos cdigos para a nova arquitetu-
ra, reduzindo os custos, o tempo deste processo e a independncia do programador.

3. A MEMRIA PRINCIPAL

Analisando a memria principal de um computador tradicional, vemos que


atualmente a placa-me, por exemplo para o Pentium III, suporta fisicamente at 4
pentes DIMM (Dual In-Line Module Memory). Se verificarmos no mercado a maior capa-
cidade dos pentes de memria DIMM, atualmente, de 512Mbytes, logo com os 4
pentes temos a capacidade mxima de 2Gbytes de memria RAM (Random Access Memory)
fsica na placa-me. Contudo o processador Pentium III, por exemplo, suporta 32 bits
de endereos fsicos, alcanando, desta maneira, uma capacidade de 4Gbytes de mem-
ria fsica, que muito alm do mximo disponvel na placa-me.
Se olharmos para a questo software, por exemplo, o sistema operacional que
gerencia a memria, a situao fica ainda pior, pois o Windows 98/ME, por exemplo,
gerencia no mximo 128Mbytes de memria fsica (LOPES, 2001). Neste caso, a placa-
me suporta 2 vezes menos memria, e o sistema operacional gerencia 16 vezes menos,
do que o processador acessa fisicamente. Este fato representa uma sub-utilizao da
potencialidade do processador no que se refere memria.
Isto demonstra que no se est aproveitando a potencialidade do processador.
Neste caso particular da memria isto no crucial, dependendo da quantidade de
memria que o software requer. Na maioria das vezes o usurio tem uma quantidade de
memria superior sua necessidade computacional. Contudo, nas situaes onde a exi-
gncia computacional grande, isto deve ser observado.

4. O COMPILADOR

O compilador um componente de suma importncia, tanto que a prpria


Intel, um dos maiores fabricantes de processadores, inclui um captulo especfico (Chapter
6 Suggestions for chossing a Compiler) (INTEL, 1997), na documentao tcnica dos
processadores, sobre a escolha do compilador, para que se possibilite um melhor apro-
veitamento da arquitetura do processador. Entretanto, a maioria dos programadores
desenvolve seus programas sem observar estes fatores, por utilizarem o compilador da
linguagem que dispem e que no necessariamente o mais apropriado para aquele
computador, para o qual est se desenvolvendo o programa.

54 da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004


EDSON PEDRO FERLIN

Os programas gerados por compiladores diferentes produzem cdigos, normalmen-


te, diferentes e no somente em quantidade de bytes e da seqncia de instrues, mas tambm
em desempenho, isto em decorrncia da lgica intrnseca aos compiladores.
Para que um compilador possa gerar um cdigo executvel com um bom desempenho,
necessrio que o desenvolvedor do compilador domine a arquitetura do processador, para
poder utilizar as instrues e os recursos de maneira apropriada.
Muitos programadores crem que basta digitar o cdigo fonte em uma linguagem,
mandar compilar e tudo acontecer como o previsto, ou seja, o programa estar pronto para
ser executado no computador e tudo funcionando corretamente. Em parte isto verdadeiro,
pois o programa executar, mas no necessariamente aproveitando adequadamente os recur-
sos do processador e do computador. Os processadores podem ser muito diferentes, apesar de
possurem um ncleo comum em termos da arquitetura, como o caso Pentium 4 e o 80486
que possuem o cdigo x86. Isto ocorre com muita freqncia, pois o compilador desenvol-
vido para uma arquitetura ISA (Instruction Set Architecture) (TANENBAUM, 2001) que compe
uma famlia de processadores, como o caso da x86 da Intel, que integra todos os processadores
at o Pentium 4. Contudo, a cada novo processador, temos algumas dezenas de novas instru-
es para possibilitar o acesso aos recursos presentes nos novos processadores.
O termo for Windows aplicado erroneamente. O correto seria dizer que o software
for x86 Intel, em virtude de que o sistema operacional Windows tambm compilado para
o nvel ISA da famlia de processadores x86 da Intel. Se analisarmos os recursos dos processadores
atuais da Intel, como exemplo o Pentium 4, comparativamente com o que havia disponvel no
incio da arquitetura x86, percebe-se que os softwares, compilados para o x86 bsico, aprovei-
tam muito pouco dos recursos atuais, como o caso das unidades MMX (MultiMdia eXtensions)
(INTEL, 1997), SSE (Streaming SIMD Extensions) (INTEL, 2003) e outras. Desta forma, no
estamos utilizando a potencialidade deste processador, em termos de aumento no processamento,
por no utilizar as instrues especificas da arquitetura para esta finalidade.

6. AS MQUINAS PARALELAS

A reduo do custo das mquinas paralelas, tanto as multiprocessadas quanto as


multicomputadoras (clusters), possibilitou a sua utilizao em aplicaes que at pouco tempo
eram pouco provveis, como exemplo nas pequenas empresas, onde o volume de informaes
aumentou muito, exigindo desta forma um maior poder, em termos de capacidade, de
processamento.
Uma realidade atual utilizao das mquinas duais (com dois processadores), e
outra possibilidade a utilizao dos clusters baseados em computadores pessoais. Atualmente
elas no implicam em um custo to elevado de hardware, j que os preos dos computadores
reduziram bastante nos ltimos anos.
Entretanto, o software para estas mquinas no acompanhou esta tendncia, pois no
esto sendo desenvolvidos softwares paralelos, com exceo de alguns especficos como o
caso dos softwares cientficos.
Estes softwares tm um grande interesse por parte da comunidade cientfica em
decorrncia da maior necessidade computacional que os algoritmos cientficos exigem.
Este fato deve mudar nos prximos anos, pois o mercado das mquinas paralelas est em
crescimento e o software dever atender esta nova tendncia. Alm disso, cada vez mais

da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004 55


O AVANO TECNOLGICO DOS PROCESSADORES E SUA UTILIZAO PELO SOFTWARE

necessitamos de poder de processamento que um nico computador no consegue mais


fornecer, tornando esta migrao para o modelo paralelo um caminho certo.

6. O DESEMPENHO

A grande maioria dos usurios substitui o computador antes mesmo de ter consegui-
do aproveitar a potencialidade mxima. Isto ocorre, basicamente, por uma questo de
marketing, pois se cria uma falsa expectativa de que o novo computador ter um desempe-
nho melhor e isto no necessariamente se confirma na prtica. Entretanto, isto verdadeiro
na maioria dos casos, mas pelos motivos errados, pois os softwares continuam os mesmos e
o computador tem um melhor desempenho devido o aumento da freqncia de operao do
processador, alm de outros fatores como o aumento da memria (principal e cach) e etc.
Desta forma, isto acontece sem
um aproveitamento adequado
dos recursos disponveis, e se o
software fosse realmente ade-
quado mquina poderia resul-
tar em um desempenho muito
melhor, sem acarretar em altera-
es no hardware.
Na Figura 5, obtida em
(YOON, 2002), percebe-se cla-
ramente que a performance dos
processadores (CPU-Central
Processing Unit) cresceu a uma
Figura 5. Evoluo da performance nas ltimas duas dcadas. (Fonte: YOON, 2002)
taxa de 55% ao ano, a partir de
1987 at 2000, enquanto que a
memria DRAM (Dynamic
Random Access Memory) atingiu um crescimento de no mximo 7%. Esta diferena atribui-se
aos recursos tecnolgicos incorporados nos processadores em decorrncia da tecnologia de
fabricao VLSI (microeletrnica), fazendo com que se reduzisse significativamente o tama-
nho dos componentes.
Com base no grfico da Figura 5, contata-se que a taxa de crescimento do desempe-
nho dos processadores at o final da dcada de 80 foi de 35% ao ano, sendo basicamente em
decorrncia da tecnologia de fabricao, com equipamentos de maior preciso, novos mate-
riais semicondutores e etc. A partir da dcada de 90 a taxa se elevou para 55%, pois alm da
tecnologia de fabricao, houve tambm um ganho ocasionado pelos novos recursos
computacionais com a alterao da arquitetura dos processadores tanto internas (unidades
funcionais) quanto externas (memrias e barramentos).
Entretanto, os processadores atuais conseguiro obter desempenho ainda melhor, se
o software explorar o paralelismo interno do processador, pois eles so desenvolvidos para
que se explore este recurso computacional, podendo chegar execuo de uma dezena de
instrues por ciclo de mquina.
Com os modernos computadores faz-se necessrio uma melhor interface hardware/
software, para que se consiga alcanar ao mximo o desempenho da arquitetura. Neste

56 da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004


EDSON PEDRO FERLIN

ponto surge um fator determinante que o software, e que ainda a principal influncia na
reduo do desempenho dos sistemas computacionais. Na maioria das vezes ele no est em
concordncia com o hardware, mais especificamente com o processador, no aproveitando
os recursos deles, o que poderia representar um desempenho superior ao que se est obten-
do atualmente.

7. CONCLUSO

Algumas perguntas surgem com base neste artigo e tentaremos respond-las na me-
dida do possvel. Contudo, este trabalho no tem por objetivo ser um roteiro de procedimentos
que esclaream estas dvidas por completo, mas tem o propsito de fomentador de novas
idias e conceitos para podermos tratar com estas questes.
A primeira questo como fazer para que o software se aproxime mais do hardware?
Sabemos que o software est atrelado lgica de quem o implementa, e por este motivo temos
softwares que apesar de fazerem as mesmas tarefas, so implementados por meio de seqncias
de instrues diferentes, pois as pessoas raciocinam com diferentes conhecimentos na soluo
de problemas implicando em uma heterogeneidade em termos do software. Uma das formas
para se reduzir a lacuna entre o hardware e o software ter o cdigo binrio especfico para a
arquitetura, e isto faz com que ele consiga utilizar eficientemente os recursos do computador.
Contudo, para que isto acontea, dois itens so fundamentais: o cdigo aberto e o compilador
prprio para o computador. O primeiro item pode ser superado com a utilizao de programas
no estilo open-source; j o segundo um pouco mais trabalhoso, por no dispormos de tantos
compiladores quanto o nmero de processadores, e, isto j implica em no conseguirmos
extrair o melhor proveito do computador. Este item possvel para desenvolvedores (empre-
sas e programadores) de solues computacionais, mas no vivel para os que no desenvol-
vem softwares, que no dispem de ferramentas e pessoal para esta tarefa de re-escrever e re-
compilar o cdigo.
Outra questo como fazer com que usurios, que utilizam produtos prontos e
empacotados, consigam aproveitar da melhor maneira possvel o computador, obtendo o me-
lhor custo/benefcio, j que eles no conseguem compilar para este computador? Neste caso,
a melhor soluo a utilizao de softwares baixados a partir da base de programas do forne-
cedor, o que possibilita baixar uma verso do software que seja a mais adequada para o compu-
tador. Esta sugesto est baseada na idia de um servidor de software, ou at mesmo que o
software seja atualizado periodicamente, obtendo a verso mais condizente com a arquitetura
do computador. Contudo, no h nenhuma garantia que o desempenho ser ou no melhor,
mas com toda a certeza, os problemas sero minimizados e o poder computacional ser melho-
rado.
Deste fato surge uma outra pergunta: Como saber qual o computador? Para esta
pergunta a resposta simples, pois h diversas maneiras de se obter as informaes sobre o
processador, e uma , por exemplo, utilizando a instruo CPUID (INTEL, 2004) e (AMD,
2002), presente nos computadores IA-32 da Intel e da AMD.
Uma ltima questo como obter um melhor desempenho? Uma das maneiras sim-
ples de se alcanar um melhor desempenho, recompilar os programas para as novas arquiteturas
dos processadores, utilizando-se para isto os compiladores prprios para a arquitetura. Apesar
do mecanismo de compilao ser simples ele no trivial, por no dispormos do programa

da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004 57


O AVANO TECNOLGICO DOS PROCESSADORES E SUA UTILIZAO PELO SOFTWARE

fonte e nem sempre temos o compilador apropriado para o processador do computador de


destino. Desta maneira, estamos merc dos grandes desenvolvedores de software, ou em fun-
o do cdigo dos programas, ou mesmo em decorrncia das verses do software, tanto os
aplicativos quanto o prprio sistema operacional.
Todos os softwares so influenciados pelo hardware, mais precisamente pelo processador,
e por sua vez influenciam o desempenho dos computadores. Quando se aborda o termo
software preciso ter em mente que abordamos os programas aplicativos, sistema operacional
e o firmware (BIOS). Os softwares so influenciados na medida em que devem ser escritos
para uma arquitetura, com base nas instrues (nvel ISA) do processador, acessando os
recursos tecnolgicos disponveis. Por outro lado, o software influencia o desempenho na
medida em que pode limit-lo, devido a no utilizao de forma eficiente dos recursos das
arquiteturas dos processadores. Com isso, o melhor desempenho est atrelado a uma tima
configurao do hardware e o software compatvel com esta arquitetura, mais precisamente
com o processador. Salienta-se que tanto o hardware quanto o software dependem forte-
mente da aplicao e da quantidade de recursos necessrios para a execuo da tarefa, e est
ligado com a maneira como se desenvolve a programao do computador por parte do
programador.

AGRADECIMENTOS
Os mais sinceros agradecimentos ao Prof. Marcos Augusto Hochuli Shmeil pela
reviso e valiosa contribuio neste trabalho.

58 da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004


EDSON PEDRO FERLIN

REFERNCIAS BIBLIOGRFICAS
AMD Corporation. Processor recognition. 20734. November 2002.

BARON, Max. Technolog y 2001 On a Clear Day You Can See Forever.
Microprocessor Report. Microdesign Resourses. Feb. 25, 2002.

ENDERLEIN, Rolf. Microeletrnica. So Paulo: EDUSP, 1994.

FOG, Agner. Branch prediction in the pentium family. Dr. Dobbs Journal. 2003.

HINTON, Glenn et al. The microarchitecture of the pentium 4 processor. Intel


Technology Journal, Q1, 2001.

HYDE, Randall. The art of assembly language. No Starch Press. 2003.

IBM Corporation. PowerPC 740/750: RISC microprocessador users manual. 1999.

INTEL Corporation. Intel architecture optimization manual. Order 2422816-003.


1997.

INTEL Corporation. IA-32 Intel architecture softwares developers manual. Volu-


me 1: Basic Architecture. 2003.

INTEL Corporation. Intel processor identification and the CPUID instruction.


241618-025. 2004.

KLAIBER, Alexander. The tecnolog y behind cr usoe processor. Transmeta


Corporation. January 2000.

LILJA, DAVID. Reducing the branch penality in pipelined processors. Computer, Jul.
1988.

LOPES, Airton et al. 65 macetes para ganhar velociadade. Info Exame. Edio 189, de-
zembro 2001.

MARTELL, Duncan. Intel antecipa novas tecnologias para chips. Disponvel em:
<http://cgi2.uol.com.br/cgi-bin/info/print.cgi > acesso em: 10/09/2002.

PATTERSON, David A. & Hennessy, John L. Organizao e projeto de computado-


res: a interface hardware/software. 2. ed. Rio de Janeiro: LTC, 2000.

PHILIPS Semiconductors. Introduction to VLIW computer architecture. 9397-750-


01759. Disponvel em: <www.semiconductors.philips.com/acrobat/other/vliw-wp.pdf>
Acesso em: 2003.

da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004 59


O AVANO TECNOLGICO DOS PROCESSADORES E SUA UTILIZAO PELO SOFTWARE

STALLINGS, Willian. Arquitetura e organizao de computadores. 5. ed. So Paulo:


Prentice Hall, 2002.

TANENBAUM, Andrew S. Organizao estruturada de computadores. 4. ed. Rio de


Janeiro: LTC, 2001.

YOON, Hyunsoo. CS510: computer architectures. Lecture. Mensagem recebida por:


<hyoon@cs.kaist.ac.kr> em: 2002.

60 da Vinci , Curitiba, v. 1 , n. 1, p. 43-60, 2004