Anda di halaman 1dari 5

INSTITUTO TECNOLGICO DE AERONUTICA

EA-268 - PROCESSADORES DE SINAIS DIGITAIS PROF. OSAMU SAOTOME

Laboratrio 2: 2010/2

Marcello Costa (PG/EEC-T)

SO JOS DOS CAMPOS SP 11/2010

EA-268 - Processadores de Sinais Digitais Laboratrio 2: 2010/2


Aluno: Marcello Costa
Captulo 5: Introduo ao Processador Blackfin:

Experincia 1: Linker (Seo 5.2 do Gan).


Ative o simulador do BF533 no VisualDSP++ e realize os seguintes passos: Modificar o arquivo fonte existente (exp5_1.asm) adicionando uma nova seo definida pelo usurio antes do dado buffa1: .section data_a1; // nova linha inserida .BYTE4 buffa1[2] = 0x00000000, 0x01012020;

Construir o projeto novamente e fazer o link da seo DATA_A1 com mapeamento para o SCRATCHPAD. Qual o endereo inicial de buffa1 agora? Rode o cdigo passo a passo e observe as mudanas na movimentao de dados.

ffb0 0000 ffb0 1000

Antes

Depois

Gerar um arquivo .map dentro da pasta debug, abrindo o exp5_1.map.xml gerado e observar o tamanho das palavras das instrues e dos dados usados nesse programa.

Experincia 2: Operaes ULA.

Indicar as instrues do Blackfin corretas, justificando as expresses incorretas e apresentando alternativas para realiz-las corretamente. (Verificar a resposta no VisualDSP++).

(a) R6 = R2.L+|R1.H; INCORRETA Dual 16-bit add/sub: O sinal +|- define a operao entre posio da palavra (alta/baixa): R6 = R2 +|-R1; (b) R6.H = R2.L+R1.H; INCORRETA R6.L = R2.LR1.H; INCORRETA Single 16-bit add/sub: Requer o uso do flag de saturao ou no saturao no fim da instruo. R6.H = R2.L+R1.H (ns); R6.L = R2.LR1.H (ns); (c) R3 = R0+|+R1, R4 = R2+|R1; INCORRETA Quad 16-bit add/sub: Utilizar os mesmos registradores de 32 bits nas operaes. R3 = R2+|-R1, R4 = R2-|+R1; (d) R3 = R0+R1, R4 = R2R1; INCORRETA Dual 32-bit add/sub: Usar o mesmo par de registradores para gerar dois resultados de 32-bits. R3 = R2 + R1, R4 = R2 R1; (e) R4.H = R4.H&R2.H; INCORRETA No h operaes lgicas de 16 bits no blackfin. R4 = R4&R2; (f) R0.L = R2.H*R1.L; CORRETA (g) A0.H += R2.H*R3.H; INCORRETA O resultado da multiplicao adicionado ao valor do acumulador, na parte alta A0 (A0.H). A0 += R2.H*R3.H; (h) R0.H = (A0 += R2.H*R3.H); INCORRETA O resultado deve ser transferido para a parte baixa do registrador de destino. R0.L = (A0 += R2.H*R3.H); ;

Experincia 2: Continuao.

(i) R1 = (A0 += R2.H*R3.H); INCORRETA O resultado de 16-bits deve ser transferido para a parte baixa de um registrador de destino. R1.L = (A0 += R2.H*R3.H); (j) A1 = R2.H*R3.L, A0 = R2.L*R3.H; CORRETA (k) R0.H = (A1 += R5.H*R6.H), R0.L = (A0 += R5.L*R6.L); CORRETA (l) R1 = (A1 += R5.H*R6.H), R2 = (A0 += R5.L*R6.L); INCORRETA Dual 16-bit: os resultados devem ser salvos nos pares de registradores de destino R0:R1/R2:R3/R4:R5/R6:R7 e A1 deve estar associado com um registrador de maior ordem. R0 = (A0 += R5.L*R6.L), R1 = (A1 += R5.H*R6.H);;

Experincia 3: Ponteiros.

A segunda coluna da tabela mostra a memria do Blackfin iniciando em 0xFF80 0100. Os ponteiros P1 e P2 so inicialmente P1 = 0xFF80 0100, e P2 = 0x0000 0002. Preencher, na ltima coluna da tabela, todos os registradores atualizados aps a execuo de cada instruo.

Memria do Blackfin e Instrues Endereo: 0xFF80 100 0xFF80 101 0xFF80 102 0xFF80 103 0xFF80 104 0xFF80 105 0xFF80 106 0xFF80 107 0xFF80 108 0xFF80 109 Contedo: 0x12 0x34 0x56 0x78 0x9A 0xBC 0xDE 0xF0 0xAA 0xBB Instrues (ordem de cima para baixo): R1 = [P1++] R1 = W[P1 ](x) R1 = B[P1++](z) P0 = [P1 + 0x03] [P0++] = R1 R1.H = W[P1++] R1.L = W[P1++P2] P1 = P2 W[P1++] = R1 B[P1++] = R1 Registradores atualizados: 0x12 0x9A 0x56 0Xff80 0106 0x56 0x00 0x56 0Xff80 0108 0x56 0x56

Experincia 4: Visualizando o Pipeline.

Abrir o projeto exp5_1.dpj e usar o visualizador de pipeline (View Debug Windows Pipeline Viewer) para examinar possveis paradas (stalls) do pipeline enquanto se procede passo a passo pelo programa (single-stepping). Qual o motivo dessas paradas? Cite uma maneira de evit-las.

Visualizao do Pipeline e Stalls

As paradas (stalls) so geradas por Instrues de multi-ciclo que aplicam os mesmos registradores ou mesmo banco de memria.

Os stalls podem ser evitados separando-se as instrues uma forma seria colocando dados e coeficientes em bancos de memria separados.

Anda mungkin juga menyukai