Notas da terceira edição

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

Download "Notas da terceira edição"

Transcrição

1 Notas da terceira edição Nota: essas notas normalmente são complementadas por outros materiais, como problemas do texto que podem ser trabalhados em sala de aula. É provável que você queira personalizar esse material para que se ajuste às necessidades dos seus alunos. Essas notas foram prepararadas com base em uma turma de alunos que já aprendeu sobre desenvolvimento com lógica e freqüentou um laboratório prático de programação de linguagem assembly que não segue um formato de aula comum. 1

2 Capítulo 1 2

3 Introdução O objetivo deste curso é mostrar como os computadores funcionam Mas o que queremos dizer com a palavra computador? Diferentes tipos: desktop, servidores, dispositivos embutidos Diferentes usos: automóveis, design gráfico, finanças, genética... Diferentes fabricantes: Intel, Apple, IBM, Microsoft, Sun... Diferentes tecnologias subjacentes e diferentes custos! Analogia: Pense em um curso sobre veículos automotivos Muitas semelhanças de um veículo para outro (por exemplo, volantes) Grandes diferenças de um veículo para outro (por exemplo, gasolina, álcool) Melhor maneira de aprender: Concentrar em um exemplo específico e aprender como ele funciona Abordar princípios gerais e perspectivas históricas 3

4 Por que aprender esse assunto? Você deseja se tornar um cientista da computação Você deseja desenvolver softwares utilizáveis (precisam de desempenho) Você precisa tomar uma decisão em relação a uma compra ou oferecer conselhos de especialista Tanto o hardware quanto o software afetam o desempenho: O algoritmo determina o número de instruções na origem Linguagem/compilador/arquitetura determinam as instruções da máquina (Capítulos 2 e 3) Processador/memória determinam a velocidade com que as instruções são executadas (Capítulos 5, 6 e 7) Avaliando e entendendo o desempenho no Capítulo 4 4

5 O que é um computador? Componentes: entrada (mouse, teclado) saída (monitor, impressora) memória (unidades de disco, DRAM, SRAM, CD) rede Nosso foco principal: o processador (caminho de dados e controle) Implementado usando milhões de transistores Impossível de entender olhando para os transistores Precisamos... 5

6 Abstração Uma boa dica para obter mais informações é aprofundar-se nos componentes Uma abstração omite detalhes desnecessários e ajuda a entender a complexidade Programa em linguagem de alto nível (em C) swap (int v[], int k) {int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } Compilador Quais são alguns dos detalhes que aparecem nestas abstrações familiares? Programa em linguagem assembly (para MIPS) swap: muli add lw lw sw sw jr $2, $2, $15, $16, $16, $15 $31 $5, 4 $4, $2 0($2) 4($2) 0($2) 4($2) Assembler Programa em linguagem de máquina binária (para MIPS)

7 Como os computadores funcionam? É preciso entender abstrações como: Software de aplicações Software de sistemas Linguagem assembly Linguagem de máquina Aspectos de arquitetura, como caches, memória virtual, canalização Lógica seqüencial, máquinas de estado finito Lógica combinatória, circuitos aritméticos Lógica booleana, 1s e 0s Transistores usados para construir portões lógicos (CMOS) Semicondutores/silício usados para construir transistores Propriedades dos átomos, elétrons e dinâmica quantitativa Muito o que aprender! 7

8 Arquitetura do conjunto de instruções Uma abstração muito importante interface entre o hardware e o software de baixo nível padroniza instruções, padrões de bits de linguagem de máquina etc. vantagem: diferentes implementações da mesma arquitetura desvantagem: algumas vezes impede o uso de inovações Verdadeiro ou falso: A compatibilidade binária é extremamente importante? Arquiteturas de conjunto de instruções modernas: IA-32, PowerPC, MIPS, SPARC, ARM e outras 8

9 Perspectiva histórica O ENIAC, construído na Segunda Guerra Mundial, foi o primeiro computador de finalidade geral Usado para calcular tabelas de disparo de artilharia 24 metros de comprimento por 2,5 metros de altura e dezenas de centímetros de profundidade Cada um dos 20 registradores de 10 dígitos tinha 60 centímetros de comprimento Usava válvulas Efetuava adições por segundo Desde então: Lei de Moore: A capacidade dos transistores dobra a cada 18 a 24 meses 9

10 Capítulo 2 10

11 Instruções Linguagem da máquina Vamos trabalhar com a arquitetura do conjunto de instruções MIPS Semelhante a outras arquiteturas desenvolvidas desde a década de 1980 Quase 100 milhões de processadores MIPS fabricados em 2002 Usada pela NEC, Nintendo, Cisco, Silicon Graphics, Sony... Milhões de processadores Outro SPARC Hitachi SH PowerPC Motorola 68K MIPS IA-32 ARM

12 Aritmética MIPS Todas as instruções possuem três operandos A ordem do operando é fixa (destino primeiro) Exemplo: Código C: Código MIPS: a = b + c add a, b, c (falaremos sobre registradores em breve) O número natural de operandos para uma operação como adição é três... Exigir que cada instrução tenha exatamente três operandos, nem mais nem menos, está de acordo com a filosofia de manter o hardware simples. 12

13 Aritmética MIPS Princípio de projeto: a simplicidade favorece a regularidade. É claro, isso complica algumas coisas... Código C: a = b + c + d; Código MIPS: add a, b, c add a, a, d Os operandos precisam ser registradores, apenas 32 registradores fornecidos Cada registrador contém 32 bits Princípio de projeto: quanto menor, melhor. Por quê? 13

14 Registradores versus memória Os operandos das instruções aritméticas precisam ser registradores apenas 32 registradores fornecidos O compilador associa variáveis com registradores E quanto aos programas com muitas variáveis? Controle Entrada Caminho de dados Memória Saída Processador E/S 14

15 Organização da memória Vista como um array grande e unidimensional, com um endereço. Um endereço de memória é um índice para o array. Endereçamento de byte significa que o índice aponta para um byte da memória bits de dados 8 bits de dados 8 bits de dados 8 bits de dados 8 bits de dados 8 bits de dados 8 bits de dados 15

16 Organização da memória Os bytes são bons, mas a maioria dos itens de dados usam words maiores Para o MIPS, uma word possui 32 bits ou 4 bytes bits de dados 32 bits de dados 32 bits de dados 32 bits de dados Os registradores armazenam 32 bits de dados 2 32 bytes com endereços de byte de 0 a words com endereços de byte 0, 4, 8, As words são alinhadas Por exemplo, quais são os 2 bits menos significativos de um endereço de word? 16

17 Instruções Instruções load e store Exemplo: Código C: Código MIPS: A[12] = h + A[8]; lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 48($s3) Pode se referir aos registradores por nome (por exemplo, $s2, $t2) em vez do número A instrução store word tem o destino por último Lembre-se de que os operandos são registradores, não memória! Não podemos escrever: add 48($s3), $s2, 32($s3) 17

18 Nosso primeiro exemplo Você pode descobrir o código? swap(int v[ ], int k); { int temp; temp = v[k] v[k] = v[k+1]; v[k+1] = temp; } swap: muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 18

19 Até agora, aprendemos: MIPS carga de words mas endereçamento de bytes aritmética apenas em registradores Instrução Significado add $s1, $s2, $s3 $s1 = $s2 + $s3 sub $s1, $s2, $s3 $s1 = $s2 $s3 lw $s1, 100($s2) $s1 = Memory[$s2+100] sw $s1, 100($s2) Memory[$s2+100] = $s1 19

20 Linguagem de máquina Instruções, como registradores e words de dados, também possuem 32 bits de tamanho Exemplo: add $t1, $s1, $s2 Registradores têm números, $t1=9, $s1=17, $s2=18 Formato da instrução: op rs rt rd shamt funct Você sabe o significado dos nomes de campo? 20

21 Linguagem de máquina Pense nas instruções load-word e store-word O que o princípio da regularidade nos levaria a fazer? Novo princípio: Um bom projeto exige comprometimento Introduza um novo tipo de formato de instrução Tipo I para instruções de transferência de dados Outro formato era o tipo R para o registrador Exemplo: lw $t0, 32($s2) op rs rt número de bit 16 Qual é o compromisso? 21

22 Conceito do programa armazenado Instruções são bits Programas são armazenados na memória para serem lidos ou escritos exatamente como os dados Memória para dados, programas, compiladores, editores etc. Processador Memória Ciclo de execução e busca As instruções são buscadas e colocadas em um registrador especial Os bits no registrador controlam as ações subseqüentes Busca a próxima instrução e continua 22

23 Controle Instruções de tomada de decisão altera o fluxo de controle por exemplo, mudar a próxima instrução a ser executada Instruções de desvio condicionais do MIPS: bne $t0, $t1, Label beq $t0, $t1, Label Exemplo: if (i==j) h = i + j; bne $s0, $s1, Label add $s3, $s0, $s1 Label:... 23

24 Controle Instruções de desvio incondicionais do MIPS: j label Exemplo: if (i!=j) beq $s4, $s5, Lab1 h=i+j; add $s3, $s4, $s5 else j Lab2 h=i-j; Lab1: sub $s3, $s4, $s5 Lab2:... Você pode construir um loop for simples? 24

25 Até agora: Instrução Significado add $s1,$s2,$s3 $s1 = $s2 + $s3 sub $s1,$s2,$s3 $s1 = $s2 $s3 lw $s1,100($s2) $s1 = Memory[$s2+100] sw $s1,100($s2) Memory[$s2+100] = $s1 bne $s4,$s5,l Next instr. is at Label if $s4 $s5 beq $s4,$s5,l Next instr. is at Label if $s4 = $s5 j Label Next instr. is at Label Formatos: R I J op rs rt rd shamt funct op rs rt endereço de 16 bits op endereço de 26 bits 25

26 Fluxo de controle Temos: beq e bne; e branch-if-less-than? Nova instrução: slt $t0, $s1, $s2 if $s1 < $s2 then $t0 = 1 else $t0 = 0 Podemos usar essa instrução para construir blt $s1, $s2, Label agora podemos construir estruturas de controle gerais Note que o assembler precisa de um registrador para fazer isso existe uma política das convenções de uso para registradores 26

27 Política das convenções de uso Nome Número do registrador Uso $zero 0 O valor constante 0 $v0-$v1 2-3 Valores para resultados e avaliação de expressões $a0-$a3 4-7 Argumentos $t0-$t Temporários $s0-$s Valores salvos $t8-$t Mais temporários $gp 28 Ponteiro global $sp 29 Pointeiro de pilha $fp 30 Pointeiro de quadro $ra 31 Endereço de retorno Registrador 1 ($at) reservado para o assembler, para o sistema operacional 27

28 Constantes Constantes pequenas são usadas muito freqüentemente (50% dos operandos) Por exemplo: A = A + 5; B = B + 1; C = C - 18; Soluções? Por que não? coloque constantes típicas na memória e carregue-as. crie registradores hard-wired (como $zero) para constantes como um. Instruções MIPS: addi $29, $29, 4 slti $8, $18, 10 andi $29, $29, 6 ori $29, $29, 4 Princípio de projeto: Torne o caso comum rápido. Que formato? 28

29 E quanto às constantes maiores? Gostaríamos de ser capazes de carregar uma constante de 32 bits em um registrador Precisamos usar duas instruções; nova instrução load upper immediate : lui $t0, preenchido com zeros Depois, precisamos acertar os bits de ordem inferior, por exemplo: ori $t0, $t0, ori

30 Linguagem assembly versus linguagem de máquina O assembly fornece uma representação simbólica conveniente muito mais fácil do que escrever números por exemplo, destino primeiro A linguagem de máquina é realidade subjacente por exemplo, o destino não é mais o primeiro O assembly pode fornecer pseudoinstruções por exemplo, move $t0, $t1 existe apenas no assembly seria mais bem implementada usando add $t0,$t1,$zero Ao considerar o desempenho, você deve contar as instruções reais 30

31 Outras questões Abordadas em seu laboratório de programação de linguagem assembly: suporte para procedimentos linkers, carregadores, layout da memória pilhas, quadros, recursão manipulação de strings e ponteiros interrupções e exceções chamadas de sistema e convenções Veremos alguns desses mais adiante Estudaremos as otimizações de compilador no Capítulo 4. 31

32 Visão geral do MIPS instruções simples, todas com 32 bits muito estruturado, nenhuma bagagem desnecessária apenas três formatos de instrução R I J op rs rt rd shamt funct op rs rt endereço de 16 bits op endereço de 26 bits nos baseamos no compilador para obter desempenho quais são os objetivos do compilador? ajudamos o compilador onde podemos 32

33 Endereços em desvios e jumps Instruções: bne $t4,$t5,label A próxima instrução está em Label se $t4 $t5 beq $t4,$t5,label A próxima instrução está em Label se $t4 = $t5 j Label A próxima instrução está em Label Formatos: I J op rs rt endereço de 16 bits op endereço de 26 bits Os endereços não são de 32 bits Como manipular isso com instruções load e store? 33

34 Endereços em desvios Instruções: bne $t4,$t5,label beq $t4,$t5,label A próxima instrução está em Label se $t4 $t5 A próxima instrução está em Label se $t4=$t5 Formatos: I op rs rt endereço de 16 bits Poderíamos especificar um registrador (como lw e sw) e acrescentá-lo ao endereço use o registrador de endereço de instrução (PC = contador do programa) a maioria dos desvios é local (princípio da localidade) As instruções jump usam apenas bits de ordem superior do PC limites de endereço de 256 MB 34

35 Resumindo Nome Exemplo Comentários 32 registradores 2 30 words na memória $s0-$s7, $t0-$t9, $zero, $a0-$a3, $v0-$v1, $gp, $fp, $sp, $ra, $at Memória[0], Memória[4]... Memória[ ] Operandos MIPS Locais rápidos para dados. No MIPS, os dados precisam estar em registradores para a realização de operações aritméticas. O registrador MIPS $zero sempre é igual a 0. O registrador $at é reservado para o assembler tratar de constantes grandes. Acessadas apenas por instruções de transferência de dados. O MIPS utiliza endereços em bytes, de modo que os endereços em words seqüenciais diferem em 4 vezes. A memória contém estruturas de dados, arrays e spilled registers, como aqueles salvos nas chamadas de procedimento. Assembly do MIPS Categoria Instrução Exemplo Significado Comentários Aritmética add [TD]add $s1,$s2,$s3[tn] [TD]$s1 = $s2 + $s3[tn] Três operandos; dados nos registradores subtract [TD]sub $s1,$s2,$s3[tn] [TD]$s1 = $s2- $s3[tn] Três operandos; dados nos registradores add immediate addi $s1,$s2,100[tn] [TD]$s1=$s [TN] Usada para somar constantes Transferência load word [TD]lw $s1,100($s2)[tn] $s1 = Memória[$s Dados da memória para o registrador de dados store word [TD]sw $s1,100($s2)[tn] Memória[$s ] = $s1 Dados do registrador para a memória load byte lb $s1,100($s2)[tn] $s1 = Memória[$s Byte da memória para o registrador store byte sb $s1,100($s2)[tn] Memória[$s2+100] = $s1 Byte de um registrador para a memória load upper immed. [TD]lui $s1,100[tn] [TD]$s1 = 100 * 2 16 [TN] Carrega constante nos 16 bits mais altos Desvio condicional Desvio incondicional branch on equal beq $s1,$s2,25 if ($s1 == $s2) go to Testa igualdade; desvio relativo ao PC PC branch on not equal bne $s1,$s2,25 if ($s1!= $s2) go to PC Testa desigualdade; relativo ao PC set on less than slt $s1,$s2,$s3 if ($s2 < $s3) $s1 = 1; else $s1 = Compara menor que; usado com beq, bne 0 set less than immediate slti $s1,$s2,100 if ($s2 < 100) $s1 = 1; else $s1 = 0 Compara menor que constante jump j 2500 go to Desvia para endereço de destino jump register jr $ra go to [TD]$ra[TN] Para switch e retorno de procedimento jump and link jal 2500 [TD]$ra[TN] = PC + 4. go to Para chamada de procedimento 35

36 1. Endereçamento imediato op rs rt Imediato 2. Endereçamento em registrador op rs rt rd... funct Registradores Registrador 3. Endereçamento de base op rs rt Endereço Memória Registrador + Byte Halfword Word 4. Endereçamento relativo ao PC op rs rt Endereço Memória PC Word 5. Endereçamento pseudodireto op Endereço Memória PC Word 36

37 Arquiteturas alternativas Alternativa de projeto: forneça operações mais poderosas o objetivo é reduzir o número de instruções executadas o risco é um tempo de ciclo mais lento e/ou uma CPI mais alta O caminho em direção à complexidade da operação é, portanto, repleto de perigos. Para evitar esses problemas, os projetistas passaram para instruções mais simples. Vejamos (brevemente) o IA-32 37

38 IA : O Intel 8086 é anunciado (arquitetura de 16 bits) 1980: O coprocessador de ponto flutuante 8087 é acrescentado 1982: O aumenta o espaço de endereçamento para 24 bits; mais instruções 1985: O estende para 32 bits; novos modos de endereçamento : O 80486, Pentium e Pentium Pro acrescentam algumas instruções (especialmente projetadas para um maior desempenho) 1997: 57 novas instruções MMX são acrescentadas; Pentium II 1999: O Pentium III acrescenta outras 70 instruções (SSE) 2001: Outras 144 instruções (SSE2) 2003: A AMD estende a arquitetura para aumentar o espaço de endereço para 64 bits; estende todos os registradores para 64 bits, além de outras mudanças (AMD64) 2004: A Intel se rende e abraça o AMD64 (o chama EM64T) e inclui mais extensões de mídia Essa história ilustra o impacto das algemas douradas da compatibilidade adicionando novos recursos da mesma forma que se coloca roupas em uma sacola, uma arquitetura difícil de explicar e impossível de amar. 38

39 Visão geral do IA-32 Complexidade: instruções de 1 a 17 bytes de tamanho um operando precisa agir como origem e destino um operando pode vir da memória modos de endereçamento complexos, por exemplo, índice base ou escalado com deslocamento de 8 ou 32 bits Graça salvadora: as instruções mais usadas não são difíceis de construir os compiladores evitam as partes da arquitetura que são lentas O que o 80x86 perde em estilo é compensado na quantidade, tornando-o belo, do ponto de vista apropriado 39

40 Registradores e endereçamento de dados do IA-32 Registradores no subconjunto de 32 bits que surgiram com o Nome EAX ECX EDX EBX ESP EBP ESI EDI EIP EFLAGS 31 0 CS SS DS ES FS GS Uso GPR0 GPR1 GPR2 GPR3 GPR4 GPR5 GPR6 GPR7 Ponteiro do segmento de código Ponteiro do segmento de pilha (topo da pilha) Ponteiro do segmento de dados 0 Ponteiro do segmento de dados 1 Ponteiro do segmento de dados 2 Ponteiro do segmento de dados 3 Ponteiro de instrução (PC) Códigos de condição 40

41 Restrições de registrador do IA-32 Os registradores não são de finalidade geral observe as restrições abaixo Modo Descrição Restrições de registrador Equivalente MIPS Registrador indireto Endereço está em um registrador. não ESP ou EBP lw $s0,0($s1) Modo base com 8 ou 32 bits de deslocamento Base mais índice escalado Base mais índice escalado com 8 ou 32 bits de deslocamento Endereço é o conteúdo do registrador base mais deslocamento. O endereço é Base + (2 Escala x Índice), onde Escala tem o valor 0, 1, 2 ou 3. O endereço é Base + (2 Escala x Índice) + deslocamento, onde Escala tem o valor 0, 1, 2 ou 3. não ESP ou EBP Base: qualquer GPR Índice: não ESP Base: qualquer GPR Índice: não ESP lw $s0,100($s1)#deslocamento 16 bits mul $t0,$s2,4 add $t0,$t0,$s1 lw $s0,0($t0) mul $t0,$s2,4 add $t0,$t0,$s1 lw $s0,100($t0)#deslocamento 16 bits FIGURA 2.42 Modos de endereçamento de 32 bits do IA-32 com restrições de registrador e o código MIPS equivalente. O modo de endereçamento Base mais Índice Escalado, que não aparece no MIPS ou no PowerPC, foi incluído para evitar as multiplicações por quatro (fator de escala 2) para transformar um índice de um registrador em um endereço em bytes (ver Figuras 2.34 e 2.36). Um fator de escala 1 é usado para dados de 16 bits, e um fator de escala 3 para dados de 64 bits. O fator de escala 0 significa que o endereço não é escalado. Se o deslocamento for maior do que 16 bits no segundo ou quarto modos, então o modo MIPS equivalente precisaria de mais duas instruções: um lui para ler os 16 bits mais altos do deslocamento e um add para somar a parte alta do endereço ao registrador base $s1 (a Intel oferece dois nomes diferentes para o que é chamado modo de endereçamento com base - com base e indexado -, mas eles são basicamente idênticos, e os combinamos aqui). 41

42 Instruções típicas do IA-32 Quatro tipos principais de instruções de inteiro: Movimento de dados, incluindo move, push, pop Aritmética e lógica (registrador de destino ou memória) Fluxo de controle (uso de códigos de condição/flags) Instruções de string, incluindo movimento e comparação de strings Instrução Função JE nome se for igual(códigos de condição) {EIP=nome}; EIP-128 nome < EIP+128 JMP nome EIP=nome CALL nome SP=SP-4; M[SP]=EIP+5; EIP=nome; MOVW EBX,[EDI+45] EBX=M[EDI+45] PUSH ESI SP=SP-4; M[SP]=ESI POP EDI EDI=M[SP]; SP=SP+4 ADD EAX,#6765 EAX= EAX+6765 TEST EDX,#42 Define códigos de condição (flags) com EDX e 42 MOVSL M[EDI]=M[ESI]; EDI=EDI+4; ESI=ESI+4 FIGURA 2.43 Algumas instruções IA-32 típicas e suas funções. Uma lista de operações freqüentes aparece na Figura O CALL salva na pilha o EIP da próxima instrução (EIPéoPCdaIntel). 42

43 Formatos de instruções IA-32 Formatos típicos: (observe os diferentes tamanhos) a. JE EIP + deslocamento JE Condição Deslocamento b. CALL 8 32 CALL Deslocamento (offset) c. MOV EBX, [EDI + 45] MOV d w Pós-byte r/m Deslocamento d. PUSH ESI 5 3 PUSH Reg e. ADD EAX, # ADD Reg w Imediato f. TEST EDX, # TEST w Pós-byte Imediato 43

44 Resumo A complexidade da instrução é apenas uma variável instrução mais baixa versus CPI mais alta/velocidade de clock mais baixa Princípios de projeto: a simplicidade favorece a regularidade menor é mais rápido um bom projeto exige comprometimento torne o caso comum rápido Arquitetura do conjunto de instruções uma abstração muito importante! 44

45 Capítulo 3 45

46 Números Bits são apenas bits (nenhum significado inerente) convenções definem a relação entre bits e números Números binários (base 2) decimal: n 1 Obviamente, torna-se mais complicado: números são finitos (overflow) frações e números reais números negativos por exemplo, nenhuma instrução subi do MIPS; addi pode somar um número negativo Como representamos os números negativos? Por exemplo, que padrões de bit representarão esses números? 46

47 Representações possíveis Sinal e magnitude: Complemento a um Complemento a dois 000 = = = = = = = = = = = = = = = = = = = = = = = = 1 Questões: equilíbrio, número de zeros, facilidade de operações Qual é o melhor? Por quê? 47

48 MIPS Números de 32 bits com sinal: bin bin bin bin bin bin bin bin bin bin bin = 0dec = + 1 = + 2 dec dec = + 2,147,483,646 = + 2,147,483,647 = - 2,147,483,648 = - 2,147,483,647 = - 2,147,483,646 = - 3 = - 2 = - 1 dec dec dec dec dec dec dec dec maxint minint 48

49 Operações de complemento a dois Negar um número de complemento a dois: inverta todos os bits e some 1 lembre-se: negar e inverter são muito diferentes! Converter números de n bits em números com mais de n bits: o campo imediato de 16 bits do MIPS é convertido em 32 bits para aritmética copie o bit mais significativo (o bit de sinal) para os outros bits 0010 > > extensão de sinal (lbu versus lb) 49

50 Adição e subtração Exatamente como aprendemos na escola (emprestar/subir 1s) Facilidade de operações do complemento a dois subtração usando adição para números negativos Overflow (resultado muito grande para a word finita do computador): por exemplo, somar dois números de n bits não produz um número de n bits note que o termo overflow é um pouco confuso; 1000 ele não significa que um carry transbordou 50

51 Detectando overflow Nenhum overflow quando somar um número positivo com um negativo Nenhum overflow quando sinais são iguais para subtração O overflow ocorre quando o valor afeta o sinal: overflow ao somar dois positivos produz um negativo ou, somar dois negativos produz um positivo ou, subtraia um negativo de um positivo e obtenha um negativo ou, subtraia um positivo de um negativo e obtenha um positivo Considere as operações A + B e A B Pode ocorrer overflow se B for 0? Pode ocorrer overflow se A for 0? 51

52 Efeitos do overflow Uma exceção (interrupção) ocorre O controle salta para um endereço predefinido para exceção O endereço interrompido é salvo para uma possível retomada Detalhes baseados na linguagem/sistema de software exemplo: controle de vôo versus dever de casa Nem sempre desejamos detectar overflow novas instruções MIPS: addu, addiu, subu Nota: addiu ainda com extensão de sinal Nota: sltu, sltiu para comparações sem sinal 52

53 Multiplicação Mais complexa do que a adição realizada através de deslocamento e adição Mais tempo e mais área Vejamos três versões baseadas em um algoritmo da escola 0010 (multiplicando) x 1011 (multiplicador) Números negativos: converta e multiplique existem técnicas melhores mas não as veremos 53

54 Multiplicação: Implementação Início Multiplicador0 = 1 1. Testar Multiplicador0 Multiplicador0 = 0 Multiplicando Deslocar à esquerda 1a. Soma multiplicando ao produto e coloca o resultado no registrador Produto 64 bits ALU de 64 bits Multiplicador Deslocar à direita 32 bits 2. Deslocar registrador Multiplicando 1 bit à esquerda Produto Escrever Teste de controle 3. Deslocar registrador Multiplicador 1 bit à direita 64 bits 32ª repetição? Não: < 32 repetições Caminho de dados Controle Fim Sim: 32 repetições 54

55 Versão final O multiplicador inicia na metade direita do produto Início Produto0 = 1 1. Testar Produto0 Produto0 = 0 Multiplicando 32 bits ALU de 32 bits Produto Deslocar à direita Escrever Teste de controle 3. Desloque o registrador Produto 1 bit para a direita 64 bits 32ª repetição? Não: < 32 repetições O que entra aqui? Sim: 32 repetições Fim 55

56 Ponto flutuante (um breve exame) Precisamos de uma maneira de representar números com frações, por exemplo, 3,1416 números muito pequenos, por exemplo, 0, números muito grandes, por exemplo, 3, Representação: sinal, expoente, significando: ( 1) sinal significando 2 expoente mais bits para o significando fornece mais precisão mais bits para o expoente aumenta a faixa Padrão de ponto flutuante IEEE 754: precisão única: expoente de 8 bits, significando de 23 bits precisão dupla: expoente de 11 bits, significando de 52 bits 56

57 Padrão de ponto flutuante IEEE 754 O bit 1 inicial do significando está implícito O expoente é desviado para facilitar a classificação todos os 0s são o menor expoente, todos os 1s são o maior desvio do 127 para precisão única e do 1023 para precisão dupla resumo: ( 1) sinal expoente desvio (1 + significando) 2 Exemplo: decimal: 0,75 = ( ½ + ¼ ) binário: 0,11 = 1,1 2 1 ponto flutuante: expoente = 126 = precisão única IEEE:

58 Adição de ponto flutuante Sinal Expoente Fração Sinal Expoente Fração Início ALU pequena 1. Compare os expoentes dos dois números. Desloque o menor número para a direita até que seu expoente combine com o expoente maior. Diferença do expoente 2. Some os significandos Controle Desloca à direita 3. Normalize a soma, deslocando para a direita e incrementando o expoente, ou deslocando para a esquerda e decrementando o expoente. ALU grande Overflow ou underflow? Sim Não Exceção Incrementa ou decrementa Desloca para esquerda ou direita 4. Arredonde o significando para o número de bits apropriado Hardware de arredondamento Não Ainda normalizado? Sim Sinal Expoente Fração Fim 58

59 Complexidades do ponto flutuante As operações são um pouco mais complicadas (veja o texto) Além do overflow podemos ter o underflow A precisão pode ser um grande problema O IEEE 754 mantém dois bits extras, guarda e arredondamento quatro modos de arredondamento positivo dividido por zero produz infinidade zero dividido por zero não produz um número outras complexidades Implementar o padrão pode ser arriscado Não usar o padrão pode ser ainda pior veja no texto a descrição do 80x86 e o bug do Pentium! 59

60 Resumo do Capítulo 3 A aritmética de computador é restrita por uma precisão limitada Os padrões de bit não têm um significado inerente mas existem padrões complemento a dois ponto flutuante IEEE 754 As instruções de computador determinam o significado dos padrões de bit O desempenho e a precisão são importantes; portanto, existem muitas complexidades nas máquinas reais A escolha do algoritmo é importante e pode levar a otimizações de hardware para espaço e tempo (por exemplo, multiplicação) Você fazer uma revisão pode ser uma boa idéia (a Seção 3.10 é uma ótima leitura!) 60

61 Capítulo 4 61

62 Desempenho Meça, informe e resuma Faça escolhas inteligentes Veja através da propaganda de marketing Vital para entender a motivação organizacional subjacente Por que alguns hardwares são melhores do que outros para diferentes programas? Que fatores do desempenho de sistema são relacionados ao hardware? (por exemplo, precisamos de uma nova máquina ou de um novo sistema operacional?) Como o conjunto de instruções da máquina afeta o desempenho? 62

63 Qual destes aviões possui o melhor desempenho? Avião Passageiros Autonomia (milhas) Boeing Boeing BAC/Sud Concorde Douglas DC Velocidade (milhas por hora) O quanto mais rápido é o Concorde comparado com o 747? O quanto maior é o 747 do que o Douglas DC-8? 63

64 Desempenho do computador: TEMPO, TEMPO, TEMPO Tempo de resposta (latência) Quanto tempo leva para meu trabalho ser realizado? Quanto tempo leva para realizar um trabalho? Quanto tempo preciso esperar para a consulta ao banco de dados? Vazão (throughput) Quantos trabalhos a máquina pode realizar ao mesmo tempo? Qual é a velocidade de execução média? Quanto trabalho está sendo feito? Se atualizarmos uma máquina com um novo processador, em que melhoramos? Se acrescentarmos uma máquina ao laboratório, em que melhoramos? 64

65 Tempo de execução Tempo decorrido conta tudo (acessos a disco e a memória, E/S etc.) um número útil, mas normalmente não é ideal para fins de comparação Tempo de CPU não conta E/S ou tempo gasto executando outros programas pode ser dividido em tempo de sistema e tempo de usuário Nosso foco: tempo de CPU do usuário tempo gasto executando as linhas de código que estão em nosso programa 65

66 Definição de desempenho do livro Para um programa sendo executado na máquina X, Desempenho X = 1 / Tempo_execução X X é n vezes mais rápido do que Y Desempenho X / Desempenho Y = n Problema: a máquina A executa um programa em 20 segundos a máquina B executa o mesmo programa em 25 segundos 66

67 Ciclos de clock Em vez de informar o tempo de execução em segundos, normalmente usamos ciclos segundos ciclos segundos = x programa programa ciclos As marcações de clock indicam quando iniciar as atividades (uma abstração): tempo tempo de ciclo = tempo entre as marcações = segundos por ciclo velocidade de clock (freqüência) = ciclos por segundo (1 Hz. = 1 ciclo/segundo) Um clock de 4 Ghz possui um tempo de ciclo de 1 4x10 9 x =250 picosegundos (ps) 67

68 Como melhorar o desempenho segundos ciclos segundos = x programa programa ciclos Portanto, para melhorar o desempenho (tudo mais sendo igual), você pode (aumentar ou diminuir?) o número de ciclos necessários para um programa, ou o tempo de ciclo de clock ou, dito de outra maneira, a velocidade de clock. 68

69 Quantos ciclos são necessários para um programa? Poderíamos considerar que o número de ciclos é igual ao número de instruções 1ª instrução 2ª instrução 3ª instrução 4ª instrução 5ª instrução 6ª instrução... Tempo Essa suposição é incorreta; diferentes instruções levam diferentes períodos de tempo em diferentes máquinas. Por quê? Dica: lembre-se de que essas são instruções de máquina, não linhas de código C. 69

70 Diferentes números de ciclos para diferentes instruções tempo A multiplicação leva mais tempo do que a adição As operações de ponto flutuante levam mais tempo do que as operações de inteiros Acessar a memória leva mais tempo do que acessar os registradores Importante: Mudar o tempo de ciclo normalmente muda o número de ciclos necessários para várias instruções (veja mais posteriormente) 70

71 Exemplo Nosso programa favorito é executado em 10 segundos no computador A, que possui um clock de 4 GHz. Estamos tentando ajudar um projetista de computador a construir uma nova máquina B, que execute esse programa em 6 segundos. O projetista determinou que um aumento substancial na velocidade de clock é possível, mas esse aumento afetará o restante do projeto da CPU, fazendo com que o computador B exija 1,2 vez mais ciclos de clock do que o computador A para esse programa. Que velocidade de clock devemos pedir para que o projetista almeje? Não entre em pânico! Podemos resolver isso facilmente usando os princípios básicos 71

72 Agora que entendemos os ciclos Um determinado programa exigirá um determinado número de instruções (instruções de máquina) um determinado número de ciclos um determinado número de segundos Temos um vocabulário que relaciona essas quantidades: tempo de ciclo (segundos por ciclo) velocidade de clock (ciclos por segundo) CPI (ciclos por instrução) uma aplicação com excessivo uso de ponto flutuante pode ter uma CPI mais alta MIPS (milhões de instruções por segundo) isso seria mais alto para um programa usando instruções simples 72

73 Desempenho O desempenho é determinado pelo tempo de execução Qualquer uma das outras variáveis igualam o desempenho? número de ciclos para executar o programa? número de instruções no programa? número de ciclos por segundo? número médio de ciclos por instrução? número médio de instruções por segundo? Armadilha comum: pensar que uma das variáveis é indicadora do desempenho, quando na realidade não é. 73

74 Exemplo de CPI Suponha que tenhamos duas implementações da mesma arquitetura do conjunto de instruções (ISA) Para um determinado programa, A máquina A tem um tempo de ciclo de clock de 250 ps e uma CPI de 2,0 A máquina B tem um tempo de ciclo de clock de 500 ps e uma CPI de 1,2 Que máquina é mais rápida para esse programa e quão mais rápida ela é? Se duas máquinas possuem a mesma ISA, qual de nossas quantidades (por exemplo, velocidade de clock, CPI, tempo de execução, número de instruções, MIPS) será sempre idêntica? 74

75 Exemplo de número de instruções Um projetista de compilador está tentando decidir entre duas seqüências de código para um determinada máquina. Com base na implementação de hardware, existem três classes diferentes de instruções: Classe A, Classe B e Classe C, e elas exigem um, dois e três ciclos, respectivamente. A primeira seqüência de código possui 5 instruções: 2 de A, 1 de B e 2 de C. A segunda seqüência possui 6 instruções: 4 de A, 1 de B e 1 de C. Que seqüência será mais rápida? O quanto mais rápida? Qual é a CPI para cada seqüência? 75

76 Exemplo de MIPS Dois compiladores diferentes estão sendo testados para uma máquina de 4 GHz com três classes diferentes de instruções: Classe A, Classe B e Classe C, e elas exigem um, dois e três ciclos, respectivamente. Ambos os compiladores são usados para produzir código para um grande software. O código do primeiro compilador usa 5 milhões de instruções da Classe A, 1 milhão de instruções da Classe B e 1 milhão de instruções da Classe C. O código do segundo compilador usa 10 milhões de instruções da Classe A, 1 milhão de instruções da Classe B e 1 milhão de instruções da Classe C. Que seqüência será mais rápida de acordo com o MIPS? Que seqüência será mais rápida de acordo com o tempo de execução? 76

77 Benchmarks A melhor forma de determinar desempenho é executando uma aplicação real Usa programas típicos do workload esperado Ou, típico da classe de aplicações esperada por exemplo, compiladores/editores, aplicações científicas, design gráfico etc. Benchmarks pequenos ótimos para arquitetos e projetistas fácil de padronizar pode ser forçado SPEC (System Performance Evaluation Cooperative) as empresas concordaram sobre um conjunto de programas e entradas reais valioso indicador do desempenho (e da tecnologia do compilador) ainda pode ser forçado 77

78 Jogos de benchmark A Intel reconheceu, envergonhada, na sexta-feira que um bug em um programa de software conhecido como um compilador levou a empresa a anunciar uma velocidade 10 por cento maior dos seus chips microprocessadores em um benchmark da área. Entretanto, os analistas do setor disseram que o erro de codificação foi um comentário infeliz sobre uma prática comum de mentir nos testes de desempenho padronizados. O erro foi atribuído à Intel dois dias atrás pela concorrente Motorola, em um teste conhecido como SPECint92. A Intel reconheceu que havia otimizado seu compilador para melhorar suas pontuações de teste. A empresa também havia dito que não gostava da prática, mas que foi forçada a fazer as otimizações porque seus concorrentes estavam fazendo o mesmo. No coração do problema da Intel está a prática de ajustar os programas de compilador para reconhecerem certos problemas de computação no teste e, então, substituir por partes especiais do código escritas a mão. Sábado, 6 de janeiro de 1996 New York Times 78

79 SPEC 89 Melhorias e desempenho de compilador Taxa de desempenho SPEC gcc espresso spice doduc nasa7 li eqntott matrix300 fpppp tomcatv Benchmark Compilador Compilador melhorado 79

80 SPEC CPU2000 Benchmarks de inteiros Benchmarks de ponto flutuante Nome Descrição Nome Tipo gzip Compactação Wupwise Cromodinâmica Quântica vpr Posicionamento e roteamento de circuitos FPGA Swim Modelo de água rasa gcc O compilador C Gnu Mgrid Solver multigrade no campo 3D potencial mcf Otimização combinatória Applu Equação diferencial parcial parabólica/elíptica crafty Programa de xadrez Mesa Biblioteca de gráficos tridimensionais parser Programa de processamento de textos Galgel Dinâmica computacional de fluidos eon Visualização por computador Art Reconhecimento de imagem usando redes neurais perlbmk Aplicação Perl Equake Simulação de propagação de ondas sísmicas gap Teoria de grupo, interpretador Facerec Reconhecimento de imagem de rostos vortex Banco de dados orientado a objetos Ammp Química computacional bzip2 Compactação Lucas Teste de primalidade twolf Simulador de posicionamento e roteamento de circuitos Fma3d Simulação de choque usando método de elementos finitos Sixtrack Projeto de acelerador de física nuclear de alta energia Apsi Meteorologia: distribuição de poluentes FIGURA 4.5 Os benchmarks SPEC CPU2000. Os 12 benchmarks de inteiros no lado esquerdo da tabela são escritos em C e C++, enquanto os benchmarks de ponto flutuante no lado direito são escritos em Fortran (77 ou 90) e em C. Para obter mais informações sobre o SPEC e os benchmarks SPEC, veja Os benchmarks SPEC CPU usam o tempo de relógio como métrica, mas, como há pouca E/S, eles medem o desempenho da CPU. 80

81 SPEC 2000 Dobrar a velocidade de clock dobra o desempenho? Uma máquina com uma velocidade de clock mais lenta pode ter um desempenho melhor? 81

82 Experiência Telefone para um grande vendedor de computadores e diga que você está com dificuldade de decidir entre dois computadores diferentes, especificamente, que está confuso quanto aos pontos fortes e fracos dos processadores (Por exemplo, entre Pentium 4 2Ghz e Celeron M 1.4 Ghz) Que tipo de resposta você provavelmente receberá? Que tipo de resposta você poderia dar a um amigo com a mesma dúvida? 82

83 Lei de Amdahl Tempo de execução após melhoria = Tempo de execução não afetado + (Tempo de execução afetado / Quantidade de melhoria) Exemplo: Suponha que um programa seja executado em 100 segundos em uma máquina, com multiplicação responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 4 vezes mais rápido? Que tal torná-lo 5 vezes mais rápido? Princípio: torne o caso comum rápido 83

84 Exemplo Suponha que melhoramos uma máquina fazendo todas as instruções de ponto flutuante serem executadas cinco vezes mais rápido. Se o tempo de execução de algum benchmark antes da melhoria do ponto flutuante é 10 segundos, qual será o aumento de velocidade se metade dos 10 segundos é gasta executando instruções de ponto flutuante? Estamos procurando um benchmark para mostrar a nova unidade de ponto flutuante descrita acima e queremos que o benchmark geral mostre um aumento de velocidade de 3 vezes. Um benchmark que estamos considerando é executado durante 100 segundos com o hardware de ponto flutuante antigo. Quanto do tempo de execução as instruções de ponto flutuante teriam que considerar para produzir nosso aumento de velocidade desejado nesse benchmark? 84

85 Lembre-se O desempenho é específico a um determinado programa O tempo de execução total é um resumo consistente do desempenho Para uma determinada arquitetura, os aumentos de desempenho vêm de: aumentos na velocidade de clock (sem efeitos de CPI adversos) melhorias na organização do processador que diminuem a CPI melhorias no compilador que diminuem a CPI e/ou a contagem de instruções escolhas de algoritmo/linguagem que afetam a contagem de instruções Armadilha: esperar que a melhoria em um aspecto do desempenho de uma máquina afete o seu desempenho total 85

86 Vamos construir um processador Estamos quase prontos para entrar no Capítulo 5 e iniciar a construção de um processador Primeiro, vamos revisar a lógica booleana e construir a ALU de que precisaremos (material do Apêndice B) operação a 32 ALU 32 resultado b 32 86

87 Revisão: Álgebra booleana e portões Problema: Considere uma função lógica com três entradas: A, B e C. A saída D é verdadeira se pelo menos uma entrada for verdadeira A saída E é verdadeira se exatamente duas entradas forem verdadeiras A saída F é verdadeira apenas se todas as três entradas forem verdadeiras Mostre a tabela de verdade para essas três funções. Mostre as equações booleanas para essas três funções. Mostre a implementação consistindo de portões inversores, AND e OR. 87

88 Uma ALU (unidade lógica aritmética) Vamos construir uma ALU para dar suporte às instruções andi e ori construiremos apenas uma ALU de 1 bit e usaremos 32 deles operação op a b res a b resultado Implementação possível (soma-dos-produtos): 88

89 Revisão: o multiplexador Seleciona uma das entradas para ser a saída, com base em uma entrada de controle A B S 0 1 C Nota: chamamos isso de um mux de duas entradas, mesmo que ele tenha três entradas! Vamos construir nossa ALU usando um MUX: 89

90 Diferentes implementações Não é fácil decidir a melhor maneira de construir algo não queremos entradas demais em um único portão não queremos ter que atravessar muitos portões para nossos objetivos, a facilidade de compreensão é importante Vejamos uma ALU de 1 bit para adição: CarryIn a b Sum c = a b + a c + b c out in in sum = a xor b xor c in CarryOut Como poderíamos construir uma ALU de 1 bit para add, and e or? Como poderíamos construir uma ALU de 32 bits? 90

91 Construindo uma ALU de 32 bits Operação CarryIn a0 b0 CarryIn ALU0 CarryOut Resultado0 a Operação CarryIn 0 a1 b1 CarryIn ALU1 CarryOut Resultado1 1 Resultado a2 b2 CarryIn ALU2 CarryOut Resultado2 b CarryOut a31 b31 CarryIn ALU31 Resultado31 91

92 E quanto à subtração (a b)? Método do complemento a dois: simplesmente negue b e some. Como negamos? Uma solução muito inteligente: Binvert Operação CarryIn a 0 1 Resultado b CarryOut 92

93 Acrescentando uma função NOR Também podemos escolher inverter a. Como obtemos um a NOR b? Ainvert Binvert CarryIn Operação a Resultado b CarryOut 93

94 Adequando a ALU ao MIPS Precisamos oferecer suporte à instrução set-on-less-than (slt) lembre-se: slt é uma instrução aritmética produz um 1 se rs < rt e produz um 0 em caso contrário use subtração: (a b) < 0 implica a < b Precisamos aceitar teste de igualdade (beq $t5, $t6, $t7) use subtração: (a b) = 0 implica a = b 94

95 Suporte a slt Podemos imaginar a idéia? Ainvert Binvert CarryIn Operação Ainvert Binvert CarryIn Operação a a b Resultado b Resultado Less 3 Less 3 Set Detecção de overflow Overflow CarryOut Todos os outros bits Use esta ALU para o bit mais significativo 95

96 ... Suporte a slt Binvert Ainvert Operação CarryIn a0 b0 CarryIn ALU0 Less CarryOut Resultado0 a1 b1 0 CarryIn ALU1 Less CarryOut Resultado1 a2 b2 0 CarryIn ALU2 Less CarryOut Resultado2.. CarryIn. a31 CarryIn Resultado31 b31 ALU31 Set 0 Less Overflow 96

97 .. Teste de igualdade Observe as linhas de controle: Bnegate Ainvert Operação 0000 = and 0001 = or 0010 = add 0110 = subtract 0111 = slt 1100 = NOR a0 b0 a1 b1 0 CarryIn ALU0 Less CarryOut CarryIn ALU1 Less CarryOut Result0 Result1. Zero Nota: zero é um 1 quando o resultado é zero! a2 b2 0 CarryIn ALU2 Less CarryOut Result2... CarryIn.. Result31 a31 CarryIn b31 ALU31 Set 0 Less Overflow 97

98 Conclusão Podemos construir uma ALU para aceitar o conjunto de instruções MIPS idéia básica: usar um multiplexador para selecionar a saída que desejamos podemos realizar subtração eficientemente usando o complemento a dois podemos duplicar uma ALU de 1 bit para produzir uma ALU de 32 bits Pontos importantes sobre hardware todos os portões estão sempre operando a velocidade de um portão é influenciada pelo número de entradas do portão a velocidade de um circuito é influenciada pelo número de portões na série (no caminho crítico ou no nível mais profundo da lógica ) Nosso foco principal: compreensão; entretanto, Mudanças inteligentes na organização podem melhorar o desempenho (semelhante a usar melhores algoritmos no software) Vimos isso na multiplicação; agora vejamos na adição 98

99 Problema: o somador com carry ripple é lento Uma ALU de 32 bits é tão rápida quanto uma ALU de 1 bit? Existe mais de uma maneira de fazer adição? dois extremos: carry ripple e soma-de-produtos Você consegue ver o ripple? Como você se livraria dele? c 1 = b 0 c 0 + a 0 c 0 +a 0 b 0 c 2 = b 1 c 1 + a 1 c 1 +a 1 b 1 c 2 = c 3 = b 2 c 2 + a 2 c 2 +a 2 b 2 c 3 = c 4 = b 3 c 3 + a 3 c 3 +a 3 b 3 c 4 = Inviável! Por quê? 99

100 Somador com carry look-ahead Um método intermediário entre nossos dois extremos Motivação: Se não soubéssemos o valor do carry-in, o que poderíamos fazer? Quando sempre geraríamos um carry? g i = a i b i Quando propagaríamos o carry? p i = a i + b i Nos livramos do ripple? c 1 = g 0 + p 0 c 0 c 2 = g 1 + p 1 c 1 c 2 = c 3 = g 2 + p 2 c 2 c 3 = c 4 = g 3 + p 3 c 3 c 4 = Viável! Por quê? 100

101 Use princípio para construir somadores maiores CarryIn a0 b0 a1 b1 a2 b2 a3 b3 CarryIn ALU0 P0 G0 C1 pi gi ci + 1 Resultado0 3 Unidade de carry lookahead a4 b4 a5 b5 a6 b6 a7 b7 CarryIn ALU1 P1 G1 C2 pi + 1 gi + 1 ci + 2 Resultado4 7 Não podemos construir um somador de 16 bits dessa maneira... (grande demais) Poderíamos usar o carry ripple dos somadores CLA de 4 bits a8 b8 a9 b9 a10 b10 a11 b11 CarryIn ALU2 P2 G2 C3 pi + 2 gi + 2 ci + 3 Resultado8 11 Melhor ainda: use o princípio CLA novamente! a12 b12 a13 b13 a14 b14 a15 b15 CarryIn ALU3 P3 G3 C4 CarryOut pi + 3 gi + 3 ci + 4 Resultado

102 Resumo da ALU Podemos construir uma ALU para aceitar adição MIPS Nosso foco está na compreensão, não no desempenho Processadores reais usam técnicas mais sofisticadas para aritmética Onde o desempenho não é vital, as linguagens de descrição de hardware permitem que os projetistas automatizem completamente a criação do hardware! module MIPSALU (ALUctl, A, B, ALUOut, Zero); input [3:0] ALUctl; input [31:0] A,B; output reg [31:0] ALUOut; output Zero; assign Zero = (ALUOut==0); // Zero é verdadeiro se ALUOut é 0; vai para algum lugar A, B) // reavalia se estes mudarem case (ALUctl) 0: ALUOut <= A & B; 1: ALUOut <= A B; 2: ALUOut <= A + B; 6: ALUOut <= A - B; 7: ALUOut <= A < B? 1:0; 12: ALUOut <= ~(A B); // resultado é nor default: ALUOut <= 0; // default é 0, não deverá acontecer; endcase endmodule FIGURA B4.3 Uma definição comportamental em Verilog de uma ALU MIPS. Isso poderia ser sintetizado por meio de uma biblioteca de módulos contendo operações aritméticas e lógicas básicas. 102

103 Capítulo 5 103

104 O processador: caminho de dados e controle Estamos prontos para ver uma implementação do MIPS Simplificada para conter apenas: instruções de referência à memória: lw, sw instruções lógicas e aritméticas: add, sub, and, or, slt instruções de fluxo de controle: beq, j Implementação genérica: use o contador de programa (PC) para fornecer endereço de instrução obtenha a instrução da memória leia os registradores use a instrução para decidir exatamente o que fazer Todas as instruções usam a ALU após lerem os registradores Por quê? Referência à memória? Aritmética? Fluxo de controle? 104

105 Mais detalhes de implementação Visão abstrata/simplificada: 4 Add Add Dados PC Endereço Instrução Memória de instruções Nº do Registrador Registradores Nº do Registrador Nº do Registrador ALU Endereço Memória de dados Dados Dois tipos de unidades funcionais: elementos que operam nos valores de dados (combinacionais) elementos que contêm estado (seqüenciais) 105

106 Elementos de estado Sem clock versus com clock Clocks usados na lógica síncrona quando um elemento que contém estado deve ser atualizado? Transição de descida Período de clock tempo de ciclo Transição de subida 106

107 Um elemento de estado sem clock O trinco set-reset a saída depende das entradas presentes e também das entradas passadas R Q S Q 107

108 Trincos e flip-flops A saída é igual ao valor armazenado dentro do elemento (não é necessário pedir permissão para olhar o valor) A mudança do estado (valor) é baseada no clock Trincos: sempre que as entradas mudarem e o clock for afirmado Flip-flop: o estado muda apenas em uma transição de clock (metodologia de acionamento por transição) Logicamente verdadeiro poderia significar eletricamente baixo Uma metodologia de clocking define quando os sinais podem ser lidos e quando podem ser escritos não desejaríamos ler um sinal ao mesmo tempo em que ele estivesse sendo escrito 108

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

Organização de Computadores

Organização de Computadores Organização de Computadores Marcelo Lobosco DCC/UFJF Avaliando e Compreendendo o Desempenho Aula 10 Agenda Análise de Desempenho (cont.) Avaliando o Desempenho Benchmark SPEC Falácias e Armadilhas Desempenho

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores Marcelo Lobosco DCC/UFJF Avaliando e Compreendendo o Desempenho Aula 09 Agenda Avaliando e Compreendendo o Desempenho Introdução Definindo Desempenho Medindo o Desempenho Desempenho

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Universidade Federal do Pampa Campus-Bagé Arquitetura e Organização de Computadores Aula 2 Avaliando Desempenho Prof. Julio Saraçol juliosaracol@gmail.com Slide1 AULA 4: AVALIANDO DESEMPENHO 2 Slide2 Método

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

Arquitetura de Computadores I

Arquitetura de Computadores I Arquitetura de Computadores I Avaliação de desempenho Introdução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Adaptado do material de aula de Hennessy e Patterson Desempenho Meça,

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

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

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

Desempenho de Computadores

Desempenho de Computadores Desempenho de Computadores João Canas Ferreira Arquitectura de Computadores FEUP/LEIC Contém figuras de Computer Organization and Design, D. Patterson & J. Hennessey, 3ª. ed., MKP Tópicos Os vários aspectos

Leia mais

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

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

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

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

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

Aritmética. E agora: Implementação da Arquitetura

Aritmética. E agora: Implementação da Arquitetura Anotações Parte 4 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. Supõe-se que os estudantes tenham noções

Leia mais

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

Arquitetura e Organização de Computadores Aula 5 Consolidando Conhecimentos de Desempenho e Resumindo Prof. Julio Saraçol

Arquitetura e Organização de Computadores Aula 5 Consolidando Conhecimentos de Desempenho e Resumindo Prof. Julio Saraçol Universidade Federal do Pampa Campus-Bagé Arquitetura e Organização de Computadores Aula 5 Consolidando Conhecimentos de Desempenho e Resumindo Prof. Julio Saraçol juliosaracol@gmail.com Slide1 AULA 5:

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

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 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 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

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

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

CISC RISC Introdução A CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; suporta mais instruções no entanto, com

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

CAPÍTULO 6 ARITMÉTICA DIGITAL

CAPÍTULO 6 ARITMÉTICA DIGITAL CAPÍTULO 6 ARITMÉTICA DIGITAL Introdução Números decimais Números binários positivos Adição Binária Números negativos Extensão do bit de sinal Adição e Subtração Overflow Aritmético Circuitos Aritméticos

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

1. NÍVEL CONVENCIONAL DE MÁQUINA

1. NÍVEL CONVENCIONAL DE MÁQUINA 1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0

Leia mais

Sistemas Computacionais II Professor Frederico Sauer

Sistemas Computacionais II Professor Frederico Sauer Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material nã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

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

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

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

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

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. Unidade aritmética e lógica - Executa operações aritméticas (cálculos);

Leia mais

Desempenho DESEMPENHO DE COMPUTADORES

Desempenho DESEMPENHO DE COMPUTADORES Desempenho Ch2-1 DESEMPENHO DE COMPUTADORES Desempenho -> Como medir o desempenho? AVIÃO PASSAGEIRO S AUTOMIA (milhas) VELOCIDAD E (mph) THROUGHPUT (passag.xveloc) Boeing 777 375 4630 610 228.750 Boeing

Leia mais

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitetura de Computadores. Ivan Saraiva Silva Arquitetura de Computadores Métricas de Desempenho Ivan Saraiva Silva Sumário Como arquiteturas são geralmente avaliadas Como arquiteturas obedecem a restrições de projeto Métricas de desempenho Combinando

Leia mais

Evolução dos Processadores

Evolução dos Processadores Evolução dos Processadores Arquitetura Intel Arquitetura x86 Micro Arquitetura P5 P6 NetBurst Core Processador Pentium Pentium Pro Pentium II Pentium III Pentium 4 Pentium D Xeon Xeon Sequence Core 2 Duo

Leia mais

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano Arquitetura e Organização de Computadores 1 Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano Objetivo: Apresentar as funções o mecanismo de atuação da

Leia mais

2. Representação Numérica

2. Representação Numérica 2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Universidade Federal do Pampa Campus-Bagé Arquitetura e Organização de Computadores Aula 2 Revisão de Conceitos e Introdução a Desempenho Prof. Julio Saraçol juliosaracol@gmail.com Slide1 Aula 2 REVISANDO

Leia mais

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Informática I Aula 5 http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

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

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

Sistema de Computação

Sistema de Computação Sistema de Computação Máquinas multinível Nível 0 verdadeiro hardware da máquina, executando os programas em linguagem de máquina de nível 1 (portas lógicas); Nível 1 Composto por registrados e pela ALU

Leia mais

Capítulo 3 Aula 8. Representação Numérica. Aritmética Computacional Representação Numérica

Capítulo 3 Aula 8. Representação Numérica. Aritmética Computacional Representação Numérica Universidade de Brasília Instituto de Ciências Exatas Departamento de Ciências da Computação Capítulo 3 Aula 8 Aritmética Computacional Representação Numérica 1 Representação Numérica Base binária (base

Leia mais

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dos dispositivos

Leia mais

Organização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I. 2002 Juliana F. Camapum Wanderley

Organização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I. 2002 Juliana F. Camapum Wanderley Organização e Arquitetura de Computadores Aula 10 Ponto Flutuante Parte I 2002 Juliana F. Camapum Wanderley http://www.cic.unb.br/docentes/juliana/cursos/oac OAC Ponto Flutuante Parte I - 1 Panorama Números

Leia mais

Sistemas de numeração

Sistemas de numeração E Sistemas de numeração Aqui estão apenas números ratificados. William Shakespeare A natureza tem algum tipo de sistema de coordenadas geométrico-aritmético, porque a natureza tem todos os tipos de modelos.

Leia mais

Memória Cache. Prof. Leonardo Barreto Campos 1

Memória Cache. Prof. Leonardo Barreto Campos 1 Memória Cache Prof. Leonardo Barreto Campos 1 Sumário Introdução; Projeto de Memórias Cache; Tamanho; Função de Mapeamento; Política de Escrita; Tamanho da Linha; Número de Memórias Cache; Bibliografia.

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

Arquitetura de Computadores. Prof. João Bosco Jr.

Arquitetura de Computadores. Prof. João Bosco Jr. Arquitetura de Computadores Prof. João Bosco Jr. Unidade II Aula 1 Nível ISA Posicionado entre a microarquitetura e o SO Define a arquitetura (Conjunto de Instruções) É a interface entre o Software e o

Leia mais

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ Microarquiteturas de Alto Desempenho Pipeline Gabriel P. Silva Introdução Pipeline é uma técnica de implementação de processadores

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

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

3. Arquitetura Básica do Computador

3. Arquitetura Básica do Computador 3. Arquitetura Básica do Computador 3.1. Modelo de Von Neumann Dar-me-eis um grão de trigo pela primeira casa do tabuleiro; dois pela segunda, quatro pela terceira, oito pela quarta, e assim dobrando sucessivamente,

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

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir. O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline Todos os estágios devem estar prontos ao mesmo tempo para prosseguir O tempo requerido para mover uma instrução

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

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES ARQUITETURA DE COMPUTADORES Aula 08: UCP Características dos elementos internos da UCP: registradores, unidade de controle, decodificador de instruções, relógio do sistema. Funções do processador: controle

Leia mais

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele

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

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

Arquitetura de processadores: RISC e CISC

Arquitetura de processadores: RISC e CISC Arquitetura de processadores: RISC e CISC A arquitetura de processador descreve o processador que foi usado em um computador. Grande parte dos computadores vêm com identificação e literatura descrevendo

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

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br Introdução INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br introdução Tópicos conceitos básicos o que é um programa um programa na memória decifrando um código referência Capítulo

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

Unidade 5: Sistemas de Representação

Unidade 5: Sistemas de Representação Arquitetura e Organização de Computadores Atualização: 9/8/ Unidade 5: Sistemas de Representação Números de Ponto Flutuante IEEE 754/8 e Caracteres ASCII Prof. Daniel Caetano Objetivo: Compreender a representação

Leia mais

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação Universidade Federal de Campina Grande Departamento de Sistemas e Computação Introdução à Computação A Informação e sua Representação (Parte III) Prof.a Joseana Macêdo Fechine Régis de Araújo joseana@computacao.ufcg.edu.br

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

Aritmética Binária e. Bernardo Nunes Gonçalves

Aritmética Binária e. Bernardo Nunes Gonçalves Aritmética Binária e Complemento a Base Bernardo Nunes Gonçalves Sumário Soma e multiplicação binária Subtração e divisão binária Representação com sinal Sinal e magnitude Complemento a base. Adição binária

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

Princípios de funcionamento dos computadores

Princípios de funcionamento dos computadores Princípios de funcionamento dos computadores Objetivos da aula: - Entender o princípio de funcionamento dos computadores - Entender o conceito de programa e sua dinâmica de execução Tópicos da aula: -

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Arquitetura de Computadores Prof. Fábio M. Costa Instituto de Informática UFG 1S/2004 ISA: Arquitetura de Conjunto de Instruções Roteiro Introdução Classificação de conjuntos de instruções Endereçamento

Leia mais

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Cálculo Numérico Aula : Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Computação Numérica - O que é Cálculo Numérico? Cálculo numérico é uma metodologia para resolver problemas matemáticos

Leia mais

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária 1- Apresentação Binária Os computadores funcionam e armazenam dados mediante a utilização de chaves eletrônicas que são LIGADAS ou DESLIGADAS. Os computadores só entendem e utilizam dados existentes neste

Leia mais

Programação ao nível da máquina. Operações lógicas e aritméticas

Programação ao nível da máquina. Operações lógicas e aritméticas Programação ao nível da máquina Operações lógicas e aritméticas Operações lógicas e aritméticas Operações: aritméticas: add, sub, inc, dec, cmp lógicas: and, or, xor, not Realizadas pela ALU (Arithmetic

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

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

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

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

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

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

13 Números Reais - Tipo float

13 Números Reais - Tipo float 13 Números Reais - Tipo float Ronaldo F. Hashimoto e Carlos H. Morimoto Até omomentonoslimitamosaouso do tipo inteiro para variáveis e expressões aritméticas. Vamos introduzir agora o tipo real. Ao final

Leia mais

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I Guilherme Pina Cardim Relatório de Sistemas Operacionais I Presidente Prudente - SP, Brasil 30 de junho de 2010 Guilherme Pina Cardim Relatório de Sistemas Operacionais I Pesquisa para descobrir as diferenças

Leia mais

1.3. Componentes dum sistema informático HARDWARE SOFTWARE

1.3. Componentes dum sistema informático HARDWARE SOFTWARE 1.3. Componentes dum sistema informático Computador Sistema Informático HARDWARE SOFTWARE + Periféricos Sistema Operativo Aplicações HARDWARE - representa todos os componentes físicos de um sistema informático,

Leia mais

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel O Nível ISA Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel Nível ISA (Instruction Set Architecture) Tipos de dados Inteiros (1, 2, 4 ou 8 bytes) Servem também para representar

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

Estrutura de um Computador

Estrutura de um Computador SEL-0415 Introdução à Organização de Computadores Estrutura de um Computador Aula 7 Prof. Dr. Marcelo Andrade da Costa Vieira MODELO DE VON NEUMANN PRINCÍPIOS A arquitetura de um computador consiste de

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

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

Aula 2 Modelo Simplificado de Computador

Aula 2 Modelo Simplificado de Computador Aula 2 Modelo Simplificado de Computador Um computador pode ser esquematizado de maneira bastante simplificada da seguinte forma: Modelo Simplificado de Computador: Memória Dispositivo de Entrada Processador

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)

Leia mais

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I:

Unidade: Unidade Lógica e Aritmética e Registradores. Unidade I: Unidade: Unidade Lógica e Aritmética e Registradores Unidade I: 0 Unidade: Unidade Lógica e Aritmética e Registradores UNIDADE LÓGICA E ARITMÉTICA E REGISTRADORES O Processador é um chip com milhares de

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

Circuitos Digitais Cap. 5

Circuitos Digitais Cap. 5 Circuitos Digitais Cap. 5 Prof. José Maria P. de Menezes Jr. Objetivos Aritmética Digital Adição Binária Subtração Binária Representação de números com sinal Complemento de 2 Negação Subtração como soma

Leia mais

Algumas características especiais

Algumas características especiais Algumas características especiais Tópicos o Medidas de desempenho o CISC versus RISC o Arquiteturas Superescalares o Arquiteturas VLIW Medidas de desempenho Desempenho é muito dependente da aplicação MIPS:

Leia mais