1 módulo vii wireless mmx. 2 agenda módulo vii – wireless mmx introdução estrutura ...
TRANSCRIPT
1
Módulo VII
Wireless MMX
2
AgendaMódulo VII – Wireless MMX
IntroduçãoEstruturaRegistradores e instruções
3
Intel Wireless MMX Technology Coprocessador com instruções para alto desempenho
em processamento multimídia: Tecnologia MMX Integer Intel Streaming SIMD Extensions (SSE) Instruções de mídia da micro-arquitetura Intel® XScaleTM
Ambiente familiar de desenvolvimento Possui Intrínsecas para quase todas as instruções Encoraja a portabilidade de aplicações desktop para
dispositivos móveis
4
Processamento multimídia através de paralelismo de dados Operações idênticas em dados concorrentemente Uma operação pode produzir vários resultados
Paralelismo de Dados (SIMD)
x0x1x2x3
y0y1y2y3
++++
z0z1z2z3
Processamento Escalar
Processamento SIMD
+
x0
y0
z0
Intel Wireless MMX Technology
5
Tipos de dado Wireless MMX™
A tecnologia Intel® Wireless MMX™ define 3 tipos de dados empacotados em uma double-world 64bit
Elementos com dados empacotados são inteiros com ou sem sinal
0781516
63
01516 31 63
0 3132
63
0 63
8 bytes
4 meias words 16 bits
2 words 32 bits
1 valor 64 bits
6
Onde utilizar de Wireless MMX
Codecs de Áudio e Vídeo Filtros FIR/IIR Operações com matrizes Gráficos 3D Compensação de cor Segurança / Criptografia Busca por cadeias de caracteres
O WMMX possui muitos usos além da
aceleração para multimídia
7
Como aproveitar a tecnologia Intel Wireless MMX
Ferr
amen
tas
Inte
l®
Ferr
amen
tas
Inte
l®
Intel® IPPIntel® IPP
Intel®
MM
X™
/SS
E
Code B
ase
Intel®Wireless MMX™
Technology
Intel®Wireless MMX™
Technology
Vec
tor
Com
pile
r
Intel® XScale™
Low Power
Intrínsecas
CIntrínsecas
C
8
Suporte de Sistemas Operacionais a WMMX
Microsoft Windows Mobile para PPC e Smartphone 2003: disponível agora
MontaVista CEE Linux BSP disponível pela MontaVista
Symbian v7.0S: Beta BSP disponível pela Intel
PalmOS v5.2: Beta BSP disponível pela Intel v5.3: Alpha BSP disponível pela Intel
9
Tecnologia Intel® Wireless MMX™ no Sistema LCD
Display
Color SpaceConversion
Controlador de
Display
Intel XScale Micro
architecture
Intel Wireless MMX
Technology
Interface de
MemóriaSystem Bus
Memória ExternaInstruction Cache Data Cache
Communication Fabric
Inernal Memory
USB Controller
DMA Controller
Communication Fabric
S2P I2C AC97
CMOSSensor
DataCapture Interface
10
Estrutura da tecnologia Wireless MMX Mapeado no Coprocessador 0 e 1 Deve ser habilitado no Coprocessador 15
Deve ser habilitado no Pocket PC Instrução privilegiada Todas as imagens da Intel possuem o Coprocesador
habilitado Suporta instruções iMPT
Acumulador de 64 bits 16 Registradores de 64 bits
Abundância de espaço para armazenar os coeficientes do filtro FIR no conjunto de conjunto de registradores
11
4 registradores de 32 bits Propósito geral usados para deslocamento e alinhamento
Acoplado com o core ARM Movimento de dados entre núcleo e o Coprocessador agora
é mais rápido, 4 ciclos contra 7 usando iMPT
Linha de execução simples Não é um processador separado Fluxo de instruções ligado com as instruções padrões ARM
Estrutura da tecnologia Wireless MMX
12
XWBX2X1RFIDF2F1
MWBMnM1
D2 DWBD1
XWBX2X1RFID
MWBM3M2M1
DWBD2D1
XM
D
Estrutura do PipelinePipeline Intel XScale
Pipeline Intel Wireless MMX
F1 - F2: Carregamento da Instrução
ID: Decodificação da Instrução
RF: Acesso a operandos e atalhos
X1 - XWB: Estágios de pipe para ALU
M1 - MWB: Estágios de pipe para MAC
D1 - DWB: Estágios de pipe para carregamento
de dados
13
Registradores Wireless MMX
wR0
wR15
wR14
wR13
wR12
wR11
wR10
wR9
wR8
wR7
wR6
wR5
wR4
wR3
wR2
wR1
CP0 – Registradores de dados SIMD
wcGR3
wcGR2
wcGR1
wcGR0
wCASF
wcCSSF
wCon
wCID
CP1 – Estados e Controle
14
Registradores de Estado e Controle Registradores de estado:
Flags de aritmética SIMD e saturação (wCASF)
Estado de saturação (wCSSF) Registradores de controle:
wCGR0-wCGR3 (Registradores 32-bits de uso geral, utilizados para alinhamento, deslocamento)
Coprocessor ID (wCID) Registrador de controle do
Coprocessador (wCon)
wcGR3
wcGR2
wcGR1
wcGR0
wCASF
wcCSSF
wCon
wCID
CP1
15
PXA27x (wCASF - Arithmetic Flags)
16
PXA27x (wCASF)
17
PXA27x (wCSSF – SIMD Saturation Flags)
18
PXA27x (wCID – Coprocessor ID)
19
PXA27x (wCon – Coprocessor Control)
20
Registradores de dados SIMD
wR0
wR15
wR14
wR13
wR12
wR11
wR10
wR9
wR8
wR7
wR6
wR5
wR4
wR3
wR2
wR1
16 registradores 64 bits
Utilizados como operandos nas instruções Wireless MMX
Transferências entre os registradores do CP0 e do processador principal devem ser feitas com instruções específicas
CP0 – Registradores de dados SIMD
21
Como utilizar Wireless MMXHabilitando os Coprocessadores
Ligar os bits do registrador 15 do CP15 (“Coprocessor Access Register”)
bit 0 – CP0
bit 1 – CP1
A maioria das instruções Wireless MMX possuem uma função C intrínseca para facilitar o seu uso
Libera o usuário de explicitamente manusear os registradores e habilita o compilador a tratar a sincronização das instruções
O usuário pode escrever o código diretamente em assembly
22
Instruções de Multiplicação
Instruções de Multiplicação com Acumulador TMIA TMIAPH TMIAXY WMAC
Instruções de Multiplicação WACC WMUL WMADD
WMADD wRd, wRn, wRm
b3*a3+b2*a2
b3 b2 b1 b0
b1*a1+b0*a0
a3 a2 a1 a0
23
Instruções Lógicas e Aritméticas Instruçoes Aritiméticas
WSAD WAVG2 WADD/WSUB WMAX/WMIN
Instruções Lógicas WAND/WANDN WOR/WXOR
Instruções de Comparação WCMPEQ WCMPGT
WSADB wRd, wRn, wRm
ADi+7
ADi+6
ADi+5
ADi+4
ADi+3
ADi+2
ADi+1
ADi+0
a7 a6 a5 a4 a3 a2 a1 a0
b7 b6 b5 b4 b3 b2 b1 b0
iaib
wRm
wRn
24
Instruções de FormataçãoWUNPCKIH
a3 a2 a1 a0b3 b2 b1 b0
b1 a1 b0 a0
a3 a2 a1 a0b3 b2 b1 b0
b3 a3 b2 a2
Coloca as meia word altas em words
Coloca as meia-words baixas em words
WUNPCKIL
25
Instruções de Formatação
WUNPCKEL
a3 a2 a1 a0
0 a1 0 a0
a3 a2 a1 a0
0 a3 0 a2
Desempacota as meia word altas e completa com zero
Desempacota as meia word baixas e completa com zero
WUNPCKEH
26
As instruções de embaralhamento SIMD, selecionam quatro meia-words dos registradores fonte
WSHUFH wRd, wRn #0x9C
Instruções de Formatação
0x9C
wRd
wRnb3 b2 b1 b0
b2 b1 b3 b0
10 01 11 00
27
WALIGNI wRd, wRn, wRm, #3
Instruções de Formatação
b7 b6 b5 b4 b3 b2 b1 b0a7 a6 a5 a4 a3 a2 a1 a0
a2 a1 a0 b4 b3 b2 b1 b0
As instruções de alinhamento permitem alinhamentos em padrões de bytes baseados em pares de registradores, tanto em um valor imediato ou em um valor armazenado em um registrador geral
28
Instruções de Transferência Transfere dados entre o core Intel XScale® e a unidade
Intel® Wireless MMX™ Instruções WMMX iniciadas com a letra T (transferência) Essa operação executam sincronizadamente nos dois
pipes Wireless MMX para Intel XScale
TANDC, TORC, TEXTRC, TMOVMSK
Intel XScale para Wireless MMX TINSR, TMIA, TMIAPH, TMIAxy
MRCMRRC
MCRMCRR
Intel® Wireless MMX™
Intel® XScale Core
XWBX1 X2RFID
XWBX1 X2RFID
29
Instruções Load/Store
O núcleo principal calcula o endereço para transações de memória Intel® Wireless MMX™
Intel® XScale™ Pipeline
Intel® Wireless MMX™ Pipeline
M
X
D D1 D2 DWB
M1 M2 M3 MWB
XWBX1 X2RFID
XWBX1 X2RFIDF2F1
MWBM1 Mn
D2 DWBD1
As instruções load/store são mapeadas no núcleo padrão Intel XScale® LDC/STC
WLDR - Executa carregamentos de vetores na memória ao Register File com tipos de 8, 16, 32 ou 64 bits de dados. O dado carregado será estendido com zeros
WSTR – Executa armazenamentos de vetores do Register File para a memória
30
Execução condicional Todas as instruções de dados Intel® Wireless MMX™
podem ser executadas condicionalmente
A condição depende dos flags do registrador CPSR Elimina a necessidade de pequenos saltos
Melhora a eficiência do desenrolamento e intercalação
Pode transferir eficientemente flags do SIMD para o core CPSR
31
PXA27x Instruções úteis para o Laboratório
TBCSTH
a0
a0 a0 a0 a0
Desempacota as meia word baixas e completa com zero
32
PXA27x Instruções úteis para o Laboratório
WUNPCKExSH
WUNPCKEL
a3 a2 a1 a0
0 a1 0 a0
a3 a2 a1 a0
0 a3 0 a2
Desempacota as meia word Desempacota as meia word altas e completa com zeroaltas e completa com zero
Desempacota as meia word Desempacota as meia word baixas e completa com zerobaixas e completa com zero
WUNPCKEHWUNPCKEH
33
PXA27x Instruções úteis para o Laboratório
WLDRD wRd[63:0] = Mem[<address_mode>]
WMAXSH wRd[half 3] = maior(wRn[half 3], wRm[half 3]) wRd[half 2] = maior(wRn[half 2], wRm[half 2]) wRd[half 1] = maior(wRn[half 1], wRm[half 1]) wRd[half 0] = maior(wRn[half 0], wRm[half 0])
TMRRC RdHi=wRn[63:32] RdLo=wRn[31:0]
34
Módulo VII
Laboratório