Vous êtes sur la page 1sur 17

AMD 3DNow!

Katharina Carrapatoso Garcia Welington Manuel da Silva Orientao: Prof. Dr. Jos Fernando Rodrigues Jnior

O objetivo deste trabalho fornecer informaes sobre a tecnologia 3DNow!, apresentando principalmente suas caractersticas tcnicas.

UFSCar - Sorocaba Junho/2009

AMD 3DNow!

ndice
1. Introduo ................................................................................................................... 3 2. A tecnologia 3DNow! .................................................................................................. 3 3. Deteco de suporte .................................................................................................... 4 4. Conjunto de registradores ......................................................................................... 5 5. Tipos de dados............................................................................................................. 6 6. Formato das instrues .............................................................................................. 7 7. Padro Tecnolgico .................................................................................................... 8 8. Interrupo de tarefas ................................................................................................ 8 9. Excees ..................................................................................................................... 10 10. Conjunto de instrues 3DNow! ............................................................................ 11 11. Consideraes Finais .............................................................................................. 17 12. Bibliografia .............................................................................................................. 17

Junho de 2009

UFSCar Sorocaba

AMD 3DNow!

1. Introduo
O AMD1 3DNow! foi uma inovao significativa, para a arquitetura x86, voltada para multimdia. Lanado em 1998, com o K6-2, ele acrescentou mais instrues ao conjunto de instrues x86, melhorando o processamento vetorial de muitas aplicaes grficas. Com a tecnologia 3DNow! os nveis de realismo e performance foram potencializados, permitindo melhorias como maior velocidade nos quadros de cenas de alta resoluo, melhor qualidade na modelagem de ambientes reais, aperfeioamento e melhor detalhamento de imagens 3D, melhor execuo de vdeo e qualidade de udio prxima a de cinema. Implementada com a colaborao de desenvolvedores de software

independentes, a tecnologia compatvel com a micro arquitetura x86, no requer um sistema operacional especfico e est presente nos processadores: AMD-K6-2, AMDK6-III, e AMD Athlon.

2. A tecnologia 3DNow!
O 3DNow! baseado no conjunto de instrues MMX 2, porm, seu diferencial que ele consegue realizar operaes tanto com nmeros inteiros quanto com ponto flutuantes. Esta tecnologia surgiu para resolver os gargalos existentes nas aplicaes grficas (3D): operaes com ponto flutuante. O problema que existe hoje que as aplicaes 3D so limitadas, pois s existe uma unidade de execuo de ponto flutuante na maioria dos processadores x86. Os aplicativos que utilizam grficos 3D realizam muitos clculos com ponto flutuante e,

AMD (Advanced Micro Devices) Turion)


2

fabricante de circuitos integrados, principalmente processadores. (x86, Athlon,

MMX

tecnologia desenvolvida pela Intel utilizando a execuo SIMD, que realiza operaes com valores inteiros

de 8, 16 e 32 bits em grupos de 64 bits. voltado para o processamento de multimdia.

Junho de 2009

UFSCar Sorocaba

AMD 3DNow!

portanto, se o processador no tiver suporte para otimizar estas operaes, as funcionalidades e caractersticas da aplicao ficam limitadas. a implementao do SIMD3 que determina o desempenho das instrues 3DNow!. Utilizando o SIMD a micro arquitetura do processador pode executar at duas instrues 3DNow! por ciclo de clock em dois pipelines do registrador de execuo, resultando em quatro operaes com ponto flutuante por ciclo de clock. Alm disso, no necessrio alternar entre instrues MMX e 3DNow! j que os dois utilizam os mesmos registradores de ponto flutuante.

3. Deteco de suporte
A tecnologia AMD 3D Now! Possui instrues CPUID que identificam as caractersticas do processador, e que permitem verificar se este d suporte tecnologia. A presena destas instrues determinada pelo bit 21 do registrador EFLAGS. Se a edio deste bit for permitida as instrues so suportadas. A figura 1 apresenta um cdigo que mostra como verificar a presena de instrues CPUID.

Figura 1 Teste de verificao de presena de instrues CPUID

SIMD (Single Instruction, Multiple Data - fluxo nico de instrues e mltiplo de dados.)

Opera mltiplos conjuntos de dados, aplicando a mesma instruo a todos eles ( Processamento paralelo)

Junho de 2009

UFSCar Sorocaba

AMD 3DNow!

Antes de verificar o suporte s instrues AMD 3DNow! Deve-se averiguar se o tamanho de entrada pode ser maior que 8000_0000h, isto indica que funes adicionais podem ser executadas. A figura 2 mostra um cdigo que testa a existncia da funo 8000_0001h. Em caso afirmativo executa-se a funo 8000_0001h. Se o bit 31 do registrador EDX for 1, ento finalmente saberemos que as instrues do AMD 3DNow! so suportadas. A figura 3 mostra um cdigo que testa o suporte s instrues 3DNow!.

Figura 2 Teste de verificao de presena de funo 8000_0001h

Figura 3 Teste de verificao de suporte s instrues 3DNow!

4. Conjunto de registradores
O 3DNow! combina a tecnologia MMX, com as suas novas instrues, contendo inteiros, ponto flutuantes e MMX. Como temos um mix de tecnologias no h perda de desempenho na transio entre inteiros e ponto flutuantes. So implementados oito registradores 64bit (Figura 4) que so mapeados sobre a pilha de registradores de ponto flutuantes. Isto possibilita que o estado de um registrador seja salvo caso ocorra a interrupo de tarefas.

Junho de 2009

UFSCar Sorocaba

AMD 3DNow!

Figura 4 Registradores 3DNow! / MMX

Esta implementao tambm faz com que alteraes nos Sistemas Operacionais no sejam necessrias, pois podem ser implementados por DLLs (Dinamic Link Library), drivers ou bibliotecas MMX e 3DNow!. Os sistemas operacionais atuais j suportam operaes e estado de registrador de ponto flutuante. Sempre que o processador executa uma instruo 3DNow! ou MMX os bits de rtulo dos registradores de ponto flutuante so setados para 0, a menos das instrues FEMMS e EMMS, nas quais todos os bits so setados para 1 (112 = vazio).

5. Tipos de dados
A tecnologia 3DNow! utiliza o formato de dados empacotados. O dado empacotado em um nico registrador de 64bit 3DNow!/MMX ou um espao de memria equivalente a uma quadword (4 x 16 = 64 bits). A figura 5 mostra o formato ponto flutuante 3DNow!, onde D0 e D1 so doublewords ponto flutuante, 32bit preciso simples (IEEE).

Figura 5 Tipo de dado 3DNow!

Junho de 2009

UFSCar Sorocaba

AMD 3DNow!

A figura 6 mostra o formato ponto flutuante IEEE, 32bit preciso simples.

Figura 6 Formato de dado ponto flutuante, preciso simples.

A figura 7 mostra os formatos do tipo inteiro.

Figura 7 Formatos do tipo inteiro.

6. Formato das instrues


O formato das instrues baseada no formato x86 modR/M que similar ao utilizado nas instrues MMX. A sintaxe em assembly apresentada a seguir: 3DNow! Mnemnico mmreg(nmero) mem64 mmreg1, mmreg2/mem64 registrador MMX (mm0 valor de memria de 64bit mm7)

Junho de 2009

UFSCar Sorocaba

AMD 3DNow!

Para codificar utilizamos o prefixo 0Fh seguido do opcode 0Fh. E um sufixo utilizado para diferenciar as vrias instrues do 3DNow!. O formato apresentado a seguir: 0Fh 0Fh modR/M [sib] [displacement] 3DNow!_suffix Os operandos mencionados anteriormente (mmreg1, mmreg2/mem64) so codificados em modR/M [sib] [displacement]. J o sufixo 3DNow!_suffix alterado dependendo da instruo que temos. Para exemplificar, a figura 8 mostra os opcodes que a instruo 3DNow! PFMUL pode produzir

Figura 8 Formatos do tipo inteiro.

7. Padro Tecnolgico
O formato ponto flutuante preciso simples 3DNow! compatvel com o formato preciso simples IEEE-754 e compreende um bit sinal, 8 bits de expoente e 24 de preciso sendo que um representa um inteiro oculto. O expoente de base 127, igual ao padro IEEE de preciso simples. Ao contrrio do padro IEEE que define quatro modos de arredondamento, a tecnologia 3DNow! suporta apenas um modo; ou arredonda ao mais prximo ou a zero (truncamento). A implementao em hardware da tecnologia que determina o modo de arredondamento. Quando instrues de converso so executadas sempre utilizado o modo truncamento independente do modo determinado pelo hardware.

8. Interrupo de tarefas
As instrues 3DNow! so tratadas da mesma forma que as instrues MMX. Quando um programa escrito utilizando os recursos desta tecnologia, deve-se saber se o Sistema Operacional salva o estado atual antes de interromper uma tarefa, ou se o prprio programa 3DNow! dever conter as instrues para faz-lo.

Junho de 2009

UFSCar Sorocaba

AMD 3DNow!

Se a interrupo de tarefas ocorre, o bit Task Switch (TS) do Registrador de Controle (CR0) setado para 1. Uma exceo gerada 7: Dispositivo no disponvel

para que quando, na prxima instruo (MMX ou 3dNow!) o processador permita que o Sistema Operacional salve o estado dos registradores 3DNow!/MMX/FP (FP: Floating point). Tratando-se de Sistemas Operacionais multitarefa, se uma troca de tarefas feita durante a execuo de aplicaes 3DNow!/MMX rodando com aplicaes antigas que no incluam instrues MMX, o estado do registrador MMX/FP tambm salvo automaticamente da mesma forma como descrito acima.

Junho de 2009

UFSCar Sorocaba

AMD 3DNow!

9. Excees
R V P Real Virtual 8086 Protected

Tabela 1 Instrues de exceo 3DNow! E MMX Exceo 1. Opcode Invlido (6) R X V X P X Descrio O bit de instruo MMX emulada (EM) do registrador de controle (CR0) est setado para 1. 2. Dispositivo no disponvel (7) X X X Salva o estado MMX ou ponto flutuante se o bit de interrupo de tarefa (TS) do registrador de controle (CR0) estiver setado para 1. 3. Exceo ponto flutuante pendente (16) 4. Exceo de pilha (12) 5. Proteo geral (13) X X X X X X X Uma exceo est pendente devido unidade de execuo ponto flutuante. Durante a execuo o limite da pilha foi excedido Durante a execuo, o endereo a ser usado pelo registrador um local de memria ilegal. 6. Erro de pgina (14) X X Um erro de pgina ocorreu por causa da execuo da instruo 7. Verificao de alinhamento (17) X X Ocorreu uma referncia desalinhada memria devido a execuo de uma instruo e o bit de mscara de alinhamento (AM) do registrador de controle (CR0) est setado para 1. 8. Sobreposio de segmentos (13) X X Um dos operandos da instruo acaba fora do intervalo de endereo 00000h e 0FFFFh

Junho de 2009

10

UFSCar Sorocaba

AMD 3DNow!

10. Conjunto de instrues 3DNow!


FEMMS

Mnemnico FEMMS

Opcode/imm8 0F 0Eh

Descrio Entrada/Sada rpida do estado MMX ou ponto flutuante

Privilgio Registradores afetados Flags afetadas

Nenhum MMX Nenhum

Excees geradas

1, 2, 3

Esta instruo utilizada para limpar o estado do registrador, aps uma seqncia de instrues MMX, para que instrues de ponto flutuante sejam executadas.

PAVGUSB

Mnemnico PAVGUSB

Opcode/imm8 mmreg1, 0F 0Fh BFh

Descrio Mdia de valores sem sinal em pacotes de 8bit

mmreg2/mem64

Privilgio Registradores afetados Flags afetadas

Nenhum MMX Nenhum

Excees geradas

1, 2, 3, 4, 5, 6, 7, 8

Esta instruo gera os valores mdios aproximados de valores inteiros de 8bit na fonte e os valores correspondentes do destino. Ela utilizada para ajustar os pixels em compensao de vdeo MPEG-2 e operaes de ajuste de vdeo.

Junho de 2009

11

UFSCar Sorocaba

AMD 3DNow! PFRCPIT1

Mnemnico PFRCPIT1

Opcode/imm8 mmreg1, 0F 0Fh/ 96h

Descrio Recproca de ponto flutuante empacotado, passo 1.

mmreg2/mem64

Privilgio Registradores afetados Flags afetadas

Nenhum MMX Nenhum

Excees geradas

1, 2, 3, 4, 5, 6, 7, 8

Esta uma instruo vetorial que executa o primeiro passo na iterao Newton-Raphson para refinar a preciso da aproximao recproca calculada pela instruo PFRCP (O passo final da iterao que completa os 24-bits de preciso). Utiliza-se como operandos a entrada e a sada da mesma instruo PFRCP.

PFRCPIT2

Mnemnico PFRCPIT2

Opcode/imm8 mmreg1, 0F 0Fh/ B6h

Descrio Recproca de ponto flutuante empacotado, passo 2.

mmreg2/mem64

Privilgio Registradores afetados Flags afetadas

Nenhum MMX Nenhum

Excees geradas

1, 2, 3, 4, 5, 6, 7, 8

Esta uma instruo vetorial que executa o segundo (e ltimo) passo na iterao Newton-Raphson, com o intuito de aumentar a preciso do clculo da aproximao da recproca ou da raiz quadrada da recproca produzida, respectivamente, pelas instrues PFRCP e PFSQRT.

Junho de 2009

12

UFSCar Sorocaba

AMD 3DNow!

A instruo PFRCPIT2 s definida quando seu operando mmreg1 o resultado obtido das instrues PFRCPIT1 ou PFRSQIT1, e mmreg2/mem64 o resultado obtido das instrues PFRCP ou PFRSQRT.

PFRSQIT1

Mnemnico PFRSQIT1

Opcode/imm8 mmreg1, 0F 0Fh/ A7h

Descrio Raiz quadrada da recproca de ponto flutuante empacotado, passo 1.

mmreg2/mem64

Privilgio Registradores afetados Flags afetadas

Nenhum MMX Nenhum

Excees geradas

1, 2, 3, 4, 5, 6, 7, 8

Esta uma instruo vetorial que implementa o primeiro passo na iterao NewtonRaphson para refinar a aproximao da recproca da raiz quadrada produzida pela instruo PFSQRT (O segundo passo completar a preciso de 24-bits). Como argumentos, exige-se que um seja a entrada utilizada na instruo PFRSQRT e o outro seja o quadrado da sada da mesma instruo.

PFRSQRT

Mnemnico PFRSQRT

Opcode/imm8 mmreg1, 0F 0Fh/ 97h

Descrio Aproximao da recproca da raiz quadrada de ponto flutuante.

mmreg2/mem64

Privilgio Registradores afetados Flags afetadas

Nenhum MMX Nenhum

Junho de 2009

13

UFSCar Sorocaba

AMD 3DNow!

Excees geradas

1, 2, 3, 4, 5, 6, 7, 8

Esta uma instruo escalar que retorna o clculo de baixa preciso da recproca da raiz quadrada do operando mmreg2 O nico resultado (32-bits) duplicado nas duas metades de mmreg1 (totalizando 64bits). O operando fonte (mmreg2) um ponto flutuante de preciso simples com 24-bits de preciso (dos quais 15 so efetivamente usados). Quanto ao clculo da recproca da raiz quadrada operandos negativos so tratados como positivos, sendo que o sinal do operando aplicado novamente ao resultado. Aumentar a preciso para preencher os 24-bits, exige o uso das instrues adicionais PFRSQIT1 e PFRCPIT2.
PFSUB

Mnemnico PFSUB

Opcode/imm8 mmreg1, 0F 0Fh/ 9Ah

Descrio Subtrao de pontos flutuante empacotados.

mmreg2/mem64

Privilgio Registradores afetados Flags afetadas

Nenhum MMX Nenhum

Excees geradas

1, 2, 3, 4, 5, 6, 7, 8

Esta uma instruo vetorial que implementa a operao de subtrao entre mmreg1 e mmreg2/mem64 armazenando a diferena em mmreg1. Os dois operando so de preciso simples, sendo 24-bits de preciso.

Junho de 2009

14

UFSCar Sorocaba

AMD 3DNow! PFSUBR

Mnemnico PFSUBR

Opcode/imm8 mmreg1, 0F 0Fh/ AAh

Descrio Subtrao reversa de pontos flutuante

mmreg2/mem64

empacotados.

Privilgio Registradores afetados Flags afetadas

Nenhum MMX Nenhum

Excees geradas

1, 2, 3, 4, 5, 6, 7, 8

uma instruo vetorial que implementa a operao de subtrao entre mmreg2/mem64 e mmreg1 armazenando a diferena em mmreg1. Os dois operando so de preciso simples, sendo 24-bits de preciso.

PI2FD

Mnemnico PI2FD

Opcode/imm8 mmreg1, 0F 0Fh/ 0Dh

Descrio Converso de inteiro (32-bits) para ponto flutuante.

mmreg2/mem64

Privilgio Registradores afetados Flags afetadas

Nenhum MMX Nenhum

Excees geradas

1, 2, 3, 4, 5, 6, 7, 8

Esta uma instruo vetorial que converte um vetor de registradores contendo inteiros, 32-bits com sinal, para ponto flutuante, preciso simples. Quando a preciso do resultado da converso for maior que a suportada, a sada truncada.

Junho de 2009

15

UFSCar Sorocaba

AMD 3DNow! PMULHRW

Mnemnico PMULHRW mmreg1, mmreg2/mem64

Opcode/imm8 0F 0Fh/ B7h

Descrio Multiplicao de valores 16-bits com sinal empacotados armazenamento. com arredondamento e

Privilgio Registradores afetados Flags afetadas

Nenhum MMX Nenhum

Excees geradas

1, 2, 3, 4, 5, 6, 7, 8

Esta instruo multiplica 4 valores inteiros, 16-bits com sinal, que esto em mmreg2/mem64, pelos 4 valores inteiros, 16-bits com sinal, que esto em mmreg1, adiciona 8000h aos 16-bits menos significativos (de cada resultado de 32-bits) e desta soma retira-se os 16-bits mais significativos (incluindo o bit de sinal), que sero armazenados. O produto resultante mais preciso (numericamente) do que se fosse utilizada a instruo PMULMH, que ao invs de arredondar o resultado, trunca-o.

PREFETCH / PREFETCHW

Mnemnico PREFETCH (W) mem8

Opcode 0F 0Dh

Descrio Traz antecipadamente um dado para o nvel 1 da cache.

Privilgio Registradores afetados Flags afetadas

Nenhum Nenhum Nenhum

Excees geradas

Nenhuma

Junho de 2009

16

UFSCar Sorocaba

AMD 3DNow!

Esta instruo l a linha, indicada pelo endereo de mem8, da cache do processador para a cache de dados. A leitura executada mesmo se o endereo mem8 no estiver alinha do com o incio da linh ocorrer, ou seja, o linha j se

encontra no Data cache (Nvel 1 do Cache) ou algum erro de memria detectado, esta instruo tratada como um NOP. Nas aplicaes em que um grande conjunto de dados tem de ser processado, esta instruo permite que o prximo conjunto de dados seja carregado para o Data cache enquanto o processado opera sobre os dados atuais, assim quando este processamento foi concludo o prximo conjunto de dados j estar disponvel. Alm disso, o programador pode explicitar no cdigo onde haver concorrncia de operaes. Um bom exemplo de operao concorrente o processamento de vrtices em transformaes 3D, onde, enquanto o conjunto atual de vrtices transformado, o prximo conjunto pode ser carregado Data cache

Quanto ao uso, PREFETCHW possui a mesma funcionalidade que PREFECTH, mas indicada para quando se sabe que a linha da cache ser modificada.

11. Consideraes Finais


A tecnologia 3DNow! conseguiu expandir consideravelmente a performance dos processadores, especialmente tratando-se de processamento grfico e multimdia. Ela no s acelera os jogos em 3D, como aprimora o software de produtividade, visualizadores CAD/CAE, processamento de udio 3D, software de reconhecimento da fala, software de imagens 3D, modems por software, DVD por software, reproduo de vdeo MPEG2 e AC-3. Alm de extrapolar os limites impostos pela maioria dos mais avanados processadores da micro arquitetura x86, capaz de proporcionar um front end com alto nvel de realismo graas s suas funcionalidades.

12. Bibliografia
www.wikipedia.org h p://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/21928.pdf h ps://wwwsecure.amd.com/brpt/Processors/TechnicalResources/0,,30_182_861_1028,00.html#41245

Junho de 2009

17

UFSCar Sorocaba

Vous aimerez peut-être aussi