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-

as que compartilham o banco de registradores inteiro e. 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. Desta forma cada registrador e ALU particionados ficam respons´veis por processar um dado multim´ a ıdia. Os chips de acelera¸ao gr´fica 3D em PC’s. e pois dificilmente instru¸oes de ponto flutuante s˜o utilizadas c˜ a juntamente com instru¸oes multim´ c˜ ıdia. conseq¨entemente suas unidades de processamento. 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. constantes e vari´veis de desvios c˜ a que s˜o inteiros com dados multim´ a ıdia. O PA-7100LC foi idealizado para realizar opera¸oes c˜ multim´ ıdia. S´ com esta melhoria um v´ o ıdeo com audio ´ podia ser executado a 30fps. 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. CONJUNTOS DE INSTRUCAO ¸ ˜ Como mostra a Tabela 1 existe uma grande variedade no tipo e tamanho das extens˜es multim´ o ıdia. O VIS foi implementado inicialmente nos processadores UltraSPARC I. 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. Por fim. metas de projeto e outras ob` c˜ serva¸oes. Inicialmente podese classificar as extens˜es em trˆs classes: o e 1. por c c˜ a exemplo. por´m o banco de e registradores de ponto flutuante. aplicouıdia c˜ a se tamb´m a decodifica¸ao de imagens [13]. 2. per´ ıodo de clock e area de chip. c˜ Figure 1: Exemplo de adi¸˜o de palavras pequenas. o padr˜o mais utilizado ´ o SSE em a e 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. ca Alguns chips de aplica¸ao espec´ c˜ ıfica tamb´m ganharam base tante espa¸o. Atualmente. Os microprocessadores.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.2 VIS da Sun As opera¸oes do Visual Instruction Set (VIS) tamb´m atc˜ e uam apenas sobre inteiros. quebrando-as u em primitivas mais r´pidas que foram implementadas em a hardware [13]. 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.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. A seguir. Tamb´m por tomar espa¸o e c de opera¸oes com ponteiros. 3. denominadas palavras ou dados particionados. desde o in´ ıcio dos anos 90. Segue uma e o breve descri¸ao destes conjuntos. c˜ 3. observouse as opera¸oes multim´ c˜ ıdia mais freq¨entes. as que compartilham o banco de registradores e unidades de processamento de ponto flutuante com os registradores e instru¸oes multim´ c˜ ıdia. Como se tratava de uma arquitetura RISC e seguiu-se as mesmas diretivas de projeto da mesma. Antes de possuir instru¸oes multim´ c˜ ıdia. c˜ Estes conjuntos de instru¸ao foram tentativas de gerar um c˜ suporte mais apropriado para aplica¸oes variadas de mulc˜ tim´ ıdia. as que possuem um banco de registradores exclusivo para registradores e instru¸oes multim´ c˜ ıdia. a esta¸ao c˜ HP720 de 50MHz processava um v´ ıdeo sem audio em 4´ 5fps. u com os registradores e instru¸oes multim´ c˜ ıdia. A Tabela 1 cont´m alguns dos e conjuntos de instru¸ao mais conhecidos neste contexto. adotado tela Intel e pela AMD. sendo portanto. principala e mente por causa da demanda por registradores multim´ ıdia de 128 bits. Eles tratam de maneira extremamente r´pida a renderiza¸ao de pol´ a c˜ ıgonos em cenas tridimensionais [9]. utilizando. s˜o um grande avan¸o no tratamento de fun¸oes a c c˜ multim´ ıdia. piorando ainda mais o desempenho dos programas. bastante ´ simples [14]. Ele permitia a decodifica¸ao de software u c˜ MPEG-1 de resolu¸ao 352x240 pixels em um CPU PA-7100LC c˜ de 80MHz. A seguir. 3.suas trˆs vers˜es. por fim. sem impactar no agendamento. h´ uma breve descri¸ao de cada uma destes padr˜es a c˜ o quanto as suas instru¸oes. 2]. complexidade. para ganhar mais paralelismo. II e III e sua . O paralelismo em microprocessadores de aplica¸oes mulc˜ tim´ iniciou-se com instru¸oes gr´ficas [8]. A segunda classe ainda ´ utilizada em algumas arquiteturas. J´ a terceira classe ´ a mais comum atualmente. a c˜ com um desempenho muito acima dos processadores de prop´sito o geral [19. abrangeu e ` c˜ o processamento de v´ ıdeos. enquanto os registradores de ponto flutuante variavam entre 64 e 80 bits.

obtendose assim resultados mais precisos [20].0. u a processamento de imagens. c˜ c˜ O padr˜o MMX se limitou a instru¸oes multim´ de n´meros a c˜ ıdia u inteiros. 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. como multiplica¸ao c˜ a c˜ por constantes. 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]. c c˜ A prioridade do projeto do MMX foi de aprimorar o processamento de aplica¸oes multim´ c˜ ıdia. duas abordagens diferentes foram utilizadas para multiplica¸ao. v´ a ıdeo conferˆncias. O conjunto de instru¸oes do VIS foi gerado. Al´m destes. 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. para o padr˜o MVI eram a reprodu¸ao de telea c˜ conferˆncias e DVS a 30 fps com audio stereo. 3.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. ` . gr´ficos 3D. Na avalia¸ao da Intel. 3. 3.7 MVI da DEC 3. serem aplic´veis a diversos algoritmos.6 MMX da Intel 3. utilizando o conjunto de registradores de ponto flutuante a partir do processador Pentium P55. Novamente o MAX-2 oferece um conjunto reduzido de primitivas para as instru¸oes multim´ c˜ ıdia. s´ ıntese de m´sicas. estas s˜o realizadas por s´ries de shifts e a e adi¸oes provenientes de instru¸oes MAX-2 [?]. 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]. 3. 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. incluindo v´ ıdeos nos formatos MPEG-1 e MPEG2. [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.8 Extended MMX da Cyrix Assim como a AMD a Cyrix licenciou o uso da extens˜o a MMX da Intel. Para aplica¸oes de baixa precis˜o. no entanto a arquitetura PA-RISC possui recursos adicionais. A DEC. dependendo do fluxo de m´ c˜ ıdia a ser processado. aplica¸oes gr´ficas nec˜ a cessitavam de hardware especializado. As instru¸oes Motion V´ c˜ ıdeo Instructions (MVI) foram incorporadas primeiramente pelo Alpha 21164PC. uma unidade c˜ ´ a multiplicadora e acumuladora para ponto flutuante ´ utie lizada. Todas as instru¸oes s˜o caracterizadas por: serem executadas em apec˜ a nas um ciclo ou serem particionada em pipeline facilmente.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. e audio e modems. Antes do VIS.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. 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]. c˜ baseando-se em aplica¸oes gr´ficas e multim´ c˜ a ıdia. Isto impossibilitava que opera¸oes multim´ c˜ ıdia e de ponto flutuante fossem executadas simultaneamente. Para aplica¸oes de audio e gr´ficos 3D. compress˜o e reconhecimento de fala. de comunica¸oes de c˜ internet. Por exemplo. MPEG-2. idealizadora do MVI. e n˜o afetarem o a a per´ ıodo de clock [24].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. e a partir de ent˜o o a custo de sistemas diminuiu e slots de extens˜o foram econa omizados. Desejava-se e ´ a reprodu¸ao compar´vel aos hardwares dedicados. O principal foco da DEC.

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

mas atrav´s de outras instru¸oes.U32 U8. o que aumenta um pouco a u complexidade do hardware.32 Add/Sub Sat. a rada’. e c˜ AMD Cyrix DEC HP Intel MIPS Motorola Sun Add/Sub Resto 8.16 8.32.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. respectivamente. Este comportamento ´ indesej´vel em muitas e a aplica¸oes multim´ c˜ ıdia. 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.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 8.16 8.’S’ e ’FP’ operam sobre inteiros sem sinal ca inteiros sinalizados e n´ meros de ponto flutuante.64 16.32. em uma soma de brilhos de pixels. nas instru¸oes com n´mero inteiros. e exige um tratamento diferente e para n´meros com e sem sinal.16.US16 Right Shift Lgc 16. pode haver auo mento no n´mero de ciclos para as opera¸oes b´sicas aru c˜ a itm´ticas.32 Pack FP Satur FP32→S32. Isso pesa na escolha do banco de registradores a ser utilizado pelas instru¸oes multim´ c˜ ıdia. utilizando outros recursos para executar tais opera¸oes. 8. se c˜ u um ocorrer um overflow ou um underflow.32.16. opera¸oes mulc˜ c˜ c˜ tim´ ıdia sobre som e imagem utilizam dados de 8 ou 16 bits.64 8.32 8.64 8. A implementa¸ao de aritm´tica saturada ´ um pouco diferc˜ e e ente da aritm´tica comum.3 Adicao e Subtracao ¸˜ ¸˜ 4. por sua vez.64 8. c˜ Apesar dos dados em PC’s atuais sejam de precis˜o de 32 a e 64 bits.1. Apesar das extens˜es MIPS s´ possu´ o o ırem opera¸oes de adi¸ao saturada para inteiros sinalizados de 16 c˜ c˜ bits. a 4.S32 Mul Arredond S16 S16 S16 Mul Completa US16 S16 S16. ou um aumento no per´ e ıodo do clock.U16 U8 S16 U8. o acumulador da arquitetura consegue lidar eficientemente com dados enormes devido ao seu tamanho de 192 bits. Os n´ meros representam a quantidade u u de bits dos operandos de cada instru¸˜o. Caso sejam implementadas sobre os registradores inteiros como no caso das extens˜es MAX e MVI.32 8. 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.16 8. Em processamento de imagens por exemplo.16.32.U16 8. A expans˜o MVI possui empacotamento apenas dos bits a mais significativos e desempacotamento apenas com expans˜o a de zeros.32 32 8.32(44 ) 8(8).16. 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.16.16 S16 8.32.16.64 16. requerendo opera¸oes intermedi´rias para evic˜ a .32 Min/Max U8.16.16 16 8. por sua vez aumenta a largura de um dado adicionando zeros a esquerda ou expandindo conforme ` o sinal do dado representado.64 16 16. Quando seguidos de ’*’.32 Right Shift Art 16. No entanto.16 8.32 16 8. A opera¸ao de c˜ desempacotamento.16(8) 8(321 6) Align/Rotate 16 16 8.S16 U8.32 M´dia e U8.16 Pack 16b Satur S16→US8 S16→US8 S16→US8 S16→US8 S16→U8 Pack 32b Trunc 32→16*. significa que a u instru¸˜o ´ poss´ ca e ıvel.32 8 Align/Rotate 8 8 8 Shuffle 16(44 ) 16(44 ) 16(44 ).32 8. n˜o possui opera¸oes direa c˜ tas de empacotamento desempacotamento. respectivamente. A MAX. 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 Mul Trucada US16 S16 US16 S16 S16.32 Left Shift Lgc 16. o que reduz a abrangˆncia desta. por isso.16 8.S16 US8.8* 32→16*8* 32→8 32→16 32→16*.1. as opera¸oes diversas de empacotamento e c˜ desempacotamento s˜o extremamente importantes.64 16 16.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.32 16 16.S16 U8.2 Saturacao e Overflow ¸˜ Tradicionalmente.U16 S16 U8. j´ que foi projetada para atuar preferencialmente c˜ a sobre imagens.16.32 16.S16 8.16 FP32→S32 FP32→US32 Pack FP Trunc FP64→FPS32 Pack 32b Satur S32→S16 S32→S16 S32→S16 S32→S16 S32→8. Isto com certeza seria uma caracter´ ıstica indesej´vel.16.32. A extens˜o c˜ a AltiVec destaca-se por incluir instru¸oes de 32 bits para c˜ adi¸ao e subtra¸ao saturada. dados multim´ ıdia muitas vezes operam sobre 8 e 16 bits.16.16.32.32 16.32 Merge 8. Somente o conjunto da DEC n˜o possui adi¸oes sobre n´meros a c˜ u particionados.16.16.16.Table 2: Instru¸oes multim´ c˜ ıdia de n´ meros inteiros das arquiteturas.

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

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

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

Sign up to vote on this title
UsefulNot useful