Instruções: A Linguagem de Máquina – Aula 01

Slides:



Advertisements
Apresentações semelhantes
Parte 1: Organização de Computadores
Advertisements

Organização e Arquitetura de Computadores I Linguagem de Máquina
gerador de código intermediário
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
CPU: Controle e processamento
Arquitetura de Computadores
WebDesign Redes de Computadores Aula 05
WebDesign Redes de Computadores Aula 07
Arquitetura e organização de computadores
Arquitetura e organização de computadores.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 03: Computador.
Unidade Lógica e Aritmética Introdução à Ciência da Computação
ARQUITETURAS RISC E CISC
Arquitetura dos Microprocessadores 8086 e 8088
Exemplo de arquitetura registrador-registrador- MIPS
Aula-02 Arquitetura do conjunto de instruções – ISA (Instruction Set Architecture)
Daniel M. Aquino, Marcelo C. Perez, Thais A. B. Fernandes
Introdução à Informática
Professor: Erivelto Tschoeke – UDESC/CEPLAN
Sistemas Digitais Microprocessados
REPRESENTAÇÃO DE INSTRUÇÕES
Autor: Fernando de Mesentier Silva
Avaliando e Compreendendo o Desempenho - Respostas
Processadores – Aula 3 Professor: André Luis Meneses Silva
Fundamentos do Projeto Lógico
Arquitetura de Computadores
Processadores – Aula 3 Professor: André Luis Meneses Silva
Introdução à Programação
História do Computador Desde os idos tempos da humanidade os seres humanos procuram relacionar quantidades. Supõe-se que as primeiras tentativas de contagens.
PROGRAMAÇÃO I UNIDADE 1.
Fundamentos da Arquitetura de Computadores
Representação de Instruções
Aula 3©Universidade do Algarve 1 Do alto-nível ao assembly Compiladores, Aula Nº 3 João M. P. Cardoso.
Classes de Arquiteturas Tipos de operação Codificação das operações
Unidade Central de Processamento UCP
PCI- Introdução à Computação
ORGANIZAÇÃO DE COMPUTADORES
Sistemas Operacionais I
Arquitetura de computadores
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Agenda Modos de Endereçamento.
Pet computação UFPE Aula de apoio aos feras: Arquitetura de Computadores.
Processamento de dados na UCP e memória UCP
Arquitetura de Computadores
Unidade Central De Processamento: Processador
Geração de Código aula-12-geração-de-código.pdf.
Unidade Central De Processamento: Processador
Subsistema de Memória.
INTRODUÇÃO À COMPUTAÇÃO
INTRODUÇÃO À COMPUTAÇÃO
Unidade de Controle.
A Linguagem de Máquina – Desvios e Laços
Microprocesadores x Microcontroladores
DSC/CEEI/UFCG Introdução à Computação. DSC/CEEI/UFCG 2 Hardware – Memória  Componente de um sistema de computação cuja função é armazenar informações.
Parte 3 Seção de Dados e Unidade de Controle
1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos.
INTRODUÇÃO À COMPUTAÇÃO
Introdução à Computação Componentes Básicos dos Computadores
Memória.
Arquitetura de Computadores
Arquitetura de Microcomputadores
Funcionamento interno do computador
Sistemas Operacionais IV – Gerenciamento de E/S
Arquitetura de Sistemas Operacionais
A linguagem de Máquina – Instruções Básicas
Organização de Computadores Implementação da UCP Construção do caminho de dados Controle Implementação monociclo.
 Evolução constante das linguagens de programação de alto nível (LAN) desde o Fortran (primeira LAN)  Surgimento de novos paradigmas como a OO, Orientação.
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Transcrição da apresentação:

Instruções: A Linguagem de Máquina – Aula 01 Professor: André Luis Meneses Silva E-mail/msn: andreLuis.ms@gmail.com Página: www.dcomp.ufs.br/index.php/docentes:Andre

Introdução Organização de um computador. O processador MIPS. Instruções para soma e subtração. Registradores no MIPS. Instruções para transferência de dados. Endianness. Instrução para soma com constantes. Representação das instruções em linguagem de máquina. Instruções para operações lógicas

Organização de um computador Cinco componentes clássicos: Entrada Saída Memória Caminho de Dados Controle

Organização de um computador Entrada: esta classe compreende componentes responsáveis pela entrada de dados no computador. Ex: Mouse, teclado, scanner Saída: esta classe compreende os componentes responsáveis pela saída de dados do computador. Ex: Monitor, Impressora, etc.

Organização de um computador Memória Área de armazenamento temporário, onde os programas são mantidos quando estão sendo executados e que contém os dados necessários para os programas em execução. Elas podem ser: Voláteis Armazenamento que conserva os dados apenas enquanto estiver recebendo energia. Memórias DRAM, etc Não voláteis Forma de memória que conserva os dados mesmo na ausência de energia. Discos magnéticos, discos óticos, etc

Organização de um computador Hierarquia de Memória: Registradores Memórias muito rápida, pequenas, localizadas dentro do processador. Memória Cache Memórias mais lentas que os registradores, mas ainda assim possuem um bom desempenho. Em geral os processadores possuem dois ou mais níveis, ambos no mesmo invólucro.

Organização de um computador Hierarquia de Memória: Memória Principal Memória volátil usada para armazenar programas enquanto estão sendo executados. Memória Secundária Memória não-volátil usada para armazenar programas e dados entre execuções.

Hierarquia de Memória registradores Memória cache Memória Principal Memória Secundária

Organização de um computador Processador Caminho de dados: Componente responsável pela realização de operações aritméticas. Controle: Comanda o caminho de dados, a memória e os dispositivos de E/S de acordo com as instruções do programa.

O processador MIPS As palavras da linguagem de um computador são chamadas de instruções e seu vocabulário é denominado de conjunto de instruções. Embora o conjunto de instruções seja uma característica associada a arquitetura, em geral, o conjunto de instruções de diferentes arquiteturas são bastante similares. Isso acontece devido: Aos projetos possuírem princípios básicos semelhantes Algumas operações básicas devem ser oferecidas por todos os computadores.

O processador MIPS Hoje e na próxima aula veremos o conjunto de instruções do processador MIPS. Um pouco sobre o MIPS: Criado na década de 80 por John L. Hennessy. Microprocessador bastante utilizado. Em 2002, foram fabricados 100 milhões de unidades. Encontrados em produtos de várias empresas. ATI, Broadcom, Cisco, NEC, Nintendo, Silicon Graphics, Sony, Texas Instrument, Toshiba, etc.

O processador MIPS Algumas Características Instruções simples, sempre realizando uma única operação. As instruções possuem tamanho fixo de 32 bits. No total, o MIPS possui 32 registradores. Cada um deles, de 32 bits. Estes 32 bits representam a palavra (word), ou seja, a unidade de acesso natural de um computador. Em geral, o tamanho da palavra é de 32 bits, porém nos novos processadores como os Core2 Duo, esta palavra é de 64 bits. Cada instrução MIPS sempre trabalha com 3 operandos. Esta característica torna o hardware mais simples. Esta característica introduz o Princípio de Projeto 1 utilizado no desenvolvimento de hardware. É ele: “Simplicidade favorece a regularidade”

Instruções para soma e subtração As instruções de adição e subtração do MIPS são, respectivamente: add e sub. Exemplos: add a, b, c # A soma de b + c é colocada em a. sub a, b, c # A subtração de b - c é colocada em a. add a, a, c # A soma de a + c é colocada em a. Como é compilada as seguintes instruções java? a = b + c; d = a - e;

Instruções para soma e subtração add a, b, c sub d, a, e E no caso de uma atribuição mais complexa, como por exemplo? f = (g + h) – (i + j);

Instruções para soma e subtração add a, b, c sub d, a, e E no caso de uma atribuição mais complexa, como por exemplo? f = (g + h) – (i + j); Neste caso, é necessário gerar mais de uma instrução. Temos também de utilizar variáveis temporárias.

Registradores no MIPS Operandos do hardware de um computador Ao contrário dos programas nas linguagens de alto nível, os operandos das instruções aritméticas são restritos. Os operandos de uma instrução aritmética são os registradores. Lembrem-se que no MIPS só temos 32 registradores. Qual o motivo para termos uma quantidade tão pequena de registradores?

Instruções para soma e subtração f = (g + h) – (i + j); Assembly final: add t0, g, h add t1, i, j sub f, t0, t1 E aí pessoal, assembly é ou não é fácil? 

Registradores no MIPS Além de fatores ligados ao consumo de energia, complexidade do hardware e preço final do produto, também temos um outro fator, nosso Princípio de Projeto 2: “Menor significa mais rápido” Uma quantidade muito grande de registradores pode aumentar o tempo do ciclo do clock, simplesmente porque os sinais eletrônicos levam mais tempo quando precisam atravessar uma distância maior. Cuidado. Em alguns casos ter mais registradores promove um melhor desempenho. Em um projeto de hardware devemos sempre pesar o limite deste número de registradores (ou seja, o momento em que não temos mais melhora de desempenho), bem como sua viabilidade.

Registradores no MIPS Os nomes dos registradores MIPS obedecem ao seguinte padrão: Utilizamos “$” seguido por dois caracteres para representar um registrador. $s0, $s1, $s2,... representam os registradores que correspondem às variáveis dos programas em C e Java. $t0, $t1, ... Representam os registradores que armazenam valores temporários.

Registradores no MIPS Logo, para o programa anterior, teríamos: f = (g + h) – (i + j); Assembly add t0, g, h add t1, i, j sub f, t0, t1 add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1

Registradores no MIPS Pergunta: O processador MIPS possui apenas 32 registradores. Como fazemos para trabalhar com variáveis complexas cuja quantidade de registradores do MIPS é insuficiente para armazená-las?

Instruções para transferência de dados Utilizando a memória principal. Para realizarmos a transferência de um word da memória para um registrador, utilizamos a instrução lw (load word). Sintaxe: lw $r1, const($r2), $r1 é o registrador que armazena o conteúdo da memória. const representa um valor constante que é somado ao endereço presente no registrador $r2.

Instruções para transferência de dados A memória principal Cada endereço da memória externa representam células de 8 bits (1 byte). A instrução lw carrega um word da memória principal. Logo, se dermos um lw no endereço 0, receberemos os dados do endereço 0, 1, 2 e 3.

Instruções para transferência de dados Qual código assembly para o seguinte trecho de código, considere A um array de inteiros? g = h + A[8];

Instruções para transferência de dados Qual código assembly para o seguinte trecho de código, considere A um array de inteiros? g = h + A[8]; lw $t0,32($s3); add $s1,$2,$t0; Porque 32?

Instruções para transferência de dados Qual código assembly para o seguinte trecho de código, considere A um array de inteiros? g = h + A[8]; lw $t0,32($s3); add $s1,$2,$t0; Porque 32? Porque cada posição do array ocupa 1 palavra (4 bytes ou 32 bits). Lembrem-se que cada endereço sinaliza para uma célula de 1 byte apenas. Logo, para acessarmos o inteiro na posição 8, temos de pular os 8 inteiros que aparecem antes no array, assim temos: 4 * 8 = 32

Endianness Grande parte dos processadores fazem restrição com relação ao endereço em que começam suas palavras. No Mips, por exemplo, suas palavras precisam começar em endereços que sejam múltiplos de 4. Esse requisito é denominado restrição de alinhamento. Com relação ao byte de endereçamento, os processadores podem ser big endian ou little endian.

Endianness Processadores Big-Endian numeram os bytes dentro de uma palavra (word) de forma que o byte com o valor mais baixo é o mais à esquerda.

Endianness Processadores Little-Endian numeram os bytes dentro de uma palavra (word) de forma que o byte com o valor mais baixo é o mais à direita.

Instruções para transferência de dados A instrução que desempenha função inversa ao load word (lw) é a instrução store word (sw). Basicamente ela transfere o conteúdo de um registrador para um endereço específico da memória principal. Sintaxe: Similar ao do lw. sw $r1, const($r2)

Instruções para transferência de dados Exemplo: A[12] = h + A[8]; lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 48, $s3;

Instrução para soma com constantes addi (Adição Imediata). Para evitar o overhead de termos de ler uma constante da memória para depois utilizá-la em uma soma, Mips dá suporte a uma instrução especial, o addi. Basicamente, ela realiza uma soma com um valor constante. Sintaxe: addi $r1, $r2, const # armazena o valor de $r2 + const no registrador $r1. Essa instrução obedece ao princípio de projeto 3: “Agilize os casos mais comuns” Realmente ele é um caso comum, pois soma com constantes representam um percentual bastante elevado do código. Lembrem-se que grande parte dos laços fazem uso desta instrução.

Representação das instruções em linguagem de máquina. Embora até o momento só termos visto instruções em assembly, cada uma destas instruções possui uma correspondência binária. A estas instruções, em binário, damos o nome de linguagem de máquina. Por exemplo a instrução add $t0, $s1, $s2 possui a seguinte representação:

Representação das instruções em linguagem de máquina. Campos de uma instrução MIPS: Instruções tipo-R (de registrador) ou formato R op: Operação básica da instrução (opcode) rs: registrador do primeiro operando de origem rt: registrador do segundo operando de origem rd: registrado do operando de destino shamt: “shift amount” (quantidade de deslocamento). funct: Função.

Representação das instruções em linguagem de máquina. Campos de uma instrução MIPS: Instruções tipo-I (de imediato) ou formato I. op: Operação básica da instrução (opcode) rs: registrador do primeiro operando de origem rt: registrador do segundo operando de origem constant or address: constante ou endereço de memória.

Representação das instruções em linguagem de máquina. Embora MIPS possua dois diferentes tipos de formato de instruções, percebam que a quantidade de bits é a mesma. Isso caracteriza o Princípio de Projeto 4, que diz: “Um bom projeto exige bons compromissos”.

Instruções para operações lógicas

Instruções para operações lógicas Sintaxe de uso dos operadores de deslocamento (sll, slr). sll $t2, $s0, 4; # reg $t2 = $s0 << 4 bits. Para $s0 = 9, teríamos $t2 = 144; Observem o correspondente em instrução de máquina. Vejam que o campo shamt é utilizado para sinalizar a quantidade de deslocamento

Instruções para operações lógicas Sintaxe de uso dos operadores and, nor e or. and $t0, $t1, $t2 # reg $t0 = reg $t1 & reg $t2; A sintaxe é a mesma para nor e or. Mips não possui uma instrução not. Tem como eu obter esta instrução a partir de uma das instruções acima?

Instruções para operações lógicas Sim, basta fazermos um nor entre o valor que queremos negar e um registrador que possua o valor 0. or = not

Próxima aula Instruções para tomadas de decisões; Funções; Endereçamento para operandos imediatos e endereços de 32 bits.

Estudar. Organização e Projeto de Computadores: Interface Hw/Sw Seções 2.1 até 2.5