Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
1. INTRODUO
2. OS PROCESSADORES
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.
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.
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
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.8. Superescalar
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.11. Hyper-Threading
(a) (b)
Figura 3. Comparao de um processador com tecnologia Hyper-Threading (a) e um Sistema dual tradicional (b) (Fonte: Intel)
2.1.12. Code-Morphing
3. A MEMRIA PRINCIPAL
4. O COMPILADOR
6. AS MQUINAS PARALELAS
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
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
AGRADECIMENTOS
Os mais sinceros agradecimentos ao Prof. Marcos Augusto Hochuli Shmeil pela
reviso e valiosa contribuio neste trabalho.
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.
FOG, Agner. Branch prediction in the pentium family. Dr. Dobbs Journal. 2003.
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.