1. Compilador x Interpretador Compilador: traduz um programa escrito em outra linguagem, se for de maquina, depois de compilado pode ser executado. Interpretador: traduz instrução por instrução de um programa em linguagem de maquina e imediatamente executa a instrução. 2. ISA É o repertorio de instruções da arquitetura Última abstração do HW vista pelo SW Provê a informação necessária para que se escreva um codigo que execute corretamente na arquitetura CISC: Complex Instruction Set Computer RISC: Reduced Instruction Set Computer 3. Subrotinas São funções, e Subrotinas Aninhadas são funções recursivas 4. Programa -> Executavel Program -> COMPILER -> Assembly -> ASSEMBLER -> Machine Lang -> LINKER -> Executavel O problema do linker é que sua abordagem é estática, ou seja, se os módulos forem modificados o executável continua com o código antigo. A solução seria Ligação Dinâmica ou DLLs que faz a ligação apenas quando a rotina precisar ser executada, porém requer informações extras como nome e local das rotinas. 5. Modos de Endereçamento Se refere as maneiras em que instruções de uma arquitetura especificam a localização do operando onde e como pode ser acessado, no mips operandos podem estar em Registradores, Memoria, Instrução. -Endereçamento de Registrador............... add -Endereçamento de Base...................... lw -Endereçamento imediato..................... addi -Endereçamento (Pseudo) Direto.............. j -Endereçamento Relativo a PC................ beq 6. Exceções Sequência de execução é alterada devido a eventos não esperados. ex: opcode inexistente, overflow, divisão p/ zero A execução do programa é interrompida e uma rotina de tratamento é executada, em que o valor do PC deve ser guardado em EPC e o endereço da rotina de tratamento deve ser carregado em PC. 7. Monociclo Simplicidade de implementação Ciclo de clock longo para comportar instrução mais lenta Duplicação de componentes devido a restrição de um ciclo Instruções mais simples deixam a CPU ociosa, pouco eficiente 8. Multiciclo Cada estágio é executado em um ciclo de clock, logo o ciclo pode ser menor Mesmo componente de HW pode ser utilizado em estágios diferentes Instruções mais simples podem ser processadas em menos tempo, mais eficiente 9. Visão Monociclo x Multiciclo Mono: busca -> decodifica -> executa Mult: busca e atualiza pc -> decodifica e lê reg -> opera com ULA -> acessa memoria -> escreve reg 10. Desempenho Tempo de CPU = (Instr/Prog) x (CPI) x (Segundos/Clock) Depende de: Algoritmo, Linguagem, Compilador, ISA, tudo isto afeta o numero de instruções 11. Otimização É possivel otimizar o desempenho através do compilador e existem diferentes tipos como: -Alto nivel Loop Unrolling (replicar corpo do laço para reduzier numero de iterações) Procedure Inlinning (Substituir chamadas a procedimento pelo corpo do procedimento) -Local/Global Strength Reduction (Substitui operações complexas por mais simples) Dead code elimination (elimina código que não afeta o programa) Code motion (identifica trecho de código dentro de um loop que calcula sempre o mesmo valor e coloca para fora do loop)