ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA VII

Documentos relacionados
ARQUITECTURA DE COMPUTADORES

SSC0611 Arquitetura de Computadores

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

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

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

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

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

Infraestrutura de Hardware. Instruindo um Computador

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

MIPS ISA (Instruction Set Architecture)

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

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

SSC0114 Arquitetura de Computadores

Organização e Arquitetura de Computadores I

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

Cap - 3: Linguagem de Máquina - MIPS

Faculdade de Computação

Sumário. Aula Anterior. Exercício 7.1 Contagem de bits a 1 numa palavra Exercício 7.2 Deslocamento de n bits num operando de 64 bits.

Relembrando desempenho...

1. uins.ce <= '1' when i=sw or i=lw else '0'; 2. uins.rw <= '0' when i=sw else '1'; 3. uins.wreg <= '0' when i=sw else '1';

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

Relembrando desempenho...

Arquitectura de Computadores ARQC MIPS. Serviços de Sistemas Exemplos. Serviços de Sistema

Sistemas de Computação Gabarito - Lista 2

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

MODOS DE ENDEREÇAMENTO

Conjunto de Instruções MIPS Parte IV

Microcontroladores e Interfaces

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

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

1: 2: 2, [1] [2] 0x x001f8021 $16,$0,$31 13 [3] 0x x

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

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

Infra-estrutura de Hardware

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

DataPath II Tomando o controle!

Procedimentos. Sistemas de Computação

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

Organização ou MicroArquitectura

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

UCP: Construindo um Caminho de Dados (Parte I)

Organização e Arquitetura de Computadores I

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

Arquitetura de Computadores MIPS

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

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

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

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

66 [2] 0x x c

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

2. Relativamente ao datapath de ciclo único do MIPS podemos dizer que:

Faculdade de Computação

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

Conjunto de Instruções e Arquitectura p.1

[1] $2,$0,$3 105 [2] 0x004000e8

O Funcionamento do Processador

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

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

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

ção de Computadores II

Lista de Revisão para a Primeira Avaliação

Organização e Arquitetura de Computadores I

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

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

Arquitetura de Computadores. Linguagem de Máquina

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

Organização de Computadores

Arquitetura de Computadores

O Processador: Via de Dados e Controle

Escreva um programa em código assembly correspondente ao seguinte programa C.

1: 2: 2, [1] [2] 0x x3c011001

Disciplina: Organização de Computadores-EC Professor: Ney Laert Vilar Calazans

Conjunto de Instruções MIPS

Conjunto de Instruções MIPS Parte III

Especificação do Projeto de Processador RISC

Anotações da 2a Edição

O Funcionamento do Processador

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

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

Dicas: Nas linhas 7 e 8 as constantes imediatas são especificadas como caracteres ASCIIE, o que é aceito pelo montador MARS.

Número de Linha. Código objeto

Questionário Arquitetura e Organização de Computadores

Faculdade de Computação

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

Arquiteturas de Computadores

RISC simples. Aula de Março de

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

MIPS. Prof. Carlos Bazilio

Infra-estrutura de Hardware

Implementação da UCP. Construção do caminho de dados Controle Implementação monociclo. Organização de Computadores

Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans

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

Procedimentos e Gestão de Subrotinas

Arquitetura de Computadores. Prof. Alexandro Baldassin. 1o semestre/2018

Estrutura do tema ISA do IA-32

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Transcrição:

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA VII

Índice Endereçamento MIPS: 32-bits imediatos; Endereços em branches e jumps; Modos de endereçamento; MARS Exercício 5: Fibonnaci

Problema Apesar de instruções MIPS 32 bits facilitarem a implementação do hardware, por vezes é necessário termos constantes ou endereços da mesma dimensão. Nesta aula iremos abordar a solução geral para lidar com grandes constantes e o modo optimizado que se utiliza na gestão dos endereços de branches e jumps.

Problema O modo normal de adicionar um constante em MIPS é utilizando a instrução addi. A instrução addi é codificada segundo o formato I- type, seguindo a seguinte formula: I-type Op(6) Rs(5) Rt(5) address (16) addi $t0,$s0,i 001000 sssss ttttt iiii iiii iiii iiii Como se pode verificar o máximo que se pode carregar é uma constante de 16 bits.

Operandos 32 bits imediatos Apesar de na maioria dos casos os operandos caberem perfeitamente em 16 bits, por vezes é necessário 32 bits para os representar. Como tal, existe em MIPS a instrução lui Load Upper Immediate - utilizada para carregar os 16 bits mais significativos num registo. Lui $t0, 255 001111 00000 01000 0000 0000 1111 1111 0000 0000 1111 1111 0000 0000 0000 0000

Operandos 32 bits imediatos Para completar os 16 bits menos significativos utiliza-se o comando ori. Or = 1 sempre que qualquer um dos elementos for 1. ori $t0, $t0, 254 001101 00000 01000 0000 0000 1111 1110 0000 0000 1111 1111 0000 0000 1111 1110

Operandos 32 bits imediatos Exemplo: Carregue a seguinte constante para MIPS: 0000 0000 1111 0110 0000 0001 1111 0001 lui $t0, 246 ori $t0, $t0, 497 001111 00000 01000 0000 0000 1111 0110 0000 0000 1111 0110 0000 0000 0000 0000 001101 00000 01000 0000 0001 1111 0001 0000 0000 1111 0110 0000 0001 1111 0001

Endereços em Branches e Jumps Como vimos nas aulas anteriores, a instrução jump utiliza o formato mais simples de todos, o J-Type. J-type Op(6) address (26) j 1000 000010 00 0000 0000 0000 0011 1110 1000 No entanto, os Branches necessitam de mais intervenientes, nomeadamente dos registos para comparação, sendo codificados em I-Type. I-type Op(6) Rs(5) Rt(5) address (16) bne $s0,$s1,exit 000101 10000 10001 EXIT

Endereços em Branches e Jumps Como o I-type somente suporta endereços de 16 bits, existiria um limite de 2 16 instruções. Para resolver esta limitação, o Program Counter é calculado com base na seguinte fórmula: Program Counter = Registo + Endereço do Branche Deste modo consegue-se um máximo de 2 32 instruções.

Endereços em Branches e Jumps Dado que o PC contem o endereço da instrução actual, faz todo o sentido que se adicione o endereço do branche a este, resultando em: Program Counter = Program Counter + Endereço do Branche Deste modo consegue-se ±2 15 instruções. A esta forma de endereçamento chama-se Endereçamento relativo ao Program Counter. O MIPS, tal como todos os computadores recentes, utiliza este tipo de endereçamento dado que por norma o destino do branche está relativamente próximo do mesmo.

Endereços em Branches e Jumps O MIPS, tal como todos os computadores recentes, utiliza este tipo de endereçamento dado que por norma o destino do branche está relativamente próximo do mesmo. Por outro lado, as instruções Jump e Jump-and-link já utilizam endereçamento directo pois com 26 bits conseguem abranger uma serie de instruções bastante mais vasta.

Endereços em Branches e Jumps Exemplo da Bibliografia:

Modos de endereçamento Em MIPS existem distintos modos de endereçamento, nomeadamente: Endereçamento imediato quando o operando é uma constante inserida na instrução. Endereçamento de registo quando o operando é um registo.

Modos de endereçamento Endereçamento Base quando o operando é a localização na memória cujo endereço é a soma de um registo + um constante. Endereçamento relativo ao PC quando o endereço do branch é a soma do PC + uma constante. PC = PC + Address

Modos de endereçamento Endereçamento pseudo-directo quando o endereço de jump representa os 26 bits da instrução concatenados com os bits mais significativos do PC e depois de sofrerem um shift left igual a 2. J-type Op(6) address (26) j 1000 000010 00 0000 0000 0000 0011 1110 1000 PC 0101 0000 1111 0000 1111 0000 1111 0000 01 01 00 0000 0000 0000 0011 1110 1000 00 shift left logic 2

Instruction Set Architecture (ISA) MARS - Exercício Exercício 5: Compile a sequência de Fibonacci de 20. A sucessão de Fibonacci define que n+1 = n + (n-1), ou seja: 0,1,1,2,3,5,8,13,21,34,55,89, Recursivo Iterativo int fibonacci(int num) { if(num==0 num==1) return 1; else return fibonacci(num-1) + fibonacci(num-2); } int fibonacci (int num) { int i, j, k, t; i = 0; j = 1; for (k = 1; k <= num; k++) { t = i + j; i = j; j = t; } return j; }

Instruction Set Architecture (ISA) Fibonnaci iterativo Encontre os erros. Existem 4 erros graves e diversas outras práticas erradas..data msg:.asciiz "Entre um numero:\n" space:.byte 32.text addi $t2,$zero,1 add $s7,$zero,$zero la $s3,space la $a0,msg li $v0,4 syscall li $v0,5 syscall add $a0,$v0,$zero jal fibonacci j exit fibonacci: add $s0,$zero,$zero addi $s1,$zero,1 move $s2,$a0 add $s4,$zero,$zero loop: bgt $s4,$s2,exit add $t0,$s0,$s1 move $s1,$s0 move $s0,$t0 move $a0,$s1 li $v0,1 syscall move $a0,$s3 li $v0,4 syscall j loop addi $s4,$s4,1 exit:

Instruction Set Architecture (ISA) Fibonnaci recursivo fibonacci: addi $sp,$sp,-12 sw $ra,0($sp) sw $s0,4($sp) sw $s1,8($sp) add $s0,$a0,$zero beq $s0,$zero,return0 beq $s0,$t2,return1 subi $a0,$s0,1 jal fibonacci add $s1,$v0,$zero subi $a0,$s0,2 jal fibonacci add $v0,$s1,$v0 blt $v0,$s7,no_print move $s7,$v0 addi $sp,$sp,-8 sw $v0,4($sp) sw $a0,0($sp) move $a0,$v0 li $v0,1 syscall move $a0,$s3 li $v0,4 syscall lw $v0,4($sp) lw $a0,0($sp) addi $sp,$sp,8 no_print: j return_n return0: li $v0,0 j return_n return1: li $v0,1 return_n: lw $s1,8($sp) lw $s0,4($sp) lw $ra,0($sp) addi $sp,$sp,12 jr $ra print: addi $sp,$sp,-4 sw $ra,0($sp) li $v0,1 syscall lw $ra,0($sp) addi $sp,$sp,4 jr $ra exit:

Dúvidas e Questões Maio 2014