950 likes | 1.04k Views
Arquitetura de Computadores 2009. Roteiro da Aula. Introdução Operações Aritméticas Representação dos operandos Uso de registradores Representando as instruções Mais operações sobre dados Desvios condicionais Subrotinas MIPS Outros processadores Modos de Endereçamento MIPS
E N D
Infra-estrutura Hardware Arquitetura de Computadores 2009
Roteiro da Aula • Introdução • Operações Aritméticas • Representação dos operandos • Uso de registradores • Representando as instruções • Mais operações sobre dados • Desvios condicionais • Subrotinas • MIPS • Outros processadores • Modos de Endereçamento • MIPS • Outros processadores Infra-estrutura Hardware Arquitetura de Computadores 2009
Conceitos Básicos de Arquitetura de Computadores Capítulo 2 Infra-estrutura Hardware
Computador: Hardware + Software Arquitetura de Computadores 2009 Infra-estrutura Hardware
Compilador Montador Sistema Operacional Windows Datapath & Control Digital Design Circuit Design transistors Computador: Hardware + Software • Coordenação de muitos níveis de abstração Aplicação Software Repertório de Instruções Arquitetura Hardware Processor Memory I/O system Infra-estrutura Hardware Infra-estrutura Hardware
Representação da Informação lw $to, 0($2) lw $t1, 4($2) sw $t1, 0($2) sw $t0, 4($2) temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; Programa em Linguagem de alto nível (e.g., C) Compilador Programa em linguagem assembly (e.g.,MIPS) Montador Programa em linguagem de Máquina (MIPS) 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 Interpretação Hardware Infra-estrutura Hardware Infra-estrutura Hardware ° °
Interface entre hw e sw: Repertório de Instruções: software Repertório de Instruções hardware Infra-estrutura Hardware Infra-estrutura Hardware
Executando um programa Busca instrução Incrementa PC Decodifica instrução Busca operando Executa instrução Armazena resultado Infra-estrutura Hardware
Conjunto de registradores Tipos de Dados Acesso à memória Formato e Repertório de instruções Organização Escopo deste curso...... • Arquitetura • Tecnologia de memória • Interfaces • Implementação das instruções • interconexões Infra-estrutura Hardware
Operações aritméticas • Aritméticas • add a,b,c a = b + c • a = b + c + d + e? • sub a,b,c a = b - c Todas as instruções aritméticas possuem 3 operandos: destino, fonte 1, fonte 2 A simplicidade é favorecida pela regularidade Infra-estrutura Hardware Infra-estrutura Hardware
Expressões Aritméticas • f = (g + h) - (i + j) • Variáveis auxiliares: t0 e t1 • add t0,g,h • add t1,i,j • sub f,t0,t1 Infra-estrutura Hardware
Operandos no Hardware • Para se garantir o desempenho.... • Operandos em registradores • Vantagens: • leitura e escrita em registradores são muito mais rápidas que em memória Quanto menor mais rápido Infra-estrutura Hardware Infra-estrutura Hardware
Operandos no Hardware • Registradores • $s0, $s1, .... : armazenam variáveis do programa • $t0, $t1, .... : armazenam variáveis temporárias • f = (g + h) - (i + j)? • Variáveis g,h,i e j estão armazenadas nos registradores $s0, $s1, $s2 e $s3 Infra-estrutura Hardware
Conceito Conceito Tipo de Dado Tipo de Dado Bits Bits Sinais elétricos Sinais elétricos Tipos de Dados Conceitual Ling. Progr. Arquitetura Físico Infra-estrutura Hardware Infra-estrutura Hardware
Escalar números Inteiros Ponto-Flutuante (real) caracteres ASCII EBCDIC dados lógicos Tipos de Dados Infra-estrutura Hardware Infra-estrutura Hardware
1000000000001010 0000000000001010 1111111111110101 0000000000001010 111111111110110 0000000000001010 Inteiros • Representação binária • sinal-magnitude • complemento a 1 • complemento a 2 + 10 - 10 - 10 + 10 + 10 - 10 Infra-estrutura Hardware Infra-estrutura Hardware
0000000000000000 0000000000000001 Verdadeiro Falso 0000000000100000 Dados lógicos • Representação • Uma palavra • Um bit Falso Verdadeiro Infra-estrutura Hardware
= = ´ ´ = = ´ ´ 1 1 0 0 3 3 , , 14 14 0 0 , , 314 314 10 10 3 3 , , 14 14 10 10 - - - - = = ´ ´ = = ´ ´ 5 5 6 6 0 0 , , 000001 000001 0 0 , , 10 10 10 10 1 1 , , 00 00 10 10 expoente mantissa (fração) sinal Ponto Flutuante • Representação Infra-estrutura Hardware Infra-estrutura Hardware
Underflow negativo Underflow positivo Overflow negativo Num. negativos representáveis Num. positivos representáveis Overflow positivo Zero Ponto Flutuante • Padrão IEEE Infra-estrutura Hardware Infra-estrutura Hardware
Escalar números Inteiros Ponto-Flutuante (real) caracteres ASCII dados lógicos Estruturas (Estático) Array Record Listas, Árvores (Dinâmico) Tipos de Dados Infra-estrutura Hardware
Operandos na Memória • Manipulando arrays: • Armazenados na memória • Instruções que permitam transferência de informação entre memória e registrador Instruções de Transferência de Dados load word - lw Array: endereço inicial de memória elemento a ser transferido Infra-estrutura Hardware Infra-estrutura Hardware
Operandos na Memória • Arrays no MIPS: • endereço inicial: • registrador • deslocamento: • valor na instrução • Instrução Load Word: • Copia conteúdo de palavra (32bits) de memória para registrador. • lw reg_dst, desl(reg_end_inicial) • g = h + A[8] onde g e h estão nos registradores $s1 e $s2 e end. Inicial de A está em $s3. • lw $t0, 8($s3) • add $s1, $s2, $t0 Infra-estrutura Hardware Infra-estrutura Hardware 2009
A[0] A[1] Operandos na Memória • MIPS • Inteiros com 32 bits • Memória endereçada por byte 10 11 12 End (A[0]) = 10 End (A[1]) = 14 13 14 15 16 End(A[i]) = End-inicial + i x 4 17 Infra-estrutura Hardware Infra-estrutura Hardware
Operandos na Memória • Escrita em Memória • Instrução Store Word: • Copia conteúdo de palavra (32bits) de registrador para memória. • sw reg_alvo, desl(reg_end_inicial) • A[12] = h + A[8] • endereço inicial de A em $s3 e h em $s2 • lw $t0, 32($s3) • add $t0, $s2, $t0 • sw $t0, 48($s3) Infra-estrutura Hardware
Operandos na Memória • Array com variável de indexação • g = h + A[i] • endereço inicial de A em $s3 e g, h e i estão em $s1, $s2 e $s4 • add $t1, $s4, $s4 • add $t1, $t1, $t1 • add $t1, $t1, $s3 • lw $t0, 0($t1) • add $s1, $s2, $t0 Infra-estrutura Hardware
Resumo • Operandos no MIPS • 32 registradores • $s0, $s1,... • $t0, $t1,... • 230 palavras de memória • palavras de 32 bits • endereçamento por byte Infra-estrutura Hardware
Resumo • Linguagem de montagem do MIPS • Aritméticas • add regi, regj, regk • regi = regj + regk • sub regi, regj, regk • regi = regj - regk • Transferência de dados • lw regi, desl(reg_base) • regi = mem(reg_base+desl) • sw regi, desl(reg_base) • mem(reg_base+desl) = regi Infra-estrutura Hardware
Computador de Programa Armazenado • Instruções e Dados possuem uma representação numérica na memória M e m o r y A c c o u n t i n g p r o g r a m ( m a c h i n e c o d e ) E d i t o r p r o g r a m ( m a c h i n e c o d e ) C c o m p i l e r ( m a c h i n e c o d e ) P r o c e s s o r P a y r o l l d a t a B o o k t e x t S o u r c e c o d e i n C f o r e d i t o r p r o g r a m Infra-estrutura Hardware
00000 op 0 10001 17 rs 10010 18 rt 01000 rd 8 00000 0 0 100000 funct 32 Representação das instruções • Informação tem uma representação numérica na base 2 • codificação das instruções • mapeamento de nomes de registradores para números • $s0 a $s7 : 16 a 23 • $t0 a $t7 : 8 a 15 • add $t0, $s1, $s2 Infra-estrutura Hardware 6 5 5 5 5 6
6 5 5 5 5 6 op rs rt rd shamt funct Representação das instruções • Instruções do MIPS • Aritméticas • Transferência de informação op rs rt deslocamento 6 5 5 16 Infra-estrutura Hardware
Linguagem de Montagem vs. Linguagem de Máquina • A[300] = h + A[300] • lw $t0, 1200($t1) • add $t0, $s2, $t0 • sw $t0, 1200($t1) Infra-estrutura Hardware Arquitetura de Computadores 2009
Exemplo: uma CPU simples... Infra-estrutura Hardware
Transformação de formato Desempacotamento Empacotamento Movimentação de Dado Busca Armazenamento Mais operações sobre dados Infra-estrutura Hardware
1110000001010110 1 1100000010101100 0 Lógico/Aritmético 1 1100000010101101 Rotação Transformação de Formato • Afetam a localização dos bits • Deslocamento e rotação Direita Esquerda 0 0111000000101011 0 Lógico 1111000000101011 0 Aritmético 0111000000101011 0 Infra-estrutura Hardware Rotação
Operações Aritméticas Operações Lógicas Resultado Operando Transformação de formato Desempacotamento Empacotamento Movimentação de Dado Busca Armazenamento Operações sobre Dados Infra-estrutura Hardware
Operações Lógicas • AND, OR, XOR, NOT • Extração de grupos de bits R1 R2 1011011110111100 0000000011111111 0000000010111100 R1 and R2 Infra-estrutura Hardware
Operações Aritméticas • Soma, subtração: • Tipos de dados • inteiros • ponto-flutuante • Exemplo: • Pode gerar resultados não representáveis (overflow e underflow) 00000101 + 00000110 00001011 Infra-estrutura Hardware
Operações Aritméticas • Multiplicação • resultado: tamanho duplo • Divisão • dividendo: tamanho duplo • resultados: • quociente • resto Infra-estrutura Hardware
Ling. alto nível Linguagem máquina • If ...then ...else • case • loop • go to • Desvio incondicional • Desvio condicional a comparações entre variáveis e/ou valores Controle de Fluxo • Alterar a sequência de execução das instruções: Infra-estrutura Hardware
Linguagem máquina lw $S0,a lw $S1,b lw $S2,c beq $S0, $S1, end1 sub $t0, $S0, $S2 j end2 end1: add $t0, $S0, $S2 end2: sw $t0, a Ling. alto nível If a=b then a:= a+c else a:= a-c end if; Desvios no MIPS • Realizado por duas instruções • jump endereço • branch if equal reg1, reg2, endereço Infra-estrutura Hardware
Desvios condicionais no MIPS • Instruções de comparação e desvio: • Beq regd, regs, deslocamento PC = PC + (deslocamento*4) se regd = regs, • Bne regd, regs, deslocamento PC = PC + (deslocamento*4) se regd <> regs, Infra-estrutura Hardware
Desvios condicionais no MIPS • Instruções de Comparação: • set less than • slt regd, regs1, regs2 • Regd = 1 se regs1 menor que regs2, caso contrário regd = 0 • Registrador com constante zero • Desvio se maior ou igual??? • slt $t0, $s0, $s1 • beq $t0, $0, end Infra-estrutura Hardware
Desvios no MIPS • Instruções de desvio: • j endereço PC = endereço • Instruções de desvio indireto: • jr reg PC = (reg) Infra-estrutura Hardware
MIPS Infra-estrutura Hardware
Subrotinas • Implementação de procedimentos e funções Ling. alto nível Programa principal Var i,j,k: integer Procedure A (var x: integer); ... Begin ...(corpo do procedimento) End; Begin ... A(k); (chamada do procedimento) .... End; O endereço de retorno deve ser salvo... mas onde? Retorno após a chamada Infra-estrutura Hardware
topo da pilha end. ret. de C end. ret. de C end. ret. de B end. ret. de A Onde salvar o endereço de retorno? • registradores • só permite chamadas seriais • pilha • permite aninhamento e recursividade ... Procedure A begin Procedure B begin Procedure C begin ... C ... end ... Infra-estrutura Hardware
Chamada de subrotina - MIPS • Instruções: • jal • guarda endereço de retorno em $ra (reg. 31) • muda fluxo de controle • jr - jump register • recupera endereço de retorno de $ra Infra-estrutura Hardware
Implementando a pilha • Utiliza parte da memória como pilha • MIPS: stack-pointer (Reg 29) programas e dados 000...000 Memória Stack-Pointer (topo da pilha) pilha 111...111 Infra-estrutura Hardware
Implementando a pilha • Instruções: • coloca registrador na pilha: • lw $28, QUATRO • sw reg, 0($29) • sub $29, $29, $28 • retira registrador da pilha • lw $28, QUATRO • add $29, $29, $28 • lw reg, 0($28) Infra-estrutura Hardware
Chamada de subrotina em outras arquiteturas • Instruções: • call • empilha endereço de retorno • muda fluxo de controle • ret • recupera endereço de retorno • Outras instruções de suporte... • Salvar todos registradores na pilha • alocar parte da pilha para armazenar variáveis locais e parâmetros Infra-estrutura Hardware