Arquitetura e Organização de Computadores. Capítulo 2 Conjunto de Instruções

Tamanho: px
Começar a partir da página:

Download "Arquitetura e Organização de Computadores. Capítulo 2 Conjunto de Instruções"

Transcrição

1 Arquitetura e Organização de Computadores Capítulo 2 Conjunto de Instruções

2 Material adaptado de: Patterson e Henessy, Computer Organization and Design 4 th Edition 2

3 É o repertório de instruções de um computador; Computadores diferentes possuem conjuntos de instruções diferentes: Mas em muitos aspectos eles são comuns; Computadores antigos tinham conjuntos de instruções bem simples: Implementação simplificada; Muitos computadores modernos também possuem conjunto de instruções simplificados. Conjunto de Instruções - ISA 3

4 Usado como exemplo durante este curso; Stanford MIPS comercializado pelo MIPS Technologies ( Grande parte do mercado de sistemas embarcados: Aplicações em Consumer Eletronics, Network/Storage, equipamentos, câmeras, impressoras,... Típico de muitos ISAs modernos: Vejam MIPS Reference Data. MIPS Instruction Set 4

5 Todo computador deve ser capaz de executar operações aritméticas: Notação da MIPS Assembly Language: add a, b, c instrui o computado a adicionar duas variáveis b e c e colocar o resultado da soma em a: a = b + c Operações Aritméticas 5

6 Essa notação é fixa, ou seja, sem variações. Se você quiser fazer... então é necessário... a = b + c + d + e add a, b, c # The sum of b and c is placed in a. add a, a, d # The sum of b, c, and d is now in a. add a, a, e # The sum of b, c, d, and e is now in a. Operações Aritméticas 6

7 Simplicidade favorece a regularidade ; Todas as operações aritméticas possuim o mesmo formato; Regularidade faz implementação mais simples; Simplicidade permite alto desempenho a um baixo custo. Princípio de Projeto 1 7

8 Código C: f = (g + h) - (i + j); Código compilado do MIPS: add t0, g, h # temp t0 = g + h add t1, i, j # temp t1 = i + j sub f, t0, t1 # f = t0 - t1 Exemplo: Operações aritméticas 8

9 Instruções aritméticas usam operandos que vem de registradores; MIPS possui 32 x32-bit registradores (banco de registradores): Usado para dados que são frequentemente utilizados; Numerados de 0 a 31; 32-bit de dados é chamado de word ; Nomes dos registradores: $t0, $t1,..., $t9 para dados temporários (variáveis do compilador); $s0, $s1,..., $s7 para dados não-temporários (variáveis do programador). Operandos em registradores 9

10 Menor é mais rápido ; Um número grande de registradores pode aumentar o tempo do ciclo de clock, tornando o sistema lento. Princípio de Projeto 2 10

11 Código C: f = (g + h) - (i + j); f,, j in $s0,, $s4 Código compilado do MIPS: add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1 Exemplo: Operandos em registradores 11

12 Linguagens de programação possuem variáveis que contem dados simples, mas eles também tem estruturas de dados mais complexas (arrays e structures): Podem conter mais dados do que o número de registradores em um computador. Como computadores podem representar e acessar grandes estruturas de dados? 12

13 Memória principal é usada para dados compostos: Arrays, structures, dynamic data; Para realizar operações aritméticas: Carregar valores da memória em registadores; Armazenar resultados do registrador na memória. Memória é endereçada a bytes: Cada endereço identifica unicamente um byte. Operandos na Memória 13

14 Words são alinhadas na memória: Endereços tem que ser múltiplo de 4 (4 Bytes => 32 bits); MIPS é Big Endian: Byte mais significativo está no menor endereço da palavra; OBS: Little Endian; Byte menos significativo está no menor endereço da palavra. Operandos na memória 14

15 Memória é um grande unidimensional array com o endereço atuando como índice deste array; Inicia em 0. OBS: O que é a memória? 15

16 A instrução que copia dados da memória para os registradores é tradicionalmente chamada de load; A que faz a operação inversa é chamada de store; A instrução de load é composta pelo registrador destino, uma constante e registrador de base: A soma da constante com o registrador base é utilizado para acessar a memória; Instrução do MIPS é lw (load word). Carregar dados da memória 16

17 Código C: g = h + A[8]; g in $s1, h in $s2, base address of A in $s3 Código compilado do MIPS: Índice 8 requer um deslocamento (offset) de 32 4 bytes por word lw $t0, 32($s3) # load word add $s1, $s2, $t0 offset base register Exemplo 1: Operandos na memória 17

18 Código C: A[12] = h + A[8]; h está em $s2, endereço base de A está em $s3 Código compilado para o MIPS: Índice 8 requer um deslocamento (offset) de 32 Índice 12 requer um deslocamento (offset) de 48 lw $t0, 32($s3) # load word add $t0, $s2, $t0 sw $t0, 48($s3) # store word Exemplo 2: Operandos na memória 18

19 São constantes especificadas em uma instrução: addi $s3, $s3, 4 Não possui instrução de subtração com imediato: Usar constantes negativas: addi $s2, $s1, -1 Operandos Imediatos 19

20 Faça o caso comum mais rápido Pequenas constantes são comuns ao programas; Operando imediato evita instruções de load. Princípio de Projeto 3 20

21 O registrador 0 ($zero) é a constante 0: Não pode ser sobrescrito; Útil para operações comuns: Ex: mover dados entre registradores: add $t2, $s1, $zero # move $s1 para $t2 A constante Zero 21

22 NÚMEROS INTEIROS COM OU SEM SINAL 22

23 Dado um número de n-bits: Alcance: 0 até 2 n -1 Exemplo: x x2 x2 n1 n2 1 0 n 1 n = = = Para 32 bits: 0 até x2x Números Inteiros Binários sem Sinal 23

24 Dado um número de n-bits: x x2 x2 Alcance: -2 n-1 até 2 n-1 1 Exemplo: n1 n2 1 0 n 1 n = = 2,147,483, ,147,483,644 = 4 10 Para 32 bits: até x2x Inteiros em Complemento a 2 com Sinal 24

25 Bit 31 é o bit de sinal: 1 para números negativo; 0 para não números não-negativos; -(-2 n-1 ) não pode ser representado; Números não-negativos tem a mesma representação em inteiros sem sinal e em complemento a dois; Alguns números específicos: 0: : Mais-negativo: Mais-positivo: Inteiros em Complemento a 2 com Sinal 25

26 Complemento dos bits somados a 1: Complemento significa: 1 0, 0 1 Exemplo: negar +2 x 2 x1 x +2 = = = x Negação com Sinal 26

27 Representando um número utilizando mais bits: Preservar o valor numérico; No ISA do MIPS: addi: estende o valor do imediato; lb, lh: estende o valor do byte/halfword carregados; beq, bne: estente o valor do deslocamento; Replicar o valor do sinal para esquerda: Valores sem sinal: sempre estender com 0s; Exemplo: 8-bit para 16-bit +2: => : => Extensão de Sinal 27

28 REPRESENTANDO INSTRUÇÕES 28

29 Instruções são codificadas em binário (números): Chamado de código de máquina: Instruções do MIPS: Codificadas como palavras de 32-bits; Um pequeno número de formatos codificam o código da operação (opcode), números dos registadores,... Regularidade! Números dos registradores: $t0 - $t7 são os registradores números 8 15; $t8 - $t9 são os registradores números 24 25; $s0 - $s7 são os registradores números 16 23; Representação de uma instrução 29

30 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Campos da instrução: op: código da operação (opcode); rs: número do primeiro registrador fonte; rt: número do segundo registrador fonte; rd: número do registrador de destino; shamt: quantidade de shifs (00000 por enquanto); funct: código da função (estende o opcode). Instruções do formato R 30

31 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits add $t0, $s1, $s2 special $s1 $s2 $t0 0 add = Exemplo do formato R 31

32 Base 16: Representação compacta de cadeias de bits; 4 bits por cada dígito hexadecimal; Example: eca Hexadecimal 32

33 op rs rt constant or address 6 bits 5 bits 5 bits 16 bits Operações aritméticas com imediatos e instruções de load/store: rt: número do registrador destino ou fonte; Constante: até ; Endereço: deslocamento (offset) adicionado ao registrador base rs; Instruções do formato I 33

34 Bons projetos demandam bons compromissos ; Diferentes formatos complicam a decodificação das instruções, mas permite instruções do mesmo tamanho; Mantenha os formatos das instruções o mais similar possível: R-type (para registradores) ou R-format. I-type (para imediatos) ou I-format. Princípio de Projeto 4 34

35 Se $t1 tem o endereço base do array A e $s2 corresponde ao, então a sentença: é compilada para: A[300] = h + A[300]; lw $t0,1200($t1) # Temporary reg $t0 gets A[300] add $t0,$s2,$t0 # Temporary reg $t0 gets h + A[300] sw $t0,1200($t1) # Stores h + A[300] back into A[300] Qual é o código de máquina para essas três instruções? Exemplo: Traduzindo Assembly para código de máquina 35

36 The BIG Picture Instruções são representados em binários, como os dados; Instruções e dados são armazenados na memória; Programas podem operar sobre programas; Compatibilidade binária permite programas funcionarem em diferentes computadores ISAs padronizados. Computadores com programas armazenados 36

37 OPERAÇÕES LÓGICAS 37

38 Instruções para manipulação da cadeia de bits: Útil para extração ou inserção de grupos de bits em uma palavra. Operações Lógicas 38

39 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Desloca a cadeia de bits para esquerda ou direita; shamt: número de bits para deslocar; Shift Left Logical (sll): Desloca para esquerda e preenche com zeros no final; sll de i-bits multiplica a palavra por 2 i ; Shift Right Logical (srl): Desloca para direita e preenche com zeros no início; srl de i-bits divide a palavra por 2 i (só para números sem sinal). Operações de shift 39

40 Útil para mascarar bits em uma palavra: Selecionar alguns bits, limpando os outros com 0; and $t0, $t1, $t2 $t2 $t1 $t Operações de AND 40

41 Útil para incluir bits em uma palavra: Seta alguns bits para 1 sem mudar os outros; or $t0,$t1, $t2 $t2 $t1 $t Operações de OR 41

42 Útil para inverter bits em uma palavra: Muda 0 para 1, e 1 para 0; MIPS tem uma operação de NOR com 3 operandos: a NOR b == NOT (a OR b) nor $t0, $t1, $zero Register 0: always read as zero $t1 $t Operações de NOT 42

43 INSTRUÇÕES PARA TOMAR DECISÕES 43

44 O que diferencia um computador de uma calculadora simples é a habilidade de tomar decisões; A tomada de decisão é representada em linguagens de programação através das sentenças de if, algumas vezes combinadas com sentenças de go to e rótulos (labels). O diferencial do computador 44

45 Desvia (branch) para um rótulo se a condição da instrução for verdadeiro: Caso contrário, continua sequencialmente; beq rs, rt, L1 Se (rs == rt) então desvia para a instrução rotulada de L1; bne rs, rt, L1 Se (rs!= rt) então desvia para a instrução rotulada de L1; j L1 Pulo (jump) incondicional para a instrução rotulada de L1. Operações condicionais 45

46 Código C: if (i==j) f = g+h; else f = g-h; f, g, em $s0, $s1, Código compilado do MIPS: bne $s3, $s4, Else add $s0, $s1, $s2 j Exit Else: sub $s0, $s1, $s2 Exit: Exemplo: Compilando Assembler calculates addresses sentenças if 46

47 Código C: while (save[i] == k) i += 1; i em $s3, k em $s5, endereço base do save está $s6 Código compilado do MIPS: Loop: sll $t1, $s3, 2 add $t1, $t1, $s6 lw $t0, 0($t1) bne $t0, $s5, Exit addi $s3, $s3, 1 j Loop Exit: Exemplo: Compilando sentenças de Loop 47

48 Um bloco básico é uma sequência de instruções com: Nenhuma instrução de desvio (exceto no final) Nenhum alvo de uma instrução de desvio (exceto no começo) Um compilador identifica blocos básicos para otimizações; Um processador avançado pode acelerar a execução de um bloco básico. Blocos básicos 48

49 Seta o resultado para 1 se a condição é verdadeira: Caso contrário, seta para 0; slt rd, rs, rt Se (rs < rt) então rd = 1, caso contrário rd = 0; slti rt, rs, constante Se (rs < constante) então rt = 1, caso contrário rt = 0; Usado em combinação com beq, bne: slt $t0, $s1, $s2 # if ($s1 < $s2) bne $t0, $zero, L # branch to L Mais operações condicionais 49

50 Por que não blt, bge, etc? Hardware para <,, é mais lento que =, Combinando isso com o branch em si envolve mais trabalho por instrução, levando um clock mais lento; Todas as intruções seriam penalizadas! beq e bne são os casos mais comuns; Este é um bom compromisso de projeto (princípio 4); Projeto das instruções de desvio 50

51 Comparação com sinal: slt, slti Comparação sem sinal: sltu, sltui Exemplo: $s0 = $s1 = slt $t0, $s0, $s1 # signed 1 < +1 $t0 = 1 sltu $t0, $s0, $s1 # unsigned +4,294,967,295 > +1 $t0 = 0 Sinal vs. Sem sinal 51

52 CHAMADA DE PROCEDIMENTOS 52

53 Passos de uma chamada de procedimento: 1. Colocar parâmetros nos registradores; 2. Transferir o controle para o procedimento; 3. Adquirir espaço de armazenamento para o procedimento; 4. Executar as operações do procedimento; 5. Colocar o resultado em um registrador para quem chamou o procedimento; 6. Retornar para o local da chamada. Chamada de procedimento 53

54 $a0 $a3: parâmetros (reg s 4 7); $v0, $v1: retorno (reg s 2 e 3); $t0 $t9: temporários: Podem ser sobrescritos pelo procedimento; $s0 $s7: salvos ou globais: Devem ser salvos/recuperados pelo procedimento; $gp: Ponteiro global para dados estáticos (reg 28); $sp: Ponteiro da pilha (stack pointer) (reg 29); $fp: Ponteiro da janela (frame pointer) (reg 30); $ra: Endereço para retorno do procedimento (reg 31). Convenção: Uso de registradores 54

55 Chamada de procedimento: jump and link (pular e conectar): jal <rótulo> Salva o endereço da instrução seguinte ao jal no $ra (link); Pula para o endereço alvo (rótulo); Retorno de procedimento: jump register (pular para o registrador): jr $ra Copia $ra no contador de programa; Instruções para chamar procedimentos 55

56 C code: int leaf_exemple (int g, h, i, j) { int f; f = (g + h) - (i + j); return f; } Parâmetros g,, j em $a0,, $a3 f em $s0 (obriga a salvar $s0 na pilha) Resultado em $v0 Exemplo: Chamada de procedimento folha 56

57 Código MIPS: leaf_example: addi $sp, $sp, -4 sw $s0, 0($sp) add $t0, $a0, $a1 add $t1, $a2, $a3 sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) addi $sp, $sp, 4 jr $ra Save $s0 on stack Procedure body Result Restore $s0 Return Exemplo: Chamada de procedimento folha 57

58 Procedimentos que chamam outros procedimentos; Para uma chamada aninhada, os procedimentos devem salvar na pilha: O seu endereço de retorno; Quaisquer parâmetros e temporários que serão necessários após a chamada do outro procedimento; Retirar dados da pilha após a chamada. Procedimentos não- folha 58

59 Código C: int fact (int n) { if (n < 1) return f; else return n * fact(n - 1); } Parâmetros em $a0 Resultado em $v0 Exemplo: Procedimento não- folha 59

60 Código MIPS: fact: addi $sp, $sp, -8 # adjust stack for 2 items sw $ra, 4($sp) # save return address sw $a0, 0($sp) # save argument slti $t0, $a0, 1 # test for n < 1 beq $t0, $zero, L1 addi $v0, $zero, 1 # if so, result is 1 addi $sp, $sp, 8 # pop 2 items from stack jr $ra # and return L1: addi $a0, $a0, -1 # else decrement n jal fact # recursive call lw $a0, 0($sp) # restore original n lw $ra, 4($sp) # and return address addi $sp, $sp, 8 # pop 2 items from stack mul $v0, $a0, $v0 # multiply to get result jr $ra # and return 60

61 ORGANIZAÇÃO DA MEMÓRIA 61

62 Variáveis locais armazenadas pelo procedimento; Janela do procedimento (frame): Usado por alguns compiladores para gerenciar o armazenamento na pilha Dados locais na pilha 62

63 Text: código do programa; Static Data: variáveis globais: Ex. variáveis estáticas em C, arrays constantes e strings; $gp inicializado para tratar endereços nesse segmento; Dynamic Data: heap: Ex. malloc em C, new em Java; Stack: armazenamento automático; Layout da Memória 63

64 MANIPULANDO DADOS 64

65 Conjunto de caracteres codificados em bytes: ASCII: 128 caracteres: 95 gráficos, 33 de controle; Latin-1: 256 caracteres: ASCII. +96 caracteres gráficos; Unicode: conjunto de caracteres de 32 bits: Usado em Java, C++,... Maioria dos alfabetos mundiais, mais símbolos; UTF-8, UTF-16: tamanhos variáveis de codificação. Caracteres 65

66 Load/store byte/halfword instruções do MIPS: Utilizado principalmente para trabalhar com strings; lb rt, offset(rs) lh rt, offset(rs) Estende o sinal para 32 bits em rt lbu rt, offset(rs) lhu rt, offset(rs) Estende zero para 32 bits em rt sb rt, offset(rs) sh rt, offset(rs) Escreve o byte/halfword mais a direita de rt na memória. Operações com byte e meia-palavra 66

67 Código C: String terminada em NULL; void strcpy (char x[], char y[]) { int i; i = 0; while ((x[i]=y[i])!='\0') i += 1; } Endereços de x, y em $a0, $a1; i em $s0. Exemplo: Copiar String 67

68 MIPS code: strcpy: addi $sp, $sp, -4 # adjust stack for 1 item sw $s0, 0($sp) # save $s0 add $s0, $zero, $zero # i = 0 L1: add $t1, $s0, $a1 # addr of y[i] in $t1 lbu $t2, 0($t1) # $t2 = y[i] add $t3, $s0, $a0 # addr of x[i] in $t3 sb $t2, 0($t3) # x[i] = y[i] beq $t2, $zero, L2 # exit loop if y[i] == 0 addi $s0, $s0, 1 # i = i + 1 j L1 # next iteration of loop L2: lw $s0, 0($sp) # restore saved $s0 addi $sp, $sp, 4 # pop 1 item from stack jr $ra # and return Exemplo: Copiar String 68

69 Maioria das constantes são pequenas: Imediato de 16-bits é suficiente; Para uma constante ocasional de 32-bits: lui rt, constant Copia constante de 16 bits para a parte mais significativa do rt Zera os 16 bits menos significativos. lhi $s0, ori $s0, $s0, Constantes de 32-bits 69

70 ENDEREÇAMENTO DE DESVIOS 70

71 As instruções de desvio especificam: Opcode, dois registradores, endereço alvo; Maioria dos desvios são desvios curtos: Para cima ou para baixo: op rs rt constant or address 6 bits 5 bits 5 bits 16 bits Endereçamento relativo ao contador de programa (PC): Endereço Alvo = PC + (offset x 4); OBS: PC já incrementado de 4. Endereçamento de desvios condicionais (branch) 71

72 Os alvos da instruções de jump (j e jal) podem ser qualquer lugar no segmento de texto: O endereço alvo vem codificado na instrução: op address 6 bits 26 bits (Pseudo) endereçamento direto: Endereço Alvo = PC : (address x 4) Concatenação Endereçamento de desvios incodicionais (jump) 72

73 Código de um loop de um exemplo anterior: Assuma que o loop está localizado a partir do endereço 80000: Loop: sll $t1, $s3, add $t1, $t1, $s lw $t0, 0($t1) bne $t0, $s5, Exit addi $s3, $s3, j Loop Exit: Exemplo: Endereçamento alvo 73

74 Se o alvo de um branch é um rótulo muito distante para ser codificado em 16 bits, então o Assembler reescreve o código da seguinte forma: Exemplo: beq $s0,$s1, L1 bne $s0,$s1, L2 j L1 L2: Desvios condicionais para áreas distantes 74

75 Resumo dos modos de endereçamento 75

76 SINCRONIZAÇÃO 76

77 Dois processadores compartilhando ao mesma região de memória: P1 escreve, então P2 lê; Condição de corrida de P1 e P2 não sincronizarem: Resultado vai depender da ordem dos acessos; Necessário suporte de hardware: Operação atômica de leitura/escrita na memória; Ninguém acessa o dado entre a leitura e a escrita; Pode ser uma instrução única: Ex. swap atômico entre registrador e memória; Ou um par de instruções atômicas. Sincronização 77

78 Load Linked: ll rt, offset(rs) Store Conditional: sc rt, offset(rs) Sucesso se o endereço não mudou desde o ll: Retorna 1 em rt; Falha se o endereço mudou: Retorna 0 em rt; Sincronização no MIPS 78

79 Swap atômico (test/set lock) try: add $t0,$zero,$s4 ;copy exchange value ll $t1,0($s1) ;load linked sc $t0,0($s1) ;store conditional beq $t0,$zero,try ;branch store fails add $s4,$zero,$t1 ;put load value in $s4 Exemplo: Swap atômico 79

80 TRADUÇÃO E INICIALIZAÇÃO 80

81 Many compilers produce object modules directly Static linking Tradução e Inicialização 81

82 Maioria das instruções do Assembler representam instruções de máquina de uma-para-um; Pseudoinstruções: fruto da imaginação do Assembler: move $t0, $t1 add $t0, $zero, $t1 blt $t0, $t1, L slt $at, $t0, $t1 bne $at, $zero, L $at (register 1): assembler temporary Pseudoinstruções 82

83 Provê informações para a construção de um programa completo a partir dos pedaços: Header: descreve o conteúdo do código objeto; Text Segment: instruções traduzidas; Static Data Segment: dados alocados durante a vida do programa (variáveis globais); Relocation Info: para conteúdos que dependem da localização absoluta do programa carregado; Symbol Table: definições globais e referências externas; Debug Info: para associação com o código fonte. Produzindo um Código Objeto (Partes dos Programas) 83

84 Produz uma imagem executável: 1. Unifica os segmentos; 2. Resolve os rótulos (determina o seus endereços); 3. Corrige as referências externas e as dependente de localização; Pode deixar as dependências de localização para serem corrigidas durante o processo de Loader: Com memória virtual, isso não é necessário; Programa pode ser carregado em uma localização absoluta no espaço da memória virtual. Linkando Código Objeto 84

85 Carrega o arquivo de imagem do disco para a memória: 1. Lê o Header para determinar o tamanho dos segmentos; 2. Cria um espaço de endereçamento virtual; 3. Copia instruções e os dados inicializados para a memória: Ou configura as entradas da tabela de páginas para que ocorram faltas; 4. Carrega os argumentos na pilha; 5. Inicializa os registradores (incluindo $sp, $fp, $gp); 6. Desvia para a rotina de inicialização: Copia os argumentos para $a0,... e chama a main ; Quando a main retorna, executa a Syscall Exit. Carregando um programa 85

86 Só carrega/linka a biblioteca de procedimentos quando é chamada: Necessita que o código do procedimento seja realocável; Evita o inchaço do executável causado pela linkagem estática de todas as bibliotecas referenciadas; Automaticamente pega novas versões das bibliotecas. Linkagem Dinâmica 86

87 Indirection table Stub: Loads routine ID, Jump to linker/loader Linker/loader code Dynamically mapped code Lazy Linkage 87

88 Simple portable instruction set for the JVM Compiles bytecodes of hot methods into native code for host machine Interprets bytecodes Iniciando aplicações Java 88

89 COLOCANDO TUDO JUNTO 89

90 Ilustra o uso de instruções em Assembly para uma função de Bubble Sort em C; Procedimento de SWAP (folha): void swap(int v[], int k) { int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } v em $a0, k em $a1, temp em $t0 Exemplo: Ordenação em C 90

91 swap: sll $t1, $a1, 2 # $t1 = k * 4 add $t1, $a0, $t1 # $t1 = v+(k*4) # (address of v[k]) lw $t0, 0($t1) # $t0 (temp) = v[k] lw $t2, 4($t1) # $t2 = v[k+1] sw $t2, 0($t1) # v[k] = $t2 (v[k+1]) sw $t0, 4($t1) # v[k+1] = $t0 (temp) jr $ra # return to calling routine Procedimento de SWAP 91

92 Não-folha (chama swap): void sort (int v[], int n) { int i, j; for (i = 0; i < n; i += 1) { for (j = i 1; j >= 0 && v[j] > v[j + 1]; j -= 1) { swap(v,j); } } } v em $a0, k em $a1, i em $s0, j em $s1 Procedimento de ordenação em C 92

93 move $s2, $a0 # save $a0 into $s2 move $s3, $a1 # save $a1 into $s3 move $s0, $zero # i = 0 for1tst: slt $t0, $s0, $s3 # $t0 = 0 if $s0 $s3 (i n) beq $t0, $zero, exit1 # go to exit1 if $s0 $s3 (i n) addi $s1, $s0, 1 # j = i 1 for2tst: slti $t0, $s1, 0 # $t0 = 1 if $s1 < 0 (j < 0) bne $t0, $zero, exit2 # go to exit2 if $s1 < 0 (j < 0) sll $t1, $s1, 2 # $t1 = j * 4 add $t2, $s2, $t1 # $t2 = v + (j * 4) lw $t3, 0($t2) # $t3 = v[j] lw $t4, 4($t2) # $t4 = v[j + 1] slt $t0, $t4, $t3 # $t0 = 0 if $t4 $t3 beq $t0, $zero, exit2 # go to exit2 if $t4 $t3 move $a0, $s2 # 1st param of swap is v (old $a0) move $a1, $s1 # 2nd param of swap is j jal swap # call swap procedure addi $s1, $s1, 1 # j = 1 j for2tst # jump to test of inner loop exit2: addi $s0, $s0, 1 # i += 1 j for1tst # jump to test of outer loop Corpo do procedimento Move params Outer loop Inner loop Pass params & call Inner loop Outer loop 93

94 sort: addi $sp,$sp, 20 # make room on stack for 5 registers sw $ra, 16($sp) # save $ra on stack sw $s3,12($sp) # save $s3 on stack sw $s2, 8($sp) # save $s2 on stack sw $s1, 4($sp) # save $s1 on stack sw $s0, 0($sp) # save $s0 on stack # procedure body exit1: lw $s0, 0($sp) # restore $s0 from stack lw $s1, 4($sp) # restore $s1 from stack lw $s2, 8($sp) # restore $s2 from stack lw $s3,12($sp) # restore $s3 from stack lw $ra,16($sp) # restore $ra from stack addi $sp,$sp, 20 # restore stack pointer jr $ra # return to calling routine Procedimento completo 94

95 Compiled with gcc for Pentium 4 under Linux Relative Performance none O1 O2 O Instruction count none O1 O2 O Clock Cycles none O1 O2 O3 Efeitos da otimização do compilador CPI none O1 O2 O3 95

96 3 Bubblesort Relative Performance C/none C/O1 C/O2 C/O3 Java/int Java/JIT 2.5 Quicksort Relative Performance C/none C/O1 C/O2 C/O3 Java/int Java/JIT 3000 Quicksort vs. Bubblesort Speedup Efeitos da C/none C/O1 C/O2 C/O3 Java/int Java/JIT linguagem e algoritmo 96

97 Número de instruções e CPI não são bons avaliadores de de desempenho isolados; Otimizações do compilador são sensíveis ao algoritmo; Código compilado para Java/JIT é significantemente mais rápido que o interpretado pela JVM: Comparável com o código C otimizado; Nada pode corrigir um algoritmo ruim! Lições aprendidas 97

98 Indexar array envolve: Multiplicação do índice pelo tamanho do elemento; Adicionar ao endereço base do array; Ponteiros corresponde diretamente ao endereço da memória: Evita a complexidade de indexação. Arrays vs. Ponteiros 98

99 clear1(int array[], int size) { int i; for (i = 0; i < size; i += 1) array[i] = 0; } move $t0,$zero # i = 0 loop1: sll $t1,$t0,2 # $t1 = i * 4 add $t2,$a0,$t1 # $t2 = # &array[i] sw $zero, 0($t2) # array[i] = 0 addi $t0,$t0,1 # i = i + 1 slt $t3,$t0,$a1 # $t3 = # (i < size) bne $t3,$zero,loop1 # if ( ) # goto loop1 clear2(int *array, int size) { int *p; for (p = &array[0]; p < &array[size]; p = p + 1) *p = 0; } move $t0,$a0 # p = & array[0] sll $t1,$a1,2 # $t1 = size * 4 add $t2,$a0,$t1 # $t2 = # &array[size] loop2: sw $zero,0($t0) # Memory[p] = 0 addi $t0,$t0,4 # p = p + 4 slt $t3,$t0,$t2 # $t3 = #(p<&array[size]) bne $t3,$zero,loop2 # if ( ) # goto loop2 Exemplo: Limpando um array 99

100 Multiplicar a força reduzida do uso do shift; Versão com array necessita que os shifts estejam dentro do loop; Parte do cálculo do índice para o i incrementado; Compilador por alcançar o mesmo efeito com o uso manual de ponteiros: Eliminação da variável de indução; Melhor para fazer o programa mais claro e seguro; Comparação entre Array e Ponteiro 100

101 ARM: processador embarcado mais popular; Conjunto de instruções similar ao do MIPS; ARM MIPS Date announced Instruction size 32 bits 32 bits Address space 32-bit flat 32-bit flat Data alignment Aligned Aligned Data addressing modes 9 3 Registers bit bit Input/output Memory mapped Memory mapped Similaridades ARM & MIPS 101

102 Usa códigos condicionais para resultado de uma operação lógica/aritmética; Negativo, zero, carry, overflow; Compara instruções para mudar os código de condição sem manter o resultado; Cada instrução pode ser condicional: 4 bits mais significativos da instrução: valor da condição; Evita branchs sobre instruções simples. Comparação e Desvio no ARM 102

103 Codificação das Instruções 103

104 Evolução com compatibilidade: 8080 (1974): 8-bit microprocessor Accumulator, plus 3 index-register pairs 8086 (1978): 16-bit extension to 8080 Complex instruction set (CISC) 8087 (1980): floating-point coprocessor Adds FP instructions and register stack (1982): 24-bit addresses, MMU Segmented memory mapping and protection (1985): 32-bit extension (now IA-32) Additional addressing modes and operations Paged memory mapping as well as segments Intel x86 ISA 104

105 ... i486 (1989): pipelined, on-chip caches and FPU Compatible competitors: AMD, Cyrix, Pentium (1993): superscalar, 64-bit datapath Later versions added MMX (Multi-Media extension) instructions The infamous FDIV bug Pentium Pro (1995), Pentium II (1997) New microarchitecture (see Colwell, The Pentium Chronicles) Pentium III (1999) Added SSE (Streaming SIMD Extensions) and associated registers Pentium 4 (2001) New microarchitecture Added SSE2 instructions Intel x86 ISA 105

106 ... AMD64 (2003): extended architecture to 64 bits EM64T Extended Memory 64 Technology (2004) AMD64 adopted by Intel (with refinements) Added SSE3 instructions Intel Core (2006) Added SSE4 instructions, virtual machine support AMD64 (announced 2007): SSE5 instructions Intel declined to follow, instead Advanced Vector Extension (announced 2008) Longer SSE registers, more instructions Se a Intel não estender a compatibilidade, seus concorrentes irão! Technical elegance market success Intel x86 ISA 106

107 Registradores do x86 107

108 Dois operandos por instrução: Source/dest operand Register Register Register Memory Memory Second source operand Register Immediate Memory Register Immediate Modos de endereçamento da memória: Address in register Address = R base + displacement Address = R base + 2 scale R index (scale = 0, 1, 2, or 3) Address = R base + 2 scale R index + displacement Modos de endereçamento x86 108

109 Tamanho da codificação variável: Sufixo especifica o modo de endereçamento; Prefixo modifica a operação: Codificação das instruções Tamanho do operado, repetição, travamento,... do x86 109

110 Instruções complexas fazem a implementação difícil: Hardware traduz instruções para microoperações mais simples: Instruções simples: 1 1; Instruções complexas: 1 muitos; Microengine similar a um RISC; Marke share tornou isto economicamente viável; Desempenho comparável ao RISC: Compiladores evitam instruções complexas. Implementando IA

111 Instruções poderosas alto desempenho: Poucas instruções necessárias; Instruções complexas são difíceis de implementar: Podem deixar lenta todas as instruções, incluindo as simples; Compiladores são bons em fazer código rápido com instruções simples; Uso de código Assembly para alto desempenho: Compiladores modernos conseguem lidar melhor com processadores modernos; Mais linhas de código mais erros e menos produtividade Falácias 111

112 Compatibilidade conjunto de instruções não muda: Eles acrescentam mais instruções. x86 instruction set Falácias 112

MIPS. Prof. Carlos Bazilio http://www.ic.uff.br/~bazilio bazilio@ic.uff.br

MIPS. Prof. Carlos Bazilio http://www.ic.uff.br/~bazilio bazilio@ic.uff.br MIPS Prof. Carlos Bazilio http://www.ic.uff.br/~bazilio bazilio@ic.uff.br Introdução Plataforma projetada da parceria entre NEC, Nintendo, Silicon Graphics e Sony Possui um conjunto de instruções que e

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 6: 27 de abril de 2010 1 Recaptulando operações já estudadas Operações lógicas 2 3 Exercícios Referências bibliográficas Recaptulando operações já estudadas Operações

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 8: 04 de maio de 2010 1 Formatos de instruções MIPS 2 Endereçamento de operandos imediatos de 32 bits Endereçamento em desvios Modos de endereçamento do MIPS 3

Leia mais

Arquitetura de Computadores. Linguagem de Máquina

Arquitetura de Computadores. Linguagem de Máquina Arquitetura de Computadores Linguagem de Máquina Ivan Saraiva Silva Formato de Instrução MAC O MIC possui dois formatos de instrução: 4 bits 12 bits Formato 1 CODOP ENDEREÇO 8 bits 8 bits Formato 2 CODOP

Leia mais

Conjunto de Instruções e Arquitectura p.1

Conjunto de Instruções e Arquitectura p.1 Conjunto de Instruções e Arquitectura Luís Nogueira luis@dei.isep.ipp.pt Departamento Engenharia Informática Instituto Superior de Engenharia do Porto Conjunto de Instruções e Arquitectura p.1 Organização

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Universidade Federal de Santa Catarina Centro Tecnológico Curso de Pós-Graduação em Ciência da Computação Aula 2 Arquitetura do Processador MIPS: características gerais, registradores, formatos de instrução,

Leia mais

Aula 14: Instruções e Seus Tipos

Aula 14: Instruções e Seus Tipos Aula 14: Instruções e Seus Tipos Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Instruções e Seus Tipos FAC 1 / 35 Conceitos Básicos Diego Passos

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

Leia mais

Arquitetura de Computadores. Assembly Miscelâneas. Mário O. de Menezes. http://www.tf.ipen.br/~mario

Arquitetura de Computadores. Assembly Miscelâneas. Mário O. de Menezes. http://www.tf.ipen.br/~mario Arquitetura de Computadores Assembly Miscelâneas Mário O. de Menezes http://www.tf.ipen.br/~mario AC Mário O. de Menezes 1 Lembrando Instruções Lógicas e Shift operam em bits individuais, diferente de

Leia mais

MODOS DE ENDEREÇAMENTO

MODOS DE ENDEREÇAMENTO UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO ERINALDO SANCHES NASCIMENTO MODOS DE ENDEREÇAMENTO MARINGÁ 2014 SUMÁRIO 6 MODOS DE ENDEREÇAMENTO...2 6.1 ENDEREÇAMENTO

Leia mais

Computadores de Programação (MAB353)

Computadores de Programação (MAB353) Computadores de Programação (MAB353) Aula 7: 29 de abril de 2010 1 2 Subrotinas Um procedimento ou função é uma subrotina armazenada que executa uma tarefa específica baseada nos parâmetros de entrada

Leia mais

Anotações da 2a Edição

Anotações da 2a Edição Anotações da 2a Edição OBS: Essas anotações são adaptações do material suplementar (apresentações PPT) ao Livro do Hennessy e Patterson. Supõe-se que os estudantes tenham noções de lógica digital e linguagem

Leia mais

MIPS ISA (Instruction Set Architecture)

MIPS ISA (Instruction Set Architecture) MIPS ISA (Instruction Set Architecture) MIcroprocessor without Interlocking Pipeline Stages MIPS Processador RISC de 32 bits Referência dos Processadores RISC Mais de 100 Milhões de processadores vendidos

Leia mais

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2) Arquitectura de um computador Caracterizada por: Conjunto de instruções do processador (ISA Estrutura interna do processador (que registadores existem, etc Modelo de memória (dimensão endereçável, alcance

Leia mais

Infraestrutura de Hardware. Instruindo um Computador

Infraestrutura de Hardware. Instruindo um Computador Infraestrutura de Hardware Instruindo um Computador Componentes de um Computador Unid. Controle Controle Memória Registradores PC MAR IR AC Programa + Dados Instrução Endereço Operando ALU Temp Datapath

Leia mais

Sistemas de Computação. Instruções de Linguagem de Máquina

Sistemas de Computação. Instruções de Linguagem de Máquina Instruções de Linguagem de Máquina Linguagem de montagem do processador MIPS Operações aritméticas Instrução Exemplo Significado soma add a, b, c a = b + c subtração sub a, b, c a = b - c Compilação de

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

Leia mais

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann Universidade Federal de Santa Maria NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann O modelo (ou arquitetura) de von

Leia mais

Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios

Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios 1) Explore conversões de números a partir de números binárias com sinal e sem sinal para decimal:

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100

Leia mais

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X Índice Traduzindo e iniciando uma aplicação Compiladores Assembladores Linkers Loaders DLLs Iniciando um programa em Java Após toda a matéria abordada nesta

Leia mais

Sistemas Processadores e Periféricos Aula 2 - Revisão

Sistemas Processadores e Periféricos Aula 2 - Revisão Sistemas Processadores e Periféricos Aula 2 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão

Leia mais

SSC0114 Arquitetura de Computadores

SSC0114 Arquitetura de Computadores SSC0114 Arquitetura de Computadores 3ª Aula Arquitetura MIPS: ISA, Formato das instruções e Modos de endereçamento MIPS Monociclo: Caminho de Dados e Unidade de Controle Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br

Leia mais

Conjunto de. Instrução MIPS. Parte II. Instruções MIPS. Instruções MIPS. Instruções MIPS :: Instruções lógicas. :: Instruções lógicas

Conjunto de. Instrução MIPS. Parte II. Instruções MIPS. Instruções MIPS. Instruções MIPS :: Instruções lógicas. :: Instruções lógicas Faculdade de Ciências Aplicadas e Sociais de Petrolina FACAPE Conjunto de Pae II Transferência de Dados Lógicas Controle Supoe a procedimentos Prof. Sérgio Adaptado dos slides de Sistemas Processadores

Leia mais

Conjunto de Instruções. Conjunto de Instruções

Conjunto de Instruções. Conjunto de Instruções Conjunto de Instruções It is easy to see by formal-logical methods that there exist certain [instruction sets] that are in abstract adequate to control and cause the execution of any sequence of operations...

Leia mais

Introdução à Arquitetura de Computadores

Introdução à Arquitetura de Computadores 1 Introdução à Arquitetura de Computadores Hardware e software Organização de um computador: Processador: registradores, ALU, unidade de controle Memórias Dispositivos de E/S Barramentos Linguagens de

Leia mais

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 04: ASPECTO BÁSICO DO PROJETO DE UMA CPU SIMPLES E LINGUAGEM DE MONTAGEM Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia

Leia mais

RISC simples. Aula 7. 31 de Março de 2005 1

RISC simples. Aula 7. 31 de Março de 2005 1 RISC simples Aula 7 31 de Março de 2005 1 Estrutura desta aula Principais características dos processadores RISC Estrutura de um processador (MIPS) sem pipeline, de ciclo único O datapath ou circuito de

Leia mais

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE CIÊNCIAS DA COMPUTAÇÃO Rafael Vargas Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Leia mais

Conjunto de Instruções

Conjunto de Instruções Conjunto de Instruções Para comandar o hardware do computador, é necessário que falemos sua língua: As palavras da linguagem de máquina são chamadas de instruções; O vocabulário forma o conjunto de instruções,

Leia mais

Componentes do Computador e. aula 3. Profa. Débora Matos

Componentes do Computador e. aula 3. Profa. Débora Matos Componentes do Computador e modelo de Von Neumann aula 3 Profa. Débora Matos O que difere nos componentes que constituem um computador? Princípios básicos Cada computador tem um conjunto de operações e

Leia mais

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture Registradores na Arquitetura MIPS 29/4/2016 MIPS - Instruction Set Architecture 1 Mapa de Memória da Arq. MIPS 2 GB 2 GB 256 MB 64 KB 2 GB 64 KB 256 4 MB 4 MB 29/4/2016 MIPS - Instruction Set Architecture

Leia mais

Organização e Arquitetura de computadores

Organização e Arquitetura de computadores Organização e Arquitetura de computadores Instruções: a linguagem de máquina Prof. Dr. Luciano José Senger Introdução Operações no hardware do computador Operandos do hardware do computador Representando

Leia mais

Primeiro nível desenvolvido, historicamente Atualmente existente entre o nível da microarquitetura e do sistema operacional

Primeiro nível desenvolvido, historicamente Atualmente existente entre o nível da microarquitetura e do sistema operacional Capítulo 5 Nível ISA Primeiro nível desenvolvido, historicamente Atualmente existente entre o nível da microarquitetura e do sistema operacional Compatibilidade com os níveis ISA anteriores!! => Pressão

Leia mais

Sistemas Processadores e Periféricos Aula 5 - Revisão

Sistemas Processadores e Periféricos Aula 5 - Revisão Sistemas Processadores e Periféricos Aula 5 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão

Leia mais

SSC0611 Arquitetura de Computadores

SSC0611 Arquitetura de Computadores SSC0611 Arquitetura de Computadores 2ª e 3ª Aulas Arquitetura MIPS: ISA, Formato das instruções e Modos de endereçamento Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br 1 Arquitetura MIPS MIPS: Microprocessor

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).

Leia mais

Conjunto de Instruções MIPS

Conjunto de Instruções MIPS Conjunto de Instruções MIPS Ch3-1 RISC X CISC RISC (Reduced Instruction Set Computer) CISC (Complex Instruction Set Computer) 1. Instruções simples 2. Referencias a memória só com LOAD/STORE 3. Uso intensivo

Leia mais

Organização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções

Organização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções Capítulo 2 Hennessy Patterson 1 Instruções Linguagem da máquina Vamos trabalhar com a arquitetura do conjunto de instruções MIPS (Micrrocessor without interlocked pipeline stages Micrrocessador sem estágios

Leia mais

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto: Processadores BIP A família de processadores BIP foi desenvolvida por pesquisadores do Laboratório de Sistemas Embarcados e Distribuídos (LSED) da Universidade do Vale do Itajaí UNIVALI com o objetivo

Leia mais

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR Introdução Instruções são representadas em linguagem de máquina (binário) E x i s t e m l i n g u a g e n

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

2 Formalidades referentes ao trabalho

2 Formalidades referentes ao trabalho Bacharelado em Ciência da Computação DINF / UFPR Projetos Digitais e Microprocessadores 1 o Semestre de 2006 MICO-v12.r0 07/03/2006 Profs. Luis Allan Künzle e Armando Luiz Nicolini Delgado Atenção: Este

Leia mais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas

Leia mais

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software ANHANGUERA EDUCACIONAL Capítulo 2 Conceitos de Hardware e Software Hardware Um sistema computacional é um conjunto de de circuitos eletronicos. Unidade funcionais: processador, memória principal, dispositivo

Leia mais

Caminho dos Dados e Atrasos

Caminho dos Dados e Atrasos Caminho dos Dados e Atrasos Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Pipeline MIPS O MIPS utiliza um pipeline com profundidade 5, porém

Leia mais

Descrição e análise da implementação em Assembly MIPS da função itoa

Descrição e análise da implementação em Assembly MIPS da função itoa Descrição e análise da implementação em Assembly MIPS da função itoa Alana Rocha 1, Guilherme Alves 2, Guilherme Nunes 3 e Luiz Guilherme 4 Objetivo e visão geral do documento Este documento tem o objetivo

Leia mais

ArchC. Wesley Nunes Gonçalves

ArchC. Wesley Nunes Gonçalves Implementação do Processador ARM7 em ArchC Wesley Nunes Gonçalves 23 de novembro de 2007 ARM7 Instruções Implementadas O ARM possui 37 registradores, sendo 31 registradores de propósito geral e 6 registradores

Leia mais

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy) Capítulo 4 João Lourenço Joao.Lourenco@di.fct.unl.pt Faculdade de Ciências e Tecnologia Universidade Nova de Lisboa 2007-2008 MARIE (Machine Architecture Really Intuitive and Easy) Adaptado dos transparentes

Leia mais

Geração de código intermediário. Novembro 2006

Geração de código intermediário. Novembro 2006 Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas

Leia mais

Arquitetura de Computadores I Prof. Ricardo Santos (Cap 2)

Arquitetura de Computadores I Prof. Ricardo Santos (Cap 2) Arquitetura de Computadores I Prof. Ricardo Santos ricr.santos@gmail.com (Cap 2) 1 Fluxo de controle Vimos até agora: beq, bne Uma nova instrução: if $s1 < $s2 then $t0 = 1 slt $t0, $s1, $s2 else $t0 =

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Pipeline Slide 1 Pipeline Pipeline Hazards: Hazards Estruturais Hazards de Dados Hazards de Controle Organização e Arquitetura de Computadores I Caminho de Dados

Leia mais

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva Arquitetura de Computadores - Arquitetura RISC por Helcio Wagner da Silva Introdução RISC = Reduced Instruction Set Computer Elementos básicos: Grande número de registradores de propósito geral ou uso

Leia mais

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2) Arquitetura de Computadores I Prof. Ricardo Santos ricr.santos@gmail.com (Cap 2) Fluxo de Controle Vimos até agora: beq, bne Uma nova instrução: slt $t0, $s1, $s2 if $s1 < $s2 then $t0 = 1 else $t0 = 0

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 5 - O NÍVEL DA LINGUAGEM DE MONTAGEM 1. INTRODUÇÃO É relativamente fácil compreender os fundamentos da programação de computadores, sob o ponto de vista da inteligibilidade dos comandos de alto

Leia mais

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas Conjunto de instruções O Conjunto de Instruções ISA Instruction Set Architecture Alguns conceitos... Linguagem máquina Combinação de 0 s e 1 s organizados segundo palavras que são as instruções que o processador

Leia mais

3. INSTRUÇÕES. Instrução é uma palavra da linguagem de máquina. Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony.

3. INSTRUÇÕES. Instrução é uma palavra da linguagem de máquina. Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony. 3. INSTRUÇÕES Instrução é uma palavra da linguagem de máquina Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony. Operações O MIPS trabalha com 3 operandos. add a,b,c # a b + c

Leia mais

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01 Unidade Central de Processamento (CPU) Processador Renan Manola Introdução ao Computador 2010/01 Componentes de um Computador (1) Computador Eletrônico Digital É um sistema composto por: Memória Principal

Leia mais

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP.

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP. A ARQUITETURA DE UM COMPUTADOR A arquitetura básica de um computador moderno segue ainda de forma geral os conceitos estabelecidos pelo Professor da Universidade de Princeton, John Von Neumann (1903-1957),

Leia mais

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem

Leia mais

ARQUITECTURA DE COMPUTADORES

ARQUITECTURA DE COMPUTADORES ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA III Março 2014 Índice Instruction Set Revisões Procedimentos Stack Comunicar com pessoas ASCII Programar em MIPS estrutura, input e output Programar em MIPS

Leia mais

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10 Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAL É A INTERFACE ENTRE

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Fernando Fonseca Ramos Faculdade de Ciência e Tecnologia de Montes Claros Fundação Educacional Montes Claros 1 Índice 1- Introdução 2- Exemplo de Microarquitetura

Leia mais

Arquitetura de Computadores I

Arquitetura de Computadores I Arquitetura de Computadores I Pipeline -- Conflito de dados paradas e adiantamentos -- Conflito de controle detecção de desvios e descarte de instruções -- Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Capítulo 2. Instruções: Linguagem do Computador

Capítulo 2. Instruções: Linguagem do Computador Capítulo 2 Instruções: Linguagem do Computador Conjunto de Instrução O repertório de instruções de um computador Diferentes computadores possuem diferentes conjuntos de instrução No entanto, com vários

Leia mais

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

Análises Geração RI (representação intermediária) Código Intermediário

Análises Geração RI (representação intermediária) Código Intermediário Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O

Leia mais

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO Geração de código Ivan Ricarte 2008 Sumário Geração de código intermediário Código de três endereços Notação pós-fixa Otimização de código Heurísticas de otimização Geração de código em linguagem simbólica

Leia mais

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Organização de um Computador Típico Memória: Armazena dados e programas. Processador (CPU - Central Processing

Leia mais

Edeyson Andrade Gomes

Edeyson Andrade Gomes Sistemas Operacionais Conceitos de Arquitetura Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Máquinas de Níveis Revisão de Conceitos de Arquitetura 2 Máquina de Níveis Máquina de níveis Computador

Leia mais

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores Prof. Doutora Ana Isabel Leiria Ano Lectivo 2004/05 Prof. Doutora Margarida Madeira e Moura Eng. António Rosado Ano lectivo 2005/06 Pág. 1 Guias das aulas práticas 1. INTRODUÇÃO

Leia mais

Arquitetura de Computadores Moderna

Arquitetura de Computadores Moderna Arquitetura de Computadores Moderna Eduardo Barrére (eduardo.barrere@ice.ufjf.br) DCC/UFJF Baseado no material do prof. Marcelo Lobosco Agenda Visão Geral Objetivos do Curso Ementa Bibliografia Avaliações

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

Leia mais

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento 1 Processadores Computador Processador ( CPU ) Memória E/S Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento 2 Pastilha 3 Processadores (CPU,, Microcontroladores)

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar Componentes de um Computador (5) Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) 2007/01 - INF02597 Com slides de Roberta Lima Gomes

Leia mais

Computador: Hardware + Software

Computador: Hardware + Software Conceitos Básicos de Arquitetura de Computadores Capítulo 3 Computador: Hardware + Software 1 Computador: Hardware + Software Aplicação (Netscape) Software Hardware Compilador Montador Processor Memory

Leia mais

Infraestrutura de Hardware. Instruindo um Computador Ponteiros, Execução de Programas em C e Java, Características do Intel x86

Infraestrutura de Hardware. Instruindo um Computador Ponteiros, Execução de Programas em C e Java, Características do Intel x86 Infraestrutura de Hardware Instruindo um Computador Ponteiros, Execução de Programas em C e Java, Características do Intel x86 Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito

Leia mais

Introdução à Lógica de Programação

Introdução à Lógica de Programação Introdução à Lógica de Programação Sistemas Numéricos As informações inseridas em um computador são traduzidos em dados, ou seja, em sinais que podem ser manipulados pelo computador. O computador trabalha

Leia mais

Arquitetura de Computadores I

Arquitetura de Computadores I Arquitetura de Computadores I Pipeline Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Organização do MIPS: pipeline Visão geral do pipeline Analogia com uma Lavanderia doméstica 1

Leia mais

Prova P4/PS Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans lui+ori syscall 1. .text 2. main: $s0, string 3.

Prova P4/PS Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans lui+ori syscall 1. .text 2. main: $s0, string 3. Prova P4/PS Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans Aluno: 30/novembro/2012 1. (4 pontos) Assumindo uma frequência de relógio de 500 MHz para a organização MIPS multiciclo

Leia mais

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS Datapath do MIPS MIPS Implementação Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS Instruções de leitura (load lw) e de escrita (store sw) Instruções aritméticas e lógicas

Leia mais

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Linguagem de Montagem Slide 1 Operações Lógicas Embora os primeiros computadores se concentrassem em words completas, logo ficou claro que era útil atuar sobre

Leia mais

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara Carga Horária: 60h Sumário Unidade Lógica Aritmetrica Registradores Unidade Lógica Operações da ULA Unidade de Ponto Flutuante Representação

Leia mais

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento Infraestrutura de Hardware Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de

Leia mais

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução Arquitetura e Organização de Computadores Capítulo 0 - Introdução POR QUE ESTUDAR ARQUITETURA DE COMPUTADORES? 2 https://www.cis.upenn.edu/~milom/cis501-fall12/ Entender para onde os computadores estão

Leia mais

Aula 26: Arquiteturas RISC vs. CISC

Aula 26: Arquiteturas RISC vs. CISC Aula 26: Arquiteturas RISC vs CISC Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Arquiteturas RISC vs CISC FAC 1 / 33 Revisão Diego Passos

Leia mais

Geração de Back-end LLVM Para o Processador r-vex

Geração de Back-end LLVM Para o Processador r-vex Geração de Back-end LLVM Para o Processador r-vex Richard Stéffano Martins da Silva Orientação: Prof. Dr. Ricardo Ribeiro dos Santos LSCAD/FACOM/UFMS - Campo Grande - MS - Brasil Julho, 2013 LLVM Roteiro

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

Relembrando desempenho...

Relembrando desempenho... Parte 5 OBS: Essas anotações são adaptações do material suplementar (apresentações PPT) ao Livro do Hennessy e Patterson, 2ª e 3ª Ed. e do Livro do 5ª Ed. A parte final do material corresponde às aulas

Leia mais

Relembrando desempenho...

Relembrando desempenho... Parte 5 OBS: Essas anotações são adaptações do material suplementar (apresentações PPT) ao Livro do Hennessy e Patterson, 2ª e 3ª Ed. e do Livro do 5ª Ed. A parte final do material corresponde às aulas

Leia mais

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis Ciência da Computação Arq. e Org. de Computadores Máquinas Multiníveis Prof. Sergio Ribeiro Computador digital máquina que resolve problemas executando uma série de instruções. Programa conjunto de instruções

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

Aula teórica 3. Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java. Preparado por eng.

Aula teórica 3. Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java. Preparado por eng. Aula teórica 3 Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java Preparado por eng.tatiana Kovalenko Linguagens de Programação Para escrever programas é necessário

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador: Introdução aos Sistemas de Computação (4) Estrutura do tema ISC 1. Representação de informação num computador 2. Organização e estrutura interna dum computador 3. Execução de programas num computador 4.

Leia mais