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 aproveitar 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 influenciados pelos fatores mercadolgicos e que implicam em uma limitao no desempenho dos computadores, em virtude da utilizao de softwares obsoletos que no utilizam adequadamente 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 compreender 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 computadores, 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 Integrado) 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 elaborada com base na lgica do programador. Contudo nem sempre o compilador consegue aproveitar as melhores instrues do conjunto de instrues disponveis para aquele determinado 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 programao. 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 possibilitar 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 recurso, 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 envolvem 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 impedimento 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 executadas, 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 desempenho 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 nmero de esvaziamentos do pipeline, pois antev o ramo mais provvel de ocorrncia, resultando em um ganho na quantidade de instrues executadas por ciclo de mquina. Normalmente, as arquiteturas que possuem este recurso necessitam que os programas 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 memria, 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 leitura 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), podem gerenciar uma grande quantidade de memria, tanto fsica 32bits (4Gbytes) quanto virtual 52bits (4Pbytes). Desta forma necessrio que o processador tenha uma unidade 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 conceito 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 funcionais, com base no gabarito de instrues. Este gabarito contm as instrues que podem 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 posio 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 respeito 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 configurao, 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, possibilitando 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, portanto, 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 aproveitar 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 programa pode no ter paralelismo no nvel de instrues em grau suficiente para tirar total proveito 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 amplamente 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 principal 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. Entretanto, 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 executando-as simultaneamente nas unidades funcionais. 2.1.11. Hyper-Threading Os estudos preliminares da Intel tm demonstrado que computadores que utilizam a tecnologia Hyper-Threading, que foi incorporada no Pentium 4, obtm um acrscimo 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 fsico 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 hyperthreading (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 aumento 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 hyperthreading (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 inclua otimizaes para a tecnologia HyperThreading (Intel, 2003) no seu cdigo, permitindo aproveitar este recurso apropriadamente.
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 arquitetura, 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 capacidade 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 memria 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 placame 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 exigncia 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 aproveitamento 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, normalmente, 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 recursos 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 desenvolvido 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 instrues 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, aproveitam 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 conseguido 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 desempenho 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 adequado mquina poderia resultar em um desempenho muito melhor, sem acarretar em alteraes no hardware. Na Figura 5, obtida em (YOON, 2002), percebe-se claramente que a performance dos processadores (CPU- Central Processing Unit ) cresceu a uma taxa de 55% ao ano, a partir de Figura 5. Evoluo da performance nas ltimas duas dcadas. (Fonte: YOON, 2002) 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 tamanho dos componentes. Com base no grfico da Figura 5, contata-se que a taxa de crescimento do desempenho 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 materiais 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 obtendo atualmente. 7. CONCLUSO Algumas perguntas surgem com base neste artigo e tentaremos respond-las na medida 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 (empresas e programadores) de solues computacionais, mas no vivel para os que no desenvolvem softwares, que no dispem de ferramentas e pessoal para esta tarefa de re-escrever e recompilar 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 melhor 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 fornecedor, o que possibilita baixar uma verso do software que seja a mais adequada para o computador. 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 melhorado. 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 simples 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 funo 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 fortemente 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. Volume 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, dezembro 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 computadores: a interface hardware/software. 2. ed. Rio de Janeiro: LTC, 2000. PHILIPS Semiconductors. Introduction to VLIW computer architecture. 9397-75001759. 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

Você também pode gostar