P. 1
processadores_multimídia

processadores_multimídia

|Views: 23|Likes:
Publicado porfabioamc

More info:

Published by: fabioamc on Aug 18, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

08/18/2010

pdf

text

original

Conjunto de instrucoes Multim´dia em Processadores de ¸˜ ı ´ Proposito Geral

Fabio Augusto Menocci Cappabianco ´
Universidade Estadual de Campinas Caixa Postal 6176, 13084-971 Campinas, SP - BRASIL Campinas-SP, Brasil

fabioamc@ic.unicamp.br ABSTRACT
Nos ultimos anos, os microprocessadores receberam um novo ´ impulso de aplica¸oes multim´ c˜ ıdia, como audio, v´ ´ ıdeo e gr´ficos a 3D. Tornou-se necess´rio obter maior desempenho e um trataa mento mais espec´ ıfico da parte de processadores de prop´sito o geral. Este trabalho ´ um survey a respeito de instru¸oes e c˜ multim´ ıdia em microprocessadores de prop´sito geral. S˜o o a apresentados um hist´rico da computa¸ao multim´ o c˜ ıdia, as principais arquiteturas desenvolvidas, uma descri¸ao das inc˜ stru¸oes mais comuns e uma compara¸ao de desempenho c˜ c˜ entre arquiteturas. Tamb´m s˜o abrangidos os principais e a problemas e dificuldades encontrados na programa¸ao com c˜ instru¸oes multim´ c˜ ıdia e algumas poss´ ıveis solu¸oes e melhoc˜ ras. tim´ ıdia. Na d´cada passada, por exemplo, enquanto prograe mas comuns utilizavam dados de 32 e 64 bits, aplica¸oes de c˜ audio e v´ ´ ıdeo processavam dados de 8 e 16 bits [22, 21]. Al´m disso, algumas destas aplica¸oes s˜o preponderantee c˜ a mente seq¨enciais. Portanto, foi fundamental tirar maior u proveito de paralelismo com estruturas especializadas para decodifica¸ao de instru¸oes e para a mem´ria. c˜ c˜ o As solu¸oes mais utilizadas atualmente s˜o de sistemas emc˜ a barcados especializados, para uma determinada aplica¸ao c˜ multim´ ıdia, com baixo custo e baixo consumo de energia, e processadores de prop´sito geral como PC’s para solu¸oes o c˜ gen´ricas que ser˜o enfocados neste artigo. e a A se¸ao 2 cont´m uma breve revis˜o hist´rica do processac˜ e a o mento multim´ ıdia. A se¸ao 3 descreve os principais conjunc˜ tos de instru¸ao para processadores de prop´sito geral, na c˜ o se¸ao 4, encontra-se uma descri¸ao das principais instru¸oes c˜ c˜ c˜ fornecidas pelos fabricantes e, por fim, a se¸ao ?? conclui o c˜ trabalho.

Categories and Subject Descriptors
H.5.1 [Information Systems]: Multimedia information systems; C.1.2 [Processor Architectures]: Multiple data Stream Architectures, SIMD; C.4 [Performance of Systems]

General Terms
Design Studies Performance

2.

´ HISTORICO DO PROCESSAMENTO MUL´ TIMIDIA

Keywords
MMX, SSE, 3DNow!, AltiVec, MDMX, VIS, VMX, multimedia, architecture, parallel, SIMD

O processamento multim´ ıdia por computadores tem atualmente aplica¸oes em diversas arquiteturas. c˜ A arquitetura DSP, que ainda ´ bastante utilizada, remonta e de 1980. Ela baseava-se em um pipeline formado por um multiplicador acoplado a uma ALU convencional. Assim, podia realizar opera¸oes do tipo MAC (multiply-and-accumulate) c˜ em paralelo. Por apresentar esta propriedade, as DSP’s eram utilizadas como chips para modems e para codifica¸ao c˜ de voz, extremamente velozes para a ´poca em compara¸ao e c˜ aos processadores de prop´sito geral. [12] o Em 1991, os processadores de arquitetura DSP ganharam campo em processamento de v´ ıdeo devido ao aumento de sua freq¨ˆncia de execu¸ao e a utiliza¸ao em modo de opera¸ao ue c˜ c˜ c˜ single instruction stream, multiple data stream(SIMD). Em 1993, os processadores DSP ganharam campo em processamento multim´ ıdia de aplica¸oes no formato MPEG-2, devc˜ ido ao uso de very long instruction words(VLIW) no modo de opera¸ao SIMD, denominado SIMD+ [15]. Estes proc˜ cessadores passaram a ser muito utilizados em receptores e tratadores de sinal de TV a cabo e de v´ ıdeo sob demanda, DVD’s e outros dispositivos.

1. INTRODUCAO ¸˜
Desde a introdu¸ao dos primeiros conjuntos de instru¸oes c˜ c˜ espec´ ıficos para multim´ ıdia em processadores de prop´sito o geral, aplica¸oes de audio, v´ c˜ ´ ıdeo, gr´ficos 3D e outras tˆm a e tomado uma parcela cada vez maior de tempo e importˆncia a para os usu´rios [10]. a Esta adapta¸ao n˜o foi trivial e ainda permite diversas melc˜ a horias, devido ao comportamento at´ ıpico dos programas mul-

denominadas palavras ou dados particionados. Inicialmente podese classificar as extens˜es em trˆs classes: o e 1. A seguir. principala e mente por causa da demanda por registradores multim´ ıdia de 128 bits. as que possuem um banco de registradores exclusivo para registradores e instru¸oes multim´ c˜ ıdia. S´ com esta melhoria um v´ o ıdeo com audio ´ podia ser executado a 30fps. u com os registradores e instru¸oes multim´ c˜ ıdia. A segunda classe ainda ´ utilizada em algumas arquiteturas. Atualmente. abrangeu e ` c˜ o processamento de v´ ıdeos. h´ uma breve descri¸ao de cada uma destes padr˜es a c˜ o quanto as suas instru¸oes. bastante ´ simples [14]. aplicouıdia c˜ a se tamb´m a decodifica¸ao de imagens [13]. para ganhar mais paralelismo. observouse as opera¸oes multim´ c˜ ıdia mais freq¨entes. sem impactar no agendamento. c˜ Figure 1: Exemplo de adi¸˜o de palavras pequenas. por c c˜ a exemplo. Aplica¸oes em FPGA’s tamb´m c˜ e ganharam seu espa¸o para processamento de imagens e sons c se mostrando uma alternativa barata e de f´cil implementa¸ao. algum paralelismo pˆde ser obtido por dividir uma ALU ou rego istrador de palavras longas em v´rias ALU’s ou registradores a de palavras pequenas. ca Alguns chips de aplica¸ao espec´ c˜ ıfica tamb´m ganharam base tante espa¸o. A Tabela 1 cont´m alguns dos e conjuntos de instru¸ao mais conhecidos neste contexto. c˜ Estes conjuntos de instru¸ao foram tentativas de gerar um c˜ suporte mais apropriado para aplica¸oes variadas de mulc˜ tim´ ıdia. desde o in´ ıcio dos anos 90. O PA-7100LC foi idealizado para realizar opera¸oes c˜ multim´ ıdia.2 VIS da Sun As opera¸oes do Visual Instruction Set (VIS) tamb´m atc˜ e uam apenas sobre inteiros. Tamb´m por tomar espa¸o e c de opera¸oes com ponteiros. Como se tratava de uma arquitetura RISC e seguiu-se as mesmas diretivas de projeto da mesma. per´ ıodo de clock e area de chip. Como os dados multim´ ıdia s˜o a representados por 8 ou 16 bits e as arquiteturas possu´ ıam registradores e ALU’s que tratavam menos 32 bits. Os microprocessadores. 2]. adotado tela Intel e pela AMD. Por fim. 2. constantes e vari´veis de desvios c˜ a que s˜o inteiros com dados multim´ a ıdia. J´ a terceira classe ´ a mais comum atualmente. Eles tratam de maneira extremamente r´pida a renderiza¸ao de pol´ a c˜ ıgonos em cenas tridimensionais [9].1 MAX-1 da HP MAX-1 da Hewlett Packard foi a primeira extens˜o mula tim´ ıdia para microprocessadores que operava apenas sobre n´meros inteiros. c˜ 3. e pois dificilmente instru¸oes de ponto flutuante s˜o utilizadas c˜ a juntamente com instru¸oes multim´ c˜ ıdia. 3. conseq¨entemente suas unidades de processamento. por fim. Segue uma e o breve descri¸ao destes conjuntos. utilizando. A primeira classe caiu em desuso por quest˜es arquiteturais o que tornam mais complexa a implementa¸ao e pode acarc˜ retar em perda de desempenho. quebrando-as u em primitivas mais r´pidas que foram implementadas em a hardware [13]. a c˜ com um desempenho muito acima dos processadores de prop´sito o geral [19. o padr˜o mais utilizado ´ o SSE em a e 3. Antes de possuir instru¸oes multim´ c˜ ıdia. Ele permitia a decodifica¸ao de software u c˜ MPEG-1 de resolu¸ao 352x240 pixels em um CPU PA-7100LC c˜ de 80MHz. enquanto os registradores de ponto flutuante variavam entre 64 e 80 bits. complexidade. Os chips de acelera¸ao gr´fica 3D em PC’s. O VIS foi implementado inicialmente nos processadores UltraSPARC I. por´m o banco de e registradores de ponto flutuante. CONJUNTOS DE INSTRUCAO ¸ ˜ Como mostra a Tabela 1 existe uma grande variedade no tipo e tamanho das extens˜es multim´ o ıdia.A Figura 1 ilustra uma adi¸ao de palavras particionadas de 16 c˜ bits provenientes da divis˜o de uma palavra de 64 bits utia lizando tamb´m v´rias ALU’s pequenas que juntas formam e a uma ALU grande. 3. come¸aram a ficar interesc santes para o tratamento de aplica¸oes multim´ c˜ ıdia a partir do momento em que apresentaram um conjunto de instru¸oes espec´ c˜ ıfico para elas. piorando ainda mais o desempenho dos programas. as que compartilham o banco de registradores e unidades de processamento de ponto flutuante com os registradores e instru¸oes multim´ c˜ ıdia. sendo portanto. s˜o um grande avan¸o no tratamento de fun¸oes a c c˜ multim´ ıdia. as que compartilham o banco de registradores inteiro e. a esta¸ao c˜ HP720 de 50MHz processava um v´ ıdeo sem audio em 4´ 5fps. metas de projeto e outras ob` c˜ serva¸oes. Um novo conjunto de instru¸oes era idealizado na c˜ tentativa das empresas de atender melhor a demanda do ` mercado e assim conseguir estabelecer o seu padr˜o como o a principal.suas trˆs vers˜es. A seguir. Desta forma cada registrador e ALU particionados ficam respons´veis por processar um dado multim´ a ıdia. O paralelismo em microprocessadores de aplica¸oes mulc˜ tim´ iniciou-se com instru¸oes gr´ficas [8]. II e III e sua .

no entanto a arquitetura PA-RISC possui recursos adicionais. para o padr˜o MVI eram a reprodu¸ao de telea c˜ conferˆncias e DVS a 30 fps com audio stereo. Antes do VIS.3 MAX-2 da HP O MAX-2 fez parte de uma segunda abordagem multim´ ıdia utilizada pela HP em uma processadores da arquitetura PARISC 2. 3. A DEC.4 MDMX da MIPS O padr˜o MCMX especifica que um banco de processadores a de ponto flutuante contendo 32 registradores de 64 bits seja compartilhado para o uso de instru¸oes multim´ c˜ ıdia sobre n´meros inteiros. c c˜ A prioridade do projeto do MMX foi de aprimorar o processamento de aplica¸oes multim´ c˜ ıdia. Isto impossibilitava que opera¸oes multim´ c˜ ıdia e de ponto flutuante fossem executadas simultaneamente. [3] A c˜ a DEC implementou apenas 13 instru¸oes de multim´ c˜ ıdia alegando que a largura de banda de mem´ria era insuficiente o para alimentar o processador com tanto paralelismo. foi comprada pela HP. estas s˜o realizadas por s´ries de shifts e a e adi¸oes provenientes de instru¸oes MAX-2 [?]. Novamente o MAX-2 oferece um conjunto reduzido de primitivas para as instru¸oes multim´ c˜ ıdia. Foi com certeza o mais popular de todos os conjuntos de instru¸ao at´ a pr´pria Intel c˜ e o lan¸ar o conjunto de instru¸oes SSE [18]. Para aplica¸oes de baixa precis˜o. Por exemplo. uma unidade c˜ ´ a multiplicadora e acumuladora para ponto flutuante ´ utie lizada. c˜ c˜ O padr˜o MMX se limitou a instru¸oes multim´ de n´meros a c˜ ıdia u inteiros. Na avalia¸ao da Intel. como multiplica¸ao c˜ a c˜ por constantes. O conjunto de instru¸oes do VIS foi gerado. A DEC alegou tamb´m que o conjunto MMX era complexo devido e as deficiˆncias das arquiteturas anteriores que necessitavam ` e ser cobertas [17]. Desejava-se e ´ a reprodu¸ao compar´vel aos hardwares dedicados. 3. e audio e modems. ` . obtendose assim resultados mais precisos [20]. serem aplic´veis a diversos algoritmos. Seu principal objetivo foi complementar o MDMX para aplica¸oes c˜ de OpenGL como geometria 3D e Virtual Reality Modeling Language(VRML) dentre outras [11].6 MMX da Intel 3. duas abordagens diferentes foram utilizadas para multiplica¸ao. aplica¸oes gr´ficas nec˜ a cessitavam de hardware especializado. gr´ficos 3D.Table 1: Principais conjuntos de instru¸˜o multim´ ca ıdia Conjunto de Instu¸oes Empresa Ano instru¸oes c˜ c˜ banco de registradores MAX-1 HP 1994 9 Integer(31x64b) VIS SUN 1995 121 FP(32x64b) MAX-2 HP 1995 8 Integer(32x64b) MDMX MIPS 1996 29 FP(32x64b)+Ac(1x192b) MIPS-64 MIPS 1996 74 FP(32x64b) MMX Intel 1997 57 FP(8x64b) MVI DEC 1997 13 Integer(31x64b) Extended MMX Cyrix 1997 12 FP(8x64b) 3DNow! AMD 1998 21 FP(8x64b) SSE Intel 1999 70 8x128b AltiVec Motorola 1999 162 32x128b MIPS-3D MIPS 1999 23 FP(32x64b) Enhanced 3DNow! AMD 1999 24 FP(8x64b) SSE2 intel 2000 144 8x128b 3DNow! Professional AMD 2000 70 8x128b SSE3 intel 2004 157 8x128b principal motiva¸ao foi de criar uma plataforma padr˜o para c˜ a aplica¸oes multim´ c˜ ıdia como visualiza¸ao 3D e codifica¸ao c˜ c˜ MPEG-1.7 MVI da DEC 3. utilizando o conjunto de registradores de ponto flutuante a partir do processador Pentium P55. As instru¸oes Motion V´ c˜ ıdeo Instructions (MVI) foram incorporadas primeiramente pelo Alpha 21164PC. Este acumulador ´ especialmente util pois c˜ e ´ opera¸oes de multiplica¸ao ou uma sequˆncia de somas pode c˜ c˜ e ocupar mais bits que os registradores fontes suportam. MPEG-2. 3. incluindo v´ ıdeos nos formatos MPEG-1 e MPEG2. de comunica¸oes de c˜ internet. 3. e n˜o afetarem o a a per´ ıodo de clock [24]. Todas as instru¸oes s˜o caracterizadas por: serem executadas em apec˜ a nas um ciclo ou serem particionada em pipeline facilmente. s´ ıntese de m´sicas.0.8 Extended MMX da Cyrix Assim como a AMD a Cyrix licenciou o uso da extens˜o a MMX da Intel. desejou-se executar ´ c˜ com maior eficiˆncia as seq¨ˆncias de c´digo mais freq¨entes e ue o u e desejou-se tamb´m manter a compatibilidade com a are quitetura dos processadores anteriores. compress˜o e reconhecimento de fala. dependendo do fluxo de m´ c˜ ıdia a ser processado. u a processamento de imagens. e a partir de ent˜o o a custo de sistemas diminuiu e slots de extens˜o foram econa omizados. v´ a ıdeo conferˆncias. Para aplica¸oes de audio e gr´ficos 3D. A Cyrix n˜o produz mais processadores a desde 1997 quando juntou-se a National Semiconductors. foi especificado um regu e istrador de 192 bits com o prop´sito de ser acumulador o de opera¸oes. Al´m destes. c˜ baseando-se em aplica¸oes gr´ficas e multim´ c˜ a ıdia. idealizadora do MVI. O principal foco da DEC.5 MIPS-64 da MIPS O conjunto de instru¸oes MIPS-64 foi o primeiro a implec˜ mentar instru¸oes multim´ c˜ ıdia para registradores de ponto flutuante a serem executados dentro do microprocessador.

Tamb´m foi projetado de e maneira simples para sistemas embarcados de baixo consumo. adicionando ao Powc˜ erPC unidades de execu¸ao de 128 bits. a fim de realizarem processamento 3D [6]. acelerando bastante o processamento [4]. ´ INSTRUCOES MULTIMIDIA ¸ ˜ 3. mas a aplica¸ao foi al´m da Internet.1. A inova¸ao foi incrementar instru¸oes para n´meros c˜ c˜ u de ponto flutuante. de engenharia e raytracing [1]. O conjunto de instru¸oes SSE trouxe outra grande altera¸ao c˜ c˜ na arquitetura Intel. Al´m disso. somando 128 bits ao mesmo e tempo [23]. Streaming SIMD Extension (SSE) foi a primeira expans˜o a da Intel ao conjunto de instru¸oes MMX. Ele adicionou basicamente instru¸oes inteiras de c˜ multim´ ıdia realizadas nos registradores extras de 128 bits. O moa tivo da AMD utilizar a expans˜o MMX da Intel foi de n˜o a a querer gastar recursos com uma arquitetura que requeresse maior area ou de complexidade. As instru¸oes desta extens˜o tamb´m c˜ a e s˜o bem peculiares.11 AltiVec da Motorola O conjunto de instru¸oes AltiVec foi utilizado pelo procesc˜ sador MPC 7400 da esta¸ao Apple G4.13 Enhanced 3DNow! da AMD 3. Quando proposta c˜ era denominada Internet Streaming SIMD Extension (ISSE). sendo de 32 bits facilita o trabalho Esta se¸ao descreve as principais instru¸oes multim´ c˜ c˜ ıdia dos conjuntos apresentados anteriormente. codifica¸ao e a c˜ c˜ decodifica¸ao de v´ c˜ ıdeos e reconhecimento de voz.14 SSE2 da Intel Este conjunto de instru¸oes foi inserido no processador Penc˜ tium 4. Ela adicionou opera¸oes particionadas de inteiros e de pontos fluc˜ tuantes para que ficasse funcionalmente equivalente ao SSE. Al´m disso. Isto proporciona um e grande largura de banda. assim como o SSE utiliza um banco de registradores exclusivo para o processamento multim´ ıdia. Primeiramente ser˜o a apresentadas as instru¸oes sobre n´meros inteiros. 3. 4. tirando os dados multim´ ıdia dos registradores de ponto flutuante. o que n˜o ocorria desde a migra¸ao de a c˜ 16 para 32 bits do 80286 para o 80386. operando assim com at´ quatro dados de 32 bits. 3.12 MIPS-3D da MIPS O conjunto de instru¸oes MIPS-3D consiste em uma exc˜ tens˜o especifica para aplica¸oes (ASEs). permute. permite instru¸oes extras como c˜ multipply-add. Ela cont´m um conjunto extra e de instru¸oes para fazer total compatibilidade com o conc˜ junto de instru¸oes SSE e adicionalmente ao seu pr´prio c˜ o conjunto de instru¸oes Enhanced 3DNow! [5]. que eram realizadas nos registradores de ponto flutuante e adicionou o tipo de dado de dupla precis˜o para aplica¸oes a c˜ cient´ ıficas. o u apesar de haver grandes varia¸oes de tipo e largura dos dados c˜ utilizados em cada uma delas. Ela foi desenvolvida c˜ e para c´lculos de geometria 3D. Ele foi desenvolvido para executar duas opera¸oes de c˜ ponto flutuante de 64 bits por ciclo de clock. A Tabela 2 lista as instru¸oes c˜ inteiras nas arquiteturas que foram examinadas na se¸ao c˜ anterior. Este banco de registradores. c˜ 3. As instru¸oes novas deste conjunto ajudam a sinc˜ cronizar threads e auxiliam em aplica¸oes espec´ c˜ ıficas como m´ ıdia e jogos. O AltiVec. Por exemplo. criando o padr˜o 3DNow! para o c˜ a processador K6. pois est´ mais focado em funcionalidades que em a custos. o paralelismo oferecido pelo AltiVec se e aplica n˜o apenas as instru¸oes multim´ a ` c˜ ıdia. depois soc˜ u bre as de ponto flutuante. A opera¸ao chamada empacotamento reduz a c˜ largura de um dado. o padr˜o Extended MMX implicitaa mente escolhia um registrador de destino diferente. [7] 4.9 3DNow! da AMD Depois de licenciar o padr˜o MMX da Intel a AMD expandiu a este conjunto de instru¸oes. que s˜o opcionais a c˜ a para se adicionar ao MIPS-64. 3.15 3DNow! Professional da AMD A extens˜o 3DNow! Professional foi utilizada no procesa sador Athlon MP da AMD.10 SSE da Intel Esta extens˜o da AMD aos seus conjuntos de instru¸ao MMX a c˜ e 3DNow! foi utilizada no processador Athlon. um registrador de 64 . dependendo dos registradores de origem [25]. Esta mudan¸a foi c a adi¸ao de um novo conjunto de registradores exclusivo c˜ para opera¸oes multim´ c˜ ıdia. A grande diferen¸a desta arquitetura ´ de suportar c´lculos com n´meros c e a u de ponto flutuante. seguidas das polimorfas. etc e evita trocas de valores entre registradores que perdem dados como no caso do SSE. Ao contr´rio de c˜ a muitas arquiteturas. pois permitem a especifica¸ao de quatro a c˜ operandos (trˆs fontes e um destino). mas a qualquer uma que possa atuar paralelamente. Enquanto o padr˜o c˜ c˜ a MMX utilizava como registrador de destino um dos registradores de origem. 3. Isto simplificou a implementa¸ao de novos processadores e possibilitou a utiliza¸ao c˜ c˜ de instru¸oes de ponto flutuante ao mesmo tempo que inc˜ stru¸oes multim´ c˜ ıdia eram processadas. Esta extens˜o utiliza as mesmas instru¸oes a c˜ multim´ ıdia para n´meros inteiros e o mesmo banco de regu istradores. 3. O Pentium III foi o primeiro processador a adotar o padr˜o a SSE. seguidas das de compara¸ao e de fluxo e por ultimo as sobre mem´ria. renderiza¸ao. Duas opera¸oes de ponto flutuante de c˜ precis˜o simples eram executadas ao mesmo tempo. c˜ ´ o 4.A Cyrix expandiu as instru¸oes de MMX para evitar dec˜ strui¸ao de dados durante opera¸oes. que investiram limitadamente em instru¸oes multim´ c˜ ıdia.1 Instrucoes Aplicadas a Inteiros ¸˜ Todas as extens˜es apresentadas tratam de n´meros inteiros. sem muitos benef´ ´ ıcios de desempenho [16]. o AltiVec ocupa grande parte da area ´ do processador com inova¸oes para o processamento mulc˜ tim´ ıdia. de compiladores para paralelizar c´digos de programas em o pipeline e loop unrolling.16 SSE3 da Intel O SSE3 foi introduzido no mercado na vers˜o Prescott do a Pentium 4. incorporou instru¸oes suge c˜ eridas por vendedores de software multim´ ıdia.1 Convers˜ o de Tipo e Largura de Dados a Mudan¸a na largura do dado ´ fundamental para instru¸oes c e c˜ multim´ ıdia.

32.32.64 US32→FP32 Unpack 16b US16→U*FP32 U16→U32* 16→32* U16→U32* U16→U32 U16→U32* U16→U32 Unpack 8b U8→U16* U8→U16* 8→16.16.US16 Right Shift Lgc 16.32 U8→U16* US8→US16 U8→U16* U8→U16* bits contendo 4 palavras de 16 bits pode ser convertido por colocar os 8 bits menos ou mais significativos de cada palavra de 16 bits em 32 bits de outro registrador.32 8. c˜ Apesar dos dados em PC’s atuais sejam de precis˜o de 32 a e 64 bits.32 16 16.32 16.16 8.32. j´ que foi projetada para atuar preferencialmente c˜ a sobre imagens. por sua vez aumenta a largura de um dado adicionando zeros a esquerda ou expandindo conforme ` o sinal do dado representado. respectivamente. a opera¸ao rec˜ torna o resto da divis˜o do valor resultante pelo n´mero a u m´ximo ou m´ a ınimo que a arquitetura pode representar. o que aumenta um pouco a u complexidade do hardware.S16 U8. a 4.64 16 16.32 8. e c˜ AMD Cyrix DEC HP Intel MIPS Motorola Sun Add/Sub Resto 8. a rada’. as opera¸oes diversas de empacotamento e c˜ desempacotamento s˜o extremamente importantes.16 S16 8.S16 U8. Apesar das extens˜es MIPS s´ possu´ o o ırem opera¸oes de adi¸ao saturada para inteiros sinalizados de 16 c˜ c˜ bits.16.1.Table 2: Instru¸oes multim´ c˜ ıdia de n´ meros inteiros das arquiteturas.16 FP32→S32 FP32→US32 Pack FP Trunc FP64→FPS32 Pack 32b Satur S32→S16 S32→S16 S32→S16 S32→S16 S32→8.16.32. Este comportamento ´ indesej´vel em muitas e a aplica¸oes multim´ c˜ ıdia. Caso sejam implementadas sobre os registradores inteiros como no caso das extens˜es MAX e MVI.16. requerendo opera¸oes intermedi´rias para evic˜ a .16.16(8) 8(321 6) Align/Rotate 16 16 8. e exige um tratamento diferente e para n´meros com e sem sinal.16.64 8.8* 32→16 32→16 Pack 16b Trunc 16→8* 16→8* 16→8 16→8* 16→8 16→8 Unpack FP FP32→FP64 Unpack 32b S32→FP32 S32→FP32.32 Left Shift Lgc 16.32 32 8.64 16.16.32(44 ) 8(8). respectivamente.32 Mul Trucada US16 S16 US16 S16 S16. n˜o possui opera¸oes direa c˜ tas de empacotamento desempacotamento.16.16 8.S16 8. se c˜ u um ocorrer um overflow ou um underflow.16 8. A expans˜o MVI possui empacotamento apenas dos bits a mais significativos e desempacotamento apenas com expans˜o a de zeros.S16 US8. A extens˜o c˜ a AltiVec destaca-se por incluir instru¸oes de 32 bits para c˜ adi¸ao e subtra¸ao saturada.16.32.32.3 Adicao e Subtracao ¸˜ ¸˜ 4.64 16 16.16. Os n´ meros representam a quantidade u u de bits dos operandos de cada instru¸˜o.32 Pack FP Satur FP32→S32. Em processamento de imagens por exemplo. Somente o conjunto da DEC n˜o possui adi¸oes sobre n´meros a c˜ u particionados. ou um aumento no per´ e ıodo do clock.16. Isso pesa na escolha do banco de registradores a ser utilizado pelas instru¸oes multim´ c˜ ıdia. opera¸oes mulc˜ c˜ c˜ tim´ ıdia sobre som e imagem utilizam dados de 8 ou 16 bits.U32 U8. A Figura 2 a u a demonstra este tipo de opera¸ao que ´ denominada ’satuc˜ e A Tabela ?? lista os tipos de adi¸ao e subtra¸ao nas arquitec˜ c˜ turas que foram examinadas na se¸ao anterior. A MAX.1. caso o valor total exceda o m´ximo represent´vel ´ desej´vel que o total a a e a retornado pela opera¸ao seja o brilho m´ximo e n˜o o resto c˜ a a da divis˜o do total pelo n´mero pelo m´ximo.’S’ e ’FP’ operam sobre inteiros sem sinal ca inteiros sinalizados e n´ meros de ponto flutuante. o acumulador da arquitetura consegue lidar eficientemente com dados enormes devido ao seu tamanho de 192 bits. dados multim´ ıdia muitas vezes operam sobre 8 e 16 bits.16. significa que a u instru¸˜o ´ poss´ ca e ıvel.U16 8.16 8. Isto com certeza seria uma caracter´ ıstica indesej´vel.64 8. por isso.32 Merge 8. A implementa¸ao de aritm´tica saturada ´ um pouco diferc˜ e e ente da aritm´tica comum.U16 U8 S16 U8.32 8.8* 32→16*8* 32→8 32→16 32→16*.16. utilizando outros recursos para executar tais opera¸oes.32.2 Saturacao e Overflow ¸˜ Tradicionalmente.S32 Mul Arredond S16 S16 S16 Mul Completa US16 S16 S16. nas instru¸oes com n´mero inteiros.64 16.16 16 8. A opera¸ao de c˜ desempacotamento.32 Right Shift Art 16. No entanto. 8. em uma soma de brilhos de pixels. pode haver auo mento no n´mero de ciclos para as opera¸oes b´sicas aru c˜ a itm´ticas.32 8. H´ um contraste com a exe a tens˜o VIS da Sun que n˜o possui adi¸oes ou subtra¸oes com a a c˜ c˜ satura¸ao. Quando precedidos de ’U’.32 16 8. mas atrav´s de outras instru¸oes.32 8 Align/Rotate 8 8 8 Shuffle 16(44 ) 16(44 ) 16(44 ). por sua vez.32 Min/Max U8.16 8.32 16.16.U16 S16 U8. o que reduz a abrangˆncia desta.16 Pack 16b Satur S16→US8 S16→US8 S16→US8 S16→US8 S16→U8 Pack 32b Trunc 32→16*.64 8.32 M´dia e U8.16.32 Add/Sub Sat. Quando seguidos de ’*’.

As multic˜ plica¸oes particionadas s˜o as instru¸oes com a maior diferen¸a c˜ a c˜ c entre as implementa¸oes. A extens˜o a MMX implementou esta instru¸˜o. atca uando como um multiply-add. MAX-1 e MAXa a 2. o compartilhamento do banco o de registradores inteiros mostrou ser uma m´ id´ia. Na decodic˜ fica¸ao de v´ c˜ ıdeos MPEG-2. Isto aumenta as dependˆncias de nomes. ao contr´rio.1. apesar de a ser muito mais rica n˜o possui tal instru¸ao. 3. ca tar overflow e underflow. ca esta extens˜o possui primitivas ou sub-instru¸oes a c˜ para gerar o resultado. no entanto. assim como a VIS. AltiVec ca implementou este tratamento. devido ao resultado ocupar at´ o dobro do espa¸o dos operandos fontes.Figure 2: Adi¸˜o de brilhos de pixels em imagem saturada e imagem de resto. Esta o instru¸ao produz um grandioso benef´ c˜ ıcio para instru¸oes c˜ multim´ ıdia com um paralelismo de 8x para arquiteturas de 64 bits e substitui muitas opera¸oes escalares.1. Primitivas de multiplica¸˜o: Esta solu¸˜o adoca ca tada pela VIS ´ problem´tica. levando c˜ a de trˆs a cinco ciclos e ocupam trˆs vezes mais espa¸o no e e c chip. c˜ . Al´m e disso. Normala o ca mente os bits menos significativos. o resultado da multiplica¸ao teve diversos tratamentos. 1. Por esta e outras raz˜es. Uma op¸ao muito sugerida por pesquisadores para minic˜ mizar os conflitos de instru¸oes que geram n´meros mais c˜ u 4. c 4. a por¸ao central c˜ do c´digo pode ser substitu´ por duas opera¸oes de soma o ıda c˜ das diferen¸as absolutas. Os acumuladores. Elas s˜o mais demoradas. e c A complexidade da multiplica¸ao particionada impediu que c˜ as extens˜es que possuem seu banco de registradores mulo tim´ ıdia compartilhado com o banco de registradores inteiros implement´ssem-nas. Par/impar: selecionar os elementos pares ou ´ ımpares do resultado da multiplica¸˜o. Cyrix e AMD em suas respectivas expans˜es do conjunto MMX.4 Soma das Diferencas Absolutos ¸ Uma das poucas instru¸oes que a DEC colocou na extens˜o c˜ a MVI ´ a de calcular a soma de da diferen¸a absoluta de bytes e c desempacotados. o que afeta o paralelismo e e gera a necessidade por mais registradores. Truncado: S˜o pr´-determinados alguns bits a e que s˜o perdidos ap´s a multiplica¸˜o. ca 2. envolve a mulc˜ tiplica¸ao dos elementos empacotados respectivos. ca 4. Al´m disso.5 Multiplicacoes ¸˜ A multiplica¸ao de elementos particionados. s˜o dif´ e a ıceis de manejar. que s˜o o caso da MVI. por exemplo. a e Por ser maior que os operandos de origem. Ao inv´s de e a e gerar o resultado completo de uma multiplica¸˜o. 5. c˜ mostraram ser ao mesmo tempo um obst´culo a para o aumento da velocidade de processamento. O conjunto MMX. o acumulador impede o processamento superscalar como demonstra a hist´ria da aro quitetura [11]. Redu¸˜o: retorna a soma de elementos parca ticionados do resultado da multiplica¸˜o. Ela foi inclu´ a c˜ ıda nas arquiteturas da Intel. Registrador de destino com maior largura: Este ´ o caso do acumulador de 192 bits implemene tado na arquitetura MIPS com conjunto de instru¸oes MDMX. A extens˜o MMX a implementou esta instru¸˜o. uma vez que todas as opera¸oes que causam c˜ overflow ou underflow passam por ele.

O MIPS-64 tem uma c˜ a e Os shifts servem para realizar multiplica¸oes e divis˜es por c˜ o abordagem semelhante aos SSEs. as instru¸oes c˜ • Insert e extract: permitem que um elemento empacotado seja extra´ como um escalar ou que um escalar ıdo seja inserido como elemento empacotado. entre outras e aplica¸oes. do resultado da opera¸ao. faz com que o ele c˜ ecu¸ao de instru¸oes multim´ c˜ c˜ ıdia. Estas instru¸oes s˜o c˜ a c˜ a muito utilizadas pela geometria 3D. que compartilha o banco de registradores e unidades de processamento inteiros. As extens˜es MVI e MAX-1 o e 2 n˜o possuem nenhuma adi¸ao de l´gica para suas arquitea c˜ o turas. e deseja-se adquirir as trˆs e u e componentes de um pixel que est˜o situadas em posi¸oes a c˜ . algumas aplica¸oes s˜o mais dif´ c˜ a ıceis de serem tratadas no seu fluxo de dados da mem´ria. A vantagem de se utilizar este tipo de tratamento ´ de n˜o criar dependˆncias extras com e a e os elementos m´scara. A a primeira dar suporte a precis˜o dupla foi a SSE2 da Intel.5 Mem´ ria o As opera¸oes de mem´ria para multim´ c˜ o ıdia s˜o apenas Load a e Store. c˜ ecu¸ao e s˜o rearranjados com satura¸ao ou resto. c˜ Este tipo de instru¸ao ´ aplicado aos dados independentec˜ e mente de seu particionamento. Duas c˜ solu¸oes para o problema foram idealizadas. no entanto o elemento particionado c˜ 4. a instru¸ao.4 Comparacao e Controle de Fluxo ¸˜ A computa¸ao em paralelo fica complicada caso uma das c˜ opera¸oes deva ser realizada condicionalmente. onde um unico bit representa o resultado de uma compara¸ao l´gica ´ c˜ o para cada elemento particionado. a Exce¸oes s˜o um problema para opera¸oes de ponto fluc˜ a c˜ tuante. a A partir de ent˜o. Todas as extens˜es multim´ a o ıdia iniciaram com suporte apenas para dados de precis˜o simples. No entanto.3 Operacoes Polimorfas ¸˜ 4. Os bits restantes podem ser armazenados se necess´rio. os conjuntos 3DNow! n˜o geram c˜ a largos que os operandos de origem ´ de utilizar uma repree instru¸oes. pois exige um registrador auxiliar e muitos barramentos adicionais para a execu¸ao. a 3DNow! retorna 14 e 15 c˜ bits e a MISP-3D retorna precis˜o de 24 bits. Esta diferen¸a de tamanc emento c˜ hos reduz o gasto com instru¸oes de empacotamento/desempacotamento. O conjunto de instru¸oes AltiVec.O tipo mais comum de leitura e escrita s˜o os a seq¨enciais. que facilitam seu c´lculo. somente a extens˜o MDMX provˆ l´gica a e o adicional. por outro c˜ c˜ senta¸ao dos dados diferente para armazenamento e para exc˜ lado. a c˜ c˜ 4. onde ocorre overflow ou c˜ underflow. Como visto c˜ anteriormente. MAX-1. indicados apenas pelo endere¸o do dado a ser u c lido/escrito e seu tamanho. As demais arquiteturas possuem este tipo de instru¸ao.1. c˜ 4. e e a As extens˜es SSE e AltiVec retornam valores com precis˜o o a de 12 bits para estas opera¸oes. pois ´ muito complexo determinar o elemento que e 4.gerou a exce¸ao. AltiVec e MIPS-64/3D. mas ter somente a dependˆncia do a e resultado da opera¸ao l´gica.1. alinhar dados. Estes s˜o conjuntos e a a de bits do tamanho do elemento comparado compostos s´ o de zeros (0x0000 para 16 bits) ou somente de uns (0xffff para 16 bits). n˜o h´ como gerar um flag ou exce¸ao difera a c˜ ente para cada opera¸ao executada paralelamente. c˜ c˜ • Merge: alterna os elementos da parte superior ou inferior de dois registradores. 3DNow!. Estas unidades de processamento j´ s˜o providas da l´gica necess´ria. e pora a o a tanto. N˜o utiliza-se referˆncia a mem´ria em nenhuma a e o instru¸ao de nenhum dos conjuntos de instru¸ao multim´ c˜ c˜ ıdia apresentados. c˜ • Shuffle: Permite que se escolha uma ordem diferente para elementos de um palavra. se necess´rio c˜ a c˜ a para a armazenagem [21]. RGB. ou prea cis˜o dupla (64 bits). c˜ o A segunda consiste em gerar um vetor de bits. Apenas quatro linhagens de conjuntos de instru¸ao aplicamc˜ se a ponto flutuante multim´ ıdia: SSE. Al´m das instru¸oes b´sicas aritm´ticas. NAND ou OR para c˜ o atingir o resultado desejado.7 Operacoes de comunicacao de dados ¸˜ ¸˜ Este tipo de instru¸oes serve basicamente para rearranjar c˜ palavras particionadas em um registrador e entre registradores. a c˜ No caso do MIPS. onde cada canal e ´ armazenado seq¨encialmente. Estes elementos s˜o utilizados em conjunto a com opera¸oes l´gicas do tipo AND. sofra alguma altera¸ao. ao inv´s de gerar uma interrup¸ao. assim como no caso da c˜ pois os dados s˜o lidos da mem´ria para o formato de exa o satura¸ao. potˆncias de dois facilmente. Os conjuntos de instru¸ao MDMX. Isso acontece o muito em imagens com trˆs canais. n˜o requer instru¸oes adicionais.6 shifts ou deslocamentos que sofreu a exce¸ao n˜o ´ apontado. as outras extens˜es passaram a ter este a o recurso. Segue uma lista com as principais instru¸oes de comunica¸ao. as instru¸oes de e c˜ a e c˜ ponto flutuante particionadas incluem algum tipo de aproxima¸ao de invers˜o e raiz quadrada. c˜ A primeira ´ utilizar elementos m´scara. S˜o especialmente importantes em arquiteturas c˜ a que n˜o fornecem instru¸oes de multiplica¸ao. utilizada sobre as unidades de processamento de ponto flutuante compartilhadas. pelo fato de pertencerem a primeira classe de con` junto multim´ ıdia. MAX-2. Portanto. Elas s˜o implementadas a atrav´s de tabelas pr´-estabelecidas. Os conjuntos SSEs incluem registradores de controle/status para exibir as exce¸oes. a instru¸ao c˜ • Align ou rotate: permite o re-ajuatamento de palavras particionadas em dois registradores. a ´ 4. MMX e AltiVec.2 Instrucoes Aplicadas a Numeros de Ponto ¸˜ Flutuante A maioria das aplica¸oes de ponto flutuante para multim´ c˜ ıdia trabalha com dados de precis˜o simples (32 bits). c˜ Apesar de se mostrar uma excelente instru¸ao ´ muito c˜ e custosa para se implementar.

Outra vis˜o dada pelo artigo foi a divis˜o das classes de a a expans˜es multim´ o ıdia. S. Jun 2004. Mar 1995.-W. D. a que destacou mais foi a que utiliza os bancos de registradores espec´ ıficos para multim´ ıdia... 1997. IEEE. Aug 1996. 32:1618–1624. [17] M. Flooding-based watershed algorithm and its prototype hardware architecture. N. Apr 1999. Lee. Multimedia processors. [4] K. 2006. 16:42–50. Favor. ˜ 5. [2] M.6 gb/s interface. Oct 2005. [14] R. 19(5):441–450. Thakkur. [13] R. 2000. por´m com certa regularidade de ino e tervalo. Trend and perspective on domain specific programmable chips. 1998. Berkeley. O’Connor.. Fourth Edition. Digest of Technical Papers. o [8] Intel corporate literature. Nov 1997. P. os projetos mais ousados e com mais recuro sos foram mais bem sucedidos. pages 1–12. Proceedings of the IEEE. Nishitani. [25] VIA-Cyrix. o load e store poderiam ser realizados a partir de trˆs atributos: largura dos elementos lidos. Nov 1997.IEEE Workshop on Design and Implementation. 19:37–48. V. Weiser. pages 1–16. 2001. Mmx technology extension to the intel architecture. [19] I. Tremblay. M. 1998. S. Chakrabarti and A. W. Kim. [6] M. Castelino and R. and C. [18] U. [23] T. Diefendorff. Jeon.ru. May 2003.OpenGL Data Stream Case Study. Kuroda. Aug 2000. T. Moga. Y.. Huynh. Diferentemente do que ocorreu em rela¸ao as instru¸oes comuns de c˜ ` c˜ prop´sito geral. Parallel image component labeling with watershed transformation. Accelerating multimedia with enhanced microprocessors. Oct 1996. Micro. 51:1317–1332. 1992. Nam. Hochsprung. Micro. arquiteturas mais complexas como SSE e AltiVec obtiveram um resultado melhor. REFERENCES [1] A.diferentes da mem´ria. [15] T. pois facilitam a implementa¸ao c˜ e fornecem maior grau de paralelismo. 12]. [10] M. com a finalidade de atender a esta demanda. Elsevier.. pages 234–235. 86:1203–1221. Technical report. CA. R. [22] N. A ultima contribui¸ao foi a vis˜o geral dos tipos de in´ c˜ a stru¸oes multim´ c˜ ıdia existentes. Roger Espasa.451. Micro. IEE Proceedings-Vision. and H. Measuring the performance of multimedia instruction sets. page 1. Enquanto a MVI e a MAX-1 e 2 tiveram desempenho baixo. Apr 1995. Digital Equipment Corporationenlight. M.-H. IEEE International Solid-State Circuits Conference. Dec 1999. Rambabu.-W. Inc. Ultrasparc i: a four-issue processor supporting multimedia. John Hennessy. J. Jesus Corbal. Motion video instruction extensions for alpha. Dubey. Multimedia extensions for a 550-mhz risc microprocessor. Internet streaming simd extensions. . o Mais detalhes sobre instru¸oes de compara¸ao e controle de c˜ c˜ fluxo e de mem´ria encontram-se em [22. 16:42–50.AP-ASIC. ’Technologies for the Information Superhighway’ Compcon. Kumar. C. J.. CONCLUSOES O aumento da demanda e do n´mero de aplica¸oes mulu c˜ tim´ ıdia levou a introdu¸ao dos conjuntos de instru¸oes es` c˜ c˜ pec´ ıficos para multim´ em processadores de prop´sito geral. Slingerland. Apr 1996. 15:22–32. MIPS Extension for Digital Media with 3D. [7] Intel.. Im.-H.. Multimedia instruction sets for general purpose microprocessors: a survey.. Oberman. Slingerland and A. A. G.. 151:224–234. P. USA.A. AMD White Paper. Smith. Jan 1999. IEEE. i860TM microprocessor family programmers reference manual. Altivec extension to powerpc accelerates media processing. ACM/IEEE conference on Supercomputing . Alina N. pages 1–8. IEEE.-M. Jun 1998. Realtime mpeg video via software decompression on a pa-risc processor. Mom: a matrix simd instruction set architecture for multimedia applications. 32:26–34. desloe camento do dado lido a partir do endere¸o base para iniciar c a leitura/escrita. surgiram diversas extens˜es de grandes empreo sas. May 1997. pages 367–370. [5] J. [21] A. Apr 2000. The amd athlontm mp processor with 512kb l2 cache. Dentre as classes. Nov 2002. quanto ao banco de registradores e seus recursos de processamento. S. B. Application Note 108: Cyrix Extended MMX Instruction Set. [11] D. P Rubinfeld. pages 186–192.CDROM. SIPS . [9] Y. B Rose. Signal Processing Systems. [12] T. IEEE. pages 1–13. [16] G. IEEE Journal of Solid-State Circuits. I. Nishitani. Amd 3dnow! technology: architecture and implementations. Computer. Lee. Micro. Proceedings of the Second IEEE Asia Pacific Conference on ASICs . Peleg.. com uma an´lise cr´ a ıtica de algumas delas e a correla¸ao com as extens˜es que as fornecem. 20:85–95. F. Intel White Paper. Computer Architecture A Quantitative Approach. Assim. ıdia o Como visto. Lee. Y. [20] Silicon Graphics. Carlson. 21. Processors . ISSCC. SSE2 Optimization . Micro. T. A process-portable 64b embedded microprocessor with graphicsextensions and a 3. 2001.-J. Mueller. Huff.define sse2 and sse3. Scale. e distˆncia de um endere¸o efetivo de um a c elemento para o pr´ximo a ser lido. [3] R. c˜ o 6. Kwon. [24] J. Image and Signal Processing. Kyung. 3d graphics system with vliw processor for geometry acceleration. IEEE. Smith.-S. IEEE Transactions on Pattern Analisys and Machine Inteligence. Mahanta. IEEE Transactions on Computers.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->