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

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

MIPS ISA (Instruction Set Architecture)

SSC0611 Arquitetura de Computadores

Capítulo 3. Instruções: Aritmética MIPS

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

Capítulo 3. This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder.

SSC0114 Arquitetura de Computadores

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

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

Infraestrutura de Hardware. Instruindo um Computador

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

Relembrando desempenho...

Relembrando desempenho...

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

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

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

Organização e Arquitetura de Computadores I

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

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

Organização de Computadores

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

Anotações da 2a Edição

Conjunto de Instruções. Prof. Leonardo Barreto Campos 1

O Funcionamento do Processador

Operações de Controle de Fluxo e Acesso a Memória. Na Aula Anterior... Nesta Aula. Instruções de Controle de Fluxo. if then - else.

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

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

O Funcionamento do Processador

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I

Nível Máquina Formatos de Instruções

Cap - 3: Linguagem de Máquina - MIPS

Conjunto de Instruções MIPS Parte I

Conjunto de Instruções e Arquitectura p.1

ARQUITECTURA DE COMPUTADORES

Conjunto de Instruções MIPS Parte IV

lw, sw add, sub, and, or, slt beq, j

Organização de Computadores μarquitetura. Na Aula Anterior... Introdução. Nesta Aula. MIPS-Monociclo. Formas de Organização 17/10/2016

Infra-estrutura de Hardware

Arquitetura de Computadores

ção de Computadores II

Infra- Estrutura de Hardware

Arquitetura de Computadores. Linguagem de Máquina

DataPath II Tomando o controle!

Especificação do Projeto de Processador RISC

UCP: Construindo um Caminho de Dados (Parte I)

Microcontroladores e Interfaces

Arquitetura de Computadores

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

Nível da Arquitetura do Conjunto das Instruções

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. Resposta:

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Arquitecturas Alternativas. Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining

Aula 17: UCP: Construindo um Caminho de Dados (Parte I)

MICROPROCESSADORES II (EMA911915) NIOS II - ASSEMBLY 2 O SEMESTRE / 2018

Arquiteturas de Computadores

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA VII

Organização de Computadores

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Organização ou MicroArquitectura

Arquitetura de Computadores MIPS

O Processador: Via de Dados e Controle

MIPS. Prof. Carlos Bazilio

Prof. Gustavo Oliveira Cavalcanti

Procedimentos. Sistemas de Computação

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.

Questionário Arquitetura e Organização de Computadores

SSC0611 Arquitetura de Computadores

Faculdade de Computação Arquitetura e Organização de Computadores 2 Prof. Cláudio C. Rodrigues

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

Exercícios resolvidos (aula de 4 de Maio) Resolução:

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

Antes de deixarmos o hardware (1) Nível da Arquitetura do Conjunto das Instruções

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores

Faculdade de Computação

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

Infra-estrutura de Hardware

Arquiteturas de Computadores. Princípios e exemplos de conjuntos de instruções

Organização e Arquitetura de Computadores INTRODUÇÃO

Expoente Mantissa Frac. UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Guia Rápido MIPS. Tipos de Dados e Formatações

Arquitetura de Computadores. Conjunto de Instruções

Organização de Unidades de Processamento

Sistemas de Computação Gabarito - Lista 2

SSC0902 Organização e Arquitetura de Computadores

Prof. Eliezer Soares Flores 1 / 22

Faculdade de Computação

Explorando o paralelismo entre instruções

MODOS DE ENDEREÇAMENTO

Arquiteturas RISC e CISC. Adão de Melo Neto

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 25. Instituto de C

Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 22/abril/2009

PSI3441 Arquitetura de Sistemas Embarcados

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski

4. Modelo de Programação do DLX Introdução

Transcrição:

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 interligados de pipeline ) 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... Hennessy Patterson 2

Aritmética MIPS Todas as instruções possuem três erandos A ordem do erando é 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 erandos para uma eração como adição é três... Exigir que cada instrução tenha exatamente três erandos, nem mais nem menos, está de acordo com a filosofia de manter o hardware simples. Hennessy Patterson 3 Aritmética MIPS Princípio de projeto: A simplicidade favorece a regularidade. É claro que isso complica algumas coisas... Código C: a = b + c + d; Código MIPS: add a, b, c add a, a, d Os erandos precisam ser registradores, apenas 32 registradores fornecidos Cada registrador contém 32 bits Princípio de projeto: Quanto menor, melhor. Por quê? Hennessy Patterson 4

Registradores versus memória Os erandos 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 Memória Caminho de dados Saída Processador E/S Hennessy Patterson 5 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. 8 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 Hennessy Patterson 6

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. 32 bits de dados 32 bits de dados 32 bits de dados Os registradores armazenam 32 bits de dados 32 bits de dados 2 32 bytes com endereços de byte de 0 a 2 32-1 2 30 words com endereços de byte 0, 4, 8,... 2 32-4 As words são alinhadas Por exemplo, quais são os 2 bits menos significativos de um endereço de word? Hennessy Patterson 7 Instruções load e store Exemplo: Código C: Código MIPS: Instruções A[12] = h + A[8]; lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 48($s3) $s3 contém o endereço base do array A[] $s2 contém h Resultado armazenado em A[12] É possível 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 erandos são registradores, não memória! Não podemos escrever: add 48($s3), $s2, 32($s3) Hennessy Patterson 8

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 Hennessy Patterson 9 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: = eração básica da instrução, tradicionalmente denominada code. rs = registrador do primeiro erando de origem. rt = registrador do segundo erando de origem. rd = registrador do erando de destino. shamt = shift amount; funct = função (variante específica de uma eração). Hennessy Patterson 10

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) 23 18 9 32 rs rt número de 16 bits Qual é o compromisso? Hennessy Patterson 11 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 Hennessy Patterson 12

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 Hennessy Patterson 13 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:... $s0 contém i $s1 contém j $s3 contém h Hennessy Patterson 14

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:... $s3 contém h $s4 contém i $s5 contém j Você pode construir um lo for simples? Hennessy Patterson 15 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 Próxima Instrução está em L se $s4 $s5 beq $s4,$s5,l Próxima Instrução está em L se $s4 = $s5 j Label Próxima Instrução está em L Formatos: R I J rs rt rd shamt funct rs rt endereço de 16 bits endereço de 26 bits Hennessy Patterson 16

Fluxo de controle Temos: beq e bne; e branch-if-less-than? Nova instrução: slt if $s1 < $s2 then slt $t0, $s1, $s2 $t0 = 1 else $t0 = 0 Podemos usar essa instrução para construir "blt $s1, $s2, Label e então 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 Hennessy Patterson 17 Política das convenções de uso $zero Nome Número do registrador 0 Uso O valor constante 0 $v0-$v1 $a0-$a3 $t0-$t7 $s0-$s7 $t8-$t9 $gp $sp $fp $ra 02-03 04-07 08-15 16-23 24-25 28 29 30 31 Valores para resultados e avaliação de expressões Argumentos Temporários Valores salvos Mais temporários Ponteiro global Ponteiro de pilha Ponteiro de quadro Endereço de retorno Registrador 1 ($at) reservado para o assembler, 26-27 para o sistema eracional Hennessy Patterson 18

Constantes Constantes pequenas são usadas muito freqüentemente (50% dos erandos) 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: Princípio de projeto: Agilizar o caso comum. Hennessy Patterson 19 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 : preenchido com zeros Depois, precisamos acertar os bits de ordem inferior, por exemplo: Hennessy Patterson 20

Visão geral do MIPS Instruções simples, todas com 32 bits Muito estruturado, nenhuma conteúdo desnecessário Apenas três formatos de instrução R rs rt rd shamt funct I rs rt endereço de 16 bits J endereço de 26 bits Nos baseamos no compilador para obter desempenho Quais são os objetivos do compilador? Ajudamos o compilador onde podemos Hennessy Patterson 21 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 rs rt endereço de 16 bits J endereço de 26 bits Os endereços não são de 32 bits Como manipular isso com instruções load e store? Hennessy Patterson 22

Endereços em desvios 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 Formatos: I 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: Hennessy Patterson 23 Resumindo: Operandos MIPS Nome Exemplo Comentários 32 registradores $s0-$s7, $t0-$t9,$zero, $a0-$a3, $v0-$v1, $gp, $fp, $sp, $ra, $at Locais rápidos para dados. No MIPS, os dados precisam estar em registradores para a realização de erações aritméticas. O registrador MIPS $zero sempre é igual a 0. O registrador $at é reservado para o assembler tratar de constantes grandes. Hennessy Patterson 24

Resumindo: (Cont.) Assembly do MIPS Categoria Instrução Exemplo Significado Comentários Aritmética add add $s1,$s2,$s3 $s1 = $s2 + $s3 Três erandos; dados nos registradores subtract sub $s1,$s2,$s3 $s1 = $s2- $s3 Três erandos; dados nos registradores add immediate addi $s1,$s2,10 0 $s1=$s2 + 100 Usada para somar constantes Transferência de dados load word lw $s1,100($s2) $s1 = Memória[$s2 + 100] Dados da memória para o registrador store word sw $s1,100($s2) Memória[$s2 + 100] = $s1 Dados do registrador para a memória load byte lb $s1,100($s2) $s1 = Memória[$s2 + 100] Byte da memória para registrador store byte sb $s1,100($s2) Memória[$s2+100] = $s1 Byte de um registrador para memória load upper immed. lui $s1,100 $s1 = 100 * 216 Carrega constante nos 16 bits mais altos Desvio condicional branch on equal beq $s1,$s2,25 if ($s1 == $s2) go to PC + 4 + 100 Testa igualdade; desvio relativo ao PC branch on not equal bne $s1,$s2,25 if ($s1!= $s2) go to PC + 4 + 100 Testa desigualdade; relativo ao PC set on less than slt $s1,$s2,$s3 if ($s2 < $s3) $s1 = 1; else $s1 = 0 Compara menor que; usado com beq, bne set less than immediate slti$s1,$s2,100 if ($s2 < 100) $s1 = 1; else $s1 = 0 Compara menor que constante Desvio incondicional jump jump register j 2500 jr $ra go to 10000 go to $ra Desvia para endereço de destino Para switch e retorno de procedimento jump and link jal 2500 $ra = PC + 4. go to 10000 Para chamada de procedimento Hennessy Patterson 25 Arquiteturas alternativas Alternativa de projeto: - Forneça eraçõ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 eração é, portanto, repleto de perigos. Para evitar esses problemas, os projetistas passaram para instruções mais simples. A Seção 2.17 demonstra as armadilhas da complexidade. Vejamos (brevemente) o IA-32 Hennessy Patterson 26

IA-32 1978: O Intel 8086 é anunciado (arquitetura de 16 bits) 1980: O co-processador de ponto flutuante Intel 8087 é acrescentado 1982: O 80286 aumenta o espaço de endereçamento para 24 bits; mais instruções 1985: O 80386 estende para 32 bits; novos modos de endereçamento 1989-1995: 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. Hennessy Patterson 27 Visão geral do IA-32 Complexidade: Instruções de 1 a 17 bytes de tamanho Um erando precisa agir como origem e destino Um erando pode vir da memória Modos de endereçamento complexos, por exemplo, índice base ou escalado com deslocamento de 8 ou 32 bits Felizmente: 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 aprriado Hennessy Patterson 28

Registradores e endereçamento de dados do IA-32 Registradores no subconjunto de 32 bits que surgiram com o 80386 Hennessy Patterson 29 Instruções típicas do IA-32 Quatro tipos principais de instruções de inteiro: Movimento de dados, incluindo move, push, p 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 Hennessy Patterson 30

Resumo A complexidade da instrução é apenas uma variável Instrução mais baixa versus CPI (Cycles Per Instruction) mais alta / Velocidade de relógio mais baixa Princípios de projeto: Simplicidade favorece a regularidade Menor é melhor Bom projeto exige comprometimento Agilizar o caso comum Arquitetura do conjunto de instruções Uma abstração muito importante! Hennessy Patterson 31