Escolar Documentos
Profissional Documentos
Cultura Documentos
JCMetrolho,
NOTA PRÉVIA
• Estes slides são adaptação e/ou tradução de informação disponibilizada pelos autores
do seguinte livro:
• Computers as Components – Principles of Embedded Computing System Design, 4
edição, Marilyn Wolf, ISBN: 9780128053874, Morgan Kaufmann, 2016,
• Estes apontamentos não dispensam a consulta do livro referido anteriormente,
que érecomendado aos alunos como complemento ao apresentado nas aulas.
• Além do anteriormente referido, são usadas ainda outras fontes (livros, artigos,
documentos web, etc.) que serão oportunamente citadas ou disponibilizados no
moodle.
1
06/05/20
ASSEMBLY E LINKING
HLL
HLL assembly
HLL compile assembly
assembly assemble
assembly
assembly
object
ASSEMBLERS
• Principais tarefas:
• gerar binário para instruções simbólicas;
• traduzir labels em endereços;
• lidar com pseudo-ops (dados, etc.).
2
06/05/20
LINKING
SIMPLIFICAÇÃO DE EXPRESSÕES
3
06/05/20
SIMPLIFICAÇÃO DE EXPRESSÕES
• Constante:
• 8+1=9
• Algébrico:
• a * b + a * c = a * (b + c)
• Redução de strength:
• a * 2 = a << 1
• O código que nunca será executado pode ser removido com segurança do
programa. O problema geral de identificar código que nunca será executado é
difícil, mas há alguns casos especiais importantes em que isso pode ser feito.
4
06/05/20
• Código inútil: 0
#define DEBUG 0 0
if (DEBUG) dbg(p1); 1
• Pode ser eliminado pela análise do fluxo
de controlo, dobragem constante. dbg(p1);
INLINING DE PROCEDIMENTOS
10
5
06/05/20
INLINING DE PROCEDIMENTOS/FUNÇÕES
11
TRANSFORMAÇÃO DE CICLOS
12
6
06/05/20
TRANSFORMAÇÃO DE CICLOS
• Objetivos:
• reduzir a sobrecarga do ciclo;
• aumentar as oportunidades de pipelining;
• melhorar o desempenho do sistema de memória.
13
UNROLLING DE CICLOS
!
for (i=0; i<2; i++) {
a[i*2] = b[i*2] * c[i*2];
a[i*2+1] = b[i*2+1] * c[i*2+1];
}
14
7
06/05/20
15
OTIMIZAÇÃO
i=0; Xi=0;
= N*M
i = i+1;
16
8
06/05/20
17
+ +
* +
* MUL ADD *
expression
templates MADD
18
9
06/05/20
19
10