Organização e Arquitetura de Computadores. Aula 1 - Introdução Juliana F. Camapum Wanderley.

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

Download "Organização e Arquitetura de Computadores. Aula 1 - Introdução. 2002 Juliana F. Camapum Wanderley. http://www.cic.unb.br/docentes/juliana/cursos/oac"

Transcrição

1 Organização e Arquitetura de Computadores Aula 1 - Introdução 2002 Juliana F. Camapum Wanderley OAC Introdução 1 Sumário Introdução a Arquitetura de Computadores Organização e Anatomia de um Computador Mudanças Tecnológicas Rápidas Conclusões OAC Introdução 2

2 Introdução Nos anos 60/70: minimizar espaço em memória melhora o desempenho Problema atual: hierarquia de memórias paralelismo dos processadores (pipeline) otimização dos compiladores sistema operacional... OAC Introdução 3 O que é "Arquitetura de Computadores"? Software Hardware Application (Netscape) Compiler Assembler Processor Memory Operating System (Linux) Datapath & Control Digital Design Circuit Design transistors I/O system AC Instruction Set Architecture Arquitetura do conjunto de instruções + Organização da máquina Coordenação de muitos Níveis de Abstração OAC Introdução 4

3 Abstração Maior aprofundamento revela mais informações Uma abstração omite detalhes desnecessários, ajudando a lidar com a complexidade É uma descrição simplificada ou seletiva de um sistema OAC Introdução 5 Arquitetura do Conjunto de Instruções Uma importante abstração interface entre hardware e software de baixo nível padronização das instruções, linguagem de máquina, etc... Vantagens: diferentes implementações da mesma arquitetura desvantagem: algumas vezes impossibilita o uso de inovações Modernas arquiteturas de conjunto de instruções: Intel (80x86/Pentium/K6/MMX), PowerPC, DEC Alpha, SGI MIPS, SUN SPARC, HP PA-RISC OAC Introdução 6

4 OAC Introdução 7 Arquitetura do Conjunto de Instruções Conjunto de instruções (ou códigos de operação). Categorias de Instruções - MIPS R3000 Carregar/Armazenar Cálculo Desvio Ponto flutuante Gerenciamento de Memória Formato das instruções. 3 formatos de instruções (32 bits) - MIPS R3000 Tipos e estruturas de dados, codificação e representação Modos de endereçamento e acesso a dados e instruções. Organização da memória. Níveis de Representação High Level Language Program (e.g., C) Assembly Language Program (e.g.,mips) Machine Language Program (MIPS) Control Signal Specification OAC Introdução 8 Compiler Assembler Machine Interpretation AC temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; lw $t0, 0($2) lw $t1, 4($2) sw $t1, 0($2) sw $t0, 4($2)

5 Por trás do Programa Computadores: dois dígitos 0 e 1 (bit s). Em computadores: bits são agrupados em grupos na memória: Z-80 Grupos de 8 bits (1 byte). MIPS Grupos de 32 bits. Memória de um computador: Endereço Conteúdo Representação popular: em hexa: Endereço Conteúdo F098 Significado dos bits: Programas, números, texto, imagens, sons, etc. OAC Introdução 9 Organização da Máquina Características de performance e capacidade das principais unidades funcionais. Registradores, Unidade lógica e aritmética, Unidade de controle... Como estas unidades funcionais são conectadas. A natureza das informações trocadas entre componentes. A lógica e os meios pelos quais é controlado este fluxo de informações. OAC Introdução 10

6 Anatomia: 5 componentes de qualquer Computador Computador Pessoal Computador Processador Controle Datapath Via de dados Memória (onde programas, dados vivem qdo rodando) Devices Input Entrada Output Saída Teclado, Mouse Disco (onde programas, dados vivem quando não estão rodando) Monitor, Impressora OAC Introdução 11 Nosso primeiro enfoque O processador (datapath e controle) Implementado usando milhões de transistores Impossível de entender olhando cada transistor Nós precisamos de abstrações OAC Introdução 12

7 Arquitetura de Computadores Data cache Control Branch Arquitetura Pentium Instruction cache Bus Integer data path Floatingpoint data path OAC Introdução 13 Mudanças tecnológicas Grande desenvolvimento da eletrônica Transistor: chave on/off CI: dúzias a milhões de transistores em um VLSI. OAC Introdução 14

8 Circuitos Integrados Silício semicondutor. Pode ser: Excelentes condutores. Excelentes isolantes. Áreas que alternam entre condutores e isolantes (chaves). Fabricação: Bastão (ingot) diâmetro de 6 a 12 polegadas, comprimento de 12 a 24 polegadas. Fatiados em finas fatias wafers (largura de 0,1 polegada). Série de passos de processamento químico, que cria transistores, condutores e isolantes. Conectar o chip com os pinos externos. Encapsulamento. OAC Introdução Tendências Tecnológicas: Capacidade de Memória (cada chip DRAM) size Ano Tam. (Mbit) OAC Introdução 16 Year - Aprox 1.4X/ano, ou dobro a cada 2 anos X desde 1980.

9 Tendências Tecnológicas: Complexidade do Microprocessador Lei de Moore i80486 i80386 i80286 Pentium i i8080 i Year Athlon (K7): 22 Milhões Alpha 21264: 15 milhões Pentium Pro: 5.5 milhões PowerPC 620: 6.9 milhões Alpha 21164: 9.3 milhões Sparc Ultra: 5.2 milhões 2X transistores/chip Cada 1.5 anos Chamada "Lei de Moore" OAC Introdução OAC Introdução 18 Tendências Tecnológicas: Desempenho de Processador 1.54X/ano DEC Alpha 21264/600 DEC Alpha 5/500 DEC Alpha 5/300 DEC Alpha 4/266 IBM POWER 100 Intel P MHz (Prim. 2001) Desempenho Processador aumento/ano, erroneamente referido como Lei de Moore (transistores/chip)

10 Tecnologia do Computador Mudança Dramática! Processador 2X em veloc. cada 1.5 anos; 100X desempenho na última década. Memória Capacidade DRAM: 2x / 2 anos; 64x tamanho na última década. Disco capacidade: > 2X em tamanho cada 1 ano. Custo por bit: melhora cerca de 100% por ano. 120X tamanho na última década. OAC Introdução 19 Tecnologia do Computador Mudança Dramática PC Estado-da-arte: Velocidade Clock do Processador: 4000 MHz (4.0 GigaHertz) Capacidade da Memória: 1000 MegaByte (1.0 GigaBytes) Capacidade do Disco: 1000 GigaBytes (1.0 TeraBytes) Novas unidades! Mega => Giga, Giga => Tera OAC Introdução 20

11 Por que Estudar Arq de Computadores? Mudança; É excitante!; nunca foi tão excitante! Impacta todos os outros aspectos de engenharia elétrica/eletrônica e ciência dos computadores. Bionics: Sensors in latex fingers instantly register hot and cold, and an electronic interface in his artificial limb stimulates the nerve endings in his upper arm, which then pass the information to his brain. The $3,000 system allows his hand to feel pressure and weight, so for the first time since losing his arms in a 1986 accident, he can pick up a can of soda without crushing it or having it slip through his fingers. One Digital Day OAC Introdução 21 AC: Então, o que aprenderei neste curso? Arq de Computadores do ponto de vista do programador O que o programador escreve Como é convertido para algo que o computador entende Como o computador interpreta o programa O que torna programas lentos OAC Introdução 22

12 AC: Então, o que será visto neste curso? Aprender as grandes idéias em CC e engenharia: 5 componentes clássicos de um computador Dados podem ser qualquer coisa (inteiros, ponto flutuante, caracteres); um programa determina o que ele é Conceito de programa armazenado: instruções são apenas dados Princípio de Localidade, explorado via hierarquia de memória (cache) Maior performance via exploração de paralelismo (pipeline). Princípio de abstração, utilizado para construir sistemas em camadas Compilação vs. Interpretação através das camadas do sistema. Princípios/Armadilhas de Medidas de Desempenho. OAC Introdução 23 C C++ O que AC não é Aprendizado de C Se você sabe uma, você deveria ser capaz de aprender outra ling. de programação praticamente sozinho. Dado que você sabe Pascal ou Java, deve ser mais ou menos fácil entender/aprender C. Java Programação em Linguagem Assembly Esta é uma habilidade que você aprenderá como um efeito colateral de entender as Grandes Idéias. Projeto de Hardware Nós trabalharemos com hardware em nível de abstração, com muito pouco de lógica física para que tenhamos uma perspectiva adequada do assunto. OAC Introdução 24

13 Organização do curso Desempenho (Capítulo 2) Uma arquitetura de conjunto de instruções (Capítulo 3) Aritmética e como construir uma ALU (Capítulo 4) Lógica Seqüencial (Apêndice B) Construção de um processador para executar nossas instruções (Capítulo 5) Mapeamento do Controle no Hardware (Apêndice C) Pipelining para melhorar desempenho (Capítulo 6) Memória: caches e memória virtual (Capítulo 7) I/O (Capítulo 8) Chave para um bom curso: Ler o livro! OAC Introdução 25 Literatura Livro Texto: Requerido: Organização e Projeto de Computadores: A Interface Hardware/Software, Segunda Edição, Patterson and Hennessy (P&H) - Editora LTC OAC Introdução 26

14 Leitura Todo o capítulo 1 do livro texto Itens OAC Introdução 27

15 Organização e Arquitetura de Computadores Aula 2 - Desempenho 2002 Juliana F. Camapum Wanderley OAC Desempenho 1 Objetivo: como... Medir e relatar Fazer escolhas inteligentes Ter um bom julgamento em avaliações de marketing. Entender relação entre desempenho e arquitetura. Medidas de desempenho difícil Impossível de julgar pela análise do conjunto de instruções. Diferente métodos: diferente resultados. É importante entender os critérios, para poder fazer escolhas inteligentes. Comparação entre máquinas é importante para Compradores e Projetistas. OAC Desempenho 2

16 Desempenho Importância para projetistas: Saber se uma máquina é mais rápida que a outra. Saber porque isto acontece (hardware, set de instruções, etc.). Fatores que influenciam performance: Quão bem o programa usa as instruções de máquina. Quão bem o hardware implementa as instruções. Quão bem os sistemas de I/O funcionam. (i.e., Nós necessitamos de uma nova máquina ou um novo sistema operacional?) OAC Desempenho 3 Definindo desempenho Analogia com aviões: qual avião tem o melhor desempenho? Avião Passageiros Autonomia (mi) velocidade (mph) fluxo (passxmph) Boeing Boeing BAC/Sud Concorde Douglas DC Concorde comparado com 747 Velocidade: Concorde é o melhor. Capacidade: Boeing 747 é o melhor. Velocidade de fluxo de passageiros: Boeing 747é o melhor para um maior número de pessoas. Até 132 passageiros, o Concorde é o melhor. Autonomia: o DC-8-50 é o melhor. OAC Desempenho 4

17 Desempenho dos computadores: TIME, TIME... Tempo de Resposta (latência) Dois computadores rodando um programa: Qual deles roda o programa mais rápido? Demora para executar uma tarefa Espera de uma consulta a base de dados Fluxo (Throughput) Dois computadores rodando vários programas ao mesmo tempo: Quantos trabalhos a máquina pode rodar cada vez? Qual a taxa média de execução? Quantos trabalhos são concluídos? Se um novo processador é colocado na máquina o que nós melhoramos? Se uma nova máquina é colocada no laboratório o que melhoramos? OAC Desempenho 5 Tempo de relógio, tempo de resposta ou tempo decorrido Tempo total para uma tarefa incluindo acesso a disco, memória... Freqüentemente não é bom para comparações Tempo de CPU Não considera I/O ou tempo gasto por outros programas Pode ser dividido em: Tempo de CPU para usuário tempo gasto no programa Tempo de CPU do sistema operacional tempo gasto pelo sistema op. em apoio ao programa Difícil de separar estes tempos Nosso foco: tempo de CPU para usuário Desempenho de sistema: tempo decorrido Desempenho de CPU: tempo de CPU para usuário OAC Desempenho 6 Tempo de Execução

18 Definições de Desempenho Sempre usa um programa de teste Uma máquina X rodando determinado programa 1 Performanc ex = Tempo de Execução Se X é n vezes mais rápido que Y x Performance Performance X Y Tempo de Execução = Tempo de Execução Y X = n Problema: máquina A roda um programa em 10 ms e máquina B roda o mesmo programa em 20 ms Desempenho A =1/10ms=100, Desempenho B =1/20ms=50 OAC Desempenho 7 Ciclos de Clock Clock (relógio): usado em quase todos os computadores Período = duração do ciclo de clock (segundos), freqüência=ciclos por segundo = 1/período (Hertz) Podemos usar no lugar do tempo de execução do programa em segundos o número de ciclos no. de ciclos de clock Tempo de CPU = = Tempo de CPU duração do ciclo de clock f clock Para melhorar: Reduzir período do clock Reduzir número médio de ciclos por instrução Será visto que muitas vezes Redução do período de clock aumento no n o médio de ciclos. OAC Desempenho 8

19 Exemplo Num programa de referência Máquina A (clock de 400MHz) Tempo CPU =10 segundos Máquina B (clock de?) Tempo CPU = 6 segundos Qual será o novo clock necessário? Solução usar a equação no. de ciclos de clock da CPU = Tempo de CPU f clock Outra equação de medida Programa várias instruções Cada instrução n o de ciclos CPI média de ciclos por instrução Equação alternativa: N o de ciclos de clock da CPU = Instruções por programa x CPI OAC Desempenho 9 Exemplo: duas máquinas tem duas implementações de uma mesma instruction set architecture (ISA) (mesmo conjunto de instruções) Máquina A: CLOCK:1ns CPI: 2,0 Máquina B: OAC Desempenho 10 CLOCK: 1,2ns CPI:1,2 Qual é a máquina mais rápida para este programa? Quão mais rápida? Solução Determinar tempo de CPU Usar equação do desempenho

20 Quantos ciclos são requeridos em um programa? Poderíamos assumir que # de ciclos = # de instruções 1st instruction 2nd instruction 3rd instruction 4th 5th 6th... time Esta afirmação é incorreta, instruções gastam tempos diferentes em máquinas diferentes. Como? lembrem -se que são instruções de máquina e não linhas de código C OAC Desempenho 11 Diferentes números de ciclos para diferentes instruções time Multiplicação gasta mais tempo que adição Operações de ponto flutuante são mais longas que inteiros Acesso a memória gasta mais tempo que acesso a registro OAC Desempenho 12

21 Exemplo Nosso programa roda em 10 segundos em um computador A, que tem um clock de 400 Mhz. Nós estamos ajudando alguém projetar uma nova máquina B, que deverá rodar este programa em 6 segundos. O projetista poderá usar uma nova (ou mais cara) tecnologia para melhorar substancialmente a freqüência de clock, mas ele tem a informação de que este aumento afetará o projeto do resto da CPU e por essa razão a máquina B requer 1,2 vezes mais ciclos de clock que a máquina A para um mesmo programa. Qual deverá ser a freqüência do clock da nova máquina? OAC Desempenho 13 Depois de entender ciclos Um dado programa requer várias instruções (instruções de máquina ) vários ciclos vários segundos Nós temos um vocabulário que relaciona estas grandezas: tempo de ciclo ou período (segundos por ciclo) Freqüência do clock (ciclos por segundo) CPI (ciclos por instrução) uma aplicação intensiva em ponto flutuante poderia ter um alto CPI MIPS (milhões de instruções por segundo) poderia ser bom para um programa usando instruções simples OAC Desempenho 14

22 Desempenho Desempenho é determinado pelo tempo de execução Como podemos quantificar o desempenho? # de ciclos para executar um programa # de instruções no programa # de ciclos por segundo média # de ciclos por instrução Média # de instruções por segundo Tempo de CPU = no. de ciclos de clock = f no. de clock f clock instruções CPI Erro comum: indicar uma das variáveis como desempenho quando ela realmente não é. OAC Desempenho 15 Equação alternativa no. de ciclos de clock Onde: CPI i = CPI para instruções de cada classe i C i = número de instruções de cada classe i Exemplo: Um projetista de compilador decidindo entre duas seqüências de código para uma máquina particular. = n i= 1 CPI i C i Baseado no Hardware da máquina Classe da Instrução CPI A 1 B 2 C 3 Seqüência Número de instruções A B C Qual a seqüência mais rápida? Quanto? Qual o CPI de cada seqüência? OAC Desempenho 16

23 MIPS - Exemplo Dois diferentes compiladores estão sendo testados para uma máquina de 100 MHz. A máquina tem três diferentes classes de instruções: Classe A, Classe B e Classe C, que requer um, dois e três ciclos respectivamente. Os compiladores são usados para produzir um grande bloco de software. O código do primeiro compilador usa 5 milhões de instruções da classe A, 1 milhão da classe B e 1 milhão da classe C. O código do segundo compilador usa 10 milhões de instruções da classe A, 1 milhão da classe B e 1 milhão da classe C. Qual a seqüência mais rápida de acordo com MIPS? Qual a seqüência mais rápida de acordo com tempo de execução? OAC Desempenho 17 Escolha de programas para avaliar performance Performance de vários computadores: Comparação de cada um com um computador de referência. Problema: Performance depende do programa. Qual é o melhor programa? Conjunto de programas típicos que o usuário tem contato: Engenheiros, Programadores, Público em geral. Pode depender do usuário. Programas de avaliação: benchmarks Problemas: algumas arquiteturas podem tentar melhorar desempenho nas benchmarks, sem melhorar o desempenho em geral. Exemplo: SPEC suite, 1989: Matrix300 - Referência: VAX-11/780 Melhor: programas reais. Entretanto: às vezes se usa programas pequenos, especialmente em começo de desenvolvimento, quando ainda não existem muitos programas. OAC Desempenho 18

24 800 SPEC 89 (System Performance Evaluation Cooperative) Índice para performance da máquina IBM Powerstation SPEC performance ratio gcc espresso spice doduc nasa7 li eqntott matrix3 00 fpppp tom c atv OAC Desempenho 19 Benchmark Com piler Enhanced compiler Documentação Incluir todos os detalhes (máquina, compilador, programas, S.O., etc.). Exemplo: OAC Desempenho 20

25 Comparação Definir um grupo de benchmarks. Decidir: tempo ou fluxo. Melhor: uma avaliação para cada. Mas: pessoas muitas vezes preferem uma soma, média aritmética ou ponderada do tempo de execução. Exemplo: Comparação individual Programa 1: B é 10 vezes mais rápido que A. Programa 2: A é 10 vezes mais rápido que B. Total Performance B TempoA 1001 = = = 9,1 Performance Tempo 110 OAC Desempenho 21 A B Benchmark mais popular SPEC 95 aplicada a processadores recentes Criadores: grupo de companhias Método Comparação: SPARCstation 10/40 Divide tempo da SPARCstation pelo tempo do computador que está sendo avaliado 8 programas inteiros, 10 de ponto flutuante Desempenho de cada um é reportado Média usada: geométrica OAC Desempenho 22

26 SPEC 95 grupo de programas Benchmark Description go Artificial intelligence; plays the game of Go m88ksim Motorola 88k chip simulator; runs test program gcc The Gnu C compiler generating SPARC code compress Compresses and decompresses file in memory li Lisp interpreter ijpeg Graphic compression and decompression perl Manipulates strings and prime numbers in the special-purpose programming language Perl vortex A database program tomcatv A mesh generation program swim Shallow water model with 513 x 513 grid su2cor quantum physics; Monte Carlo simulation hydro2d Astrophysics; Hydrodynamic Naiver Stokes equations mgrid Multigrid solver in 3-D potential field applu Parabolic/elliptic partial differential equations trub3d Simulates isotropic, homogeneous turbulence in a cube apsi Solves problems regarding temperature, wind velocity, and distribution of pollutant fpppp Quantum chemistry wave5 Plasma physics; electromagnetic particle simulation OAC Desempenho 23 SPEC 95 exemplo Pentium e Pentium Pro SPECint Dobrando a taxa de clock dobra o desempenho? Uma máquina com uma freqüência de clock menor pode ter melhor desempenho? SPECfp Clock rate (MHz) Pentium Pro: 1,4 a 1,5 x mais rápido OAC Desempenho Pentium Pentium Pro Clock rate (MHz) Pentium Pentium Pro Pentium Pro: 1,7 a 1,8 x mais rápido

27 Lei de Amdahl Perigo: Esperar que uma melhoria aumente o desempenho da máquina de forma proporcional ao tamanho da melhoria Tempo de execução após melhoria = Tempo de execução não afetado + (Tempo de execução afetado / melhoria ) Falha: Uso do parâmetro MIPS como métrica da performance Diferentes máquinas possuem diferentes quantidade de instruções para executar o mesmo programa Princípio: Faça o caso comum mais rápido são mais simples de otimizar OAC Desempenho 25 Exemplo Suponha que todas as instruções em ponto flutuante sejam melhoradas rodando 5 vezes mais rápido. Se o tempo de execução de alguns benchmark antes da melhora no ponto flutuante é de 10 segundos. Qual será o aumento da velocidade se metade dos 10 segundos são gastos executando instruções em ponto flutuante? OAC Desempenho 26

28 Exemplo Nós estamos procurando um benchmark para demonstrar a nova unidade de ponto flutuante descrita acima, e queremos que o benchmark tenha um aumento de velocidade de 3. Considerando um benchmark que tem um tempo de execução de 100 segundos com o hardware antigo de ponto flutuante. Quanto do tempo de execução deve ser gasto com instruções em ponto flutuante para que o benchmark tenha o aumento de velocidade desejado? OAC Desempenho 27 Relembrando Desempenho é específico para um programa particular Tempo total de execução é um resumo consistente do desempenho Para uma dada arquitetura o desempenho aumenta quando: Aumento da freqüência de clock (sem efeitos adversos no CPI) Melhorias na organização do processador que diminuam o CPI Melhorias no compilador que diminuam o CPI e/ou número de instruções Falha: Melhorias de desempenho em um aspecto da máquina afetará o desempenho total OAC Desempenho 28

29 aumento do clock: 21 vezes (66 a 1400Mhz) aumento da performance = 55 vezes Intel P e AMD Athlon 1400 são aproximadamente iguais na adição com inteiros OAC Desempenho 29 AMD K x PII 333: O AMD tem um clock 5% mais alto porém ele é 36% mais lento. Althon: 10% mais cálculos do que o Intel Pentium III rodando na mesma freqüência. Pentium não atendeu as expectativas. Pentium mostrou um desempenho razoável. OAC Desempenho 30

30 Instruções MMX foram introduzidas pela Intel com a CPU Pentium166 O Pentium 4 teve um baixo desempenho para cálculos MMX (Surpresa!!!) MMX (MultiMedia extension) na realidade não aumenta a funcionalidade do processamento Multimedia como foi anunciado As instruções utilizam operações lógicas e matemáticas processa dados maiores (64 bits) em um tempo menor Processa vários blocos inteiros simultaneamente por uma única CPU Difícil de usar poucos aplicativos usam todos os benefícios das instruções MMX OAC Desempenho 31 WinChip C6 X Pentium A Intel aumentou o tamanho da memória cache L1 (cache interno) do Pentium de 16 KB para 32 KB no Pentium MMX. Só isto faz com que o Pentium MMX seja mais rápido que um Pentium não-mmx. Programas que não possuem instruções MMX: ganho de performance médio do Pentium-200 MMX sobreo Pentium-200 é de 11,30% Programas que possuem instruções MMX: ganho de performance médio do Pentium-200 MMX sobre o Pentium-200 é de 239% São poucos os programas que utilizam instruções MMX. Um programa conhecido que já possui versão MMX é o PhotoShop. OAC Desempenho 32

31 Pentium 4 (MMX, SSE, SSE2) x Athlon (MMX, 3DNow) MP3 encoding Windows 2000 FPU intensive OAC Desempenho 33 VAX arquitetura CISC, MIPS arquitetura RISC OAC Desempenho 34

32 OAC Desempenho 35 RISC x CISC RISC sobre CISC Instruções Load/Store um ciclo (mais rápida) Controle por conexões físicas (fiação); complexidade reduzida do chip Hardware mais simples, mais fácil de projetar e mais barato para produzir Mais registradores/menor acesso a MEMÓRIA INSTRUÇÕES com formato fixo, menor número de instruções Mais fácil de projetar compiladores otimizados Software mais complexo, programas maiores CISC: 75% do mercado (Intel, AMD, padrão x86) PowerPC 601 (RISC) mais instruções do que o Pentium (CISC) CISC atuais usam muitas técnicas do RISC As diferenças estão diminuindo Sobre o MIPS e VAX Fortes similaridades organizacionais Ex: Abstrações do Pipeline da CPU se encaixam VAX microinstruções possui muitas características do RISC MIPS possui Int-Cache e Data-Cache - VAX tem uma única Cache com Inst+Data MIPS tem páginas maiores (MEM) MIPS tem acesso mais rápido a MEM, operações em FP (ponto flutuante) OAC Desempenho 36

33 Spec Benchmarks usados para MIPS/VAX 3 benchmarks inteiros (em C) Espresso Eqntott Li 7 benchmarks ponto flutuante (em fortran ) Spice2g6 Matrix300 Nasa7 Fpppp Tomcatv doduc Compiladores usados: VAX Cv3.1, CCv2.0 Compiladores usados: VAX Fortran V5.0-1, MIPS f77 v2.0 OAC Desempenho 37 Instruções e CPI (Fator RISC) MIPS/VAX INST VAX/MIPS CPI MIPS/VAX DESEMP OAC Desempenho 38 MIPS VAX DESEMP (CPI INST) = (CPI INST) VAX MIPS = VAX MIPS CPI MIPS VAX INST

34 MIPS/VAX Performance e Instruções OAC Desempenho 39

35 Organização e Arquitetura de Computadores Aula 3 Linguagem de Máquina 2002 Juliana F. Camapum Wanderley OAC Linguagem de Máquina 1 Introdução Linguagem de Máquina Conjunto de Instruções Variáveis em Assembly: Registradores Adição e Subtração em Assembly Acesso à Memória em Assembly Objetivos Facilitar a construção do hardware e compiladores Maximizar a performance. Minimizar o custo. Instruções: MIPS (NEC, Nintendo, Silicon Graphics, Sony). OAC Linguagem de Máquina 2

36 Projeto de Assembly: Conceitos Chaves Linguagem Assembly é essencialmente suportada diretamente em hardware, portanto... Princípio 1: Simplicidade favorece Regularidade. Ela é mantida bem simples! Limite nos tipos de operandos Limite no conjunto de operações que podem ser feitas no mínimo absoluto Se uma operação pode ser decomposta em uma mais simples, não a inclua (a complexa) OAC Linguagem de Máquina 3 Todo computador: ops. Aritméticas MIPS: add a,b,c # a b + c nota: os nomes reais dos operadores não são a, b e c. Serão vistos em Breve. Instruções são mais rígidas que em lin. de alto nível MIPS: sempre 3 operandos. Exemplo: somar variáveis b, c, d, e, colocando a soma em a: add a,b,c add a,a,d add a,a,e OAC Linguagem de Máquina 4 # a b+c # a b+c+d # a b+c+d+e Símbolo # Comentário (até o fim da linha). Exemplo: C Assembly. a = b + c; d = a e; Em MIPS: add a,b,c # a=b+c sub d,a,e # d=a-e

37 Variáveis Assembly: Registradores (1/3) Diferente de LAN, assembly não pode usar variáveis. Por que não? Manter o Hardware simples Operandos Assembly são registradores Número limitado de localizações especiais construídas diretamente no hardware Operações podem somente ser realizadas nestes! Benefício: Como registradores estão diretamente no hardware, eles são muito rápidos. OAC Linguagem de Máquina 5 Variáveis Assembly: Registradores (2/3) Desvantagem: Como registradores estão em hardware, existe um número predeterminado deles. Solução: código MIPS deve ser muito cuidadosamente produzido para usar eficientemente os registradores. 32 registradores no MIPS Por que 32? Princípio 2: Menor é mais rápido (> no. reg > ciclo clock) Cada registrador MIPS tem 32 bits de largura Grupos de 32 bits chamados uma palavra (word) no MIPS OAC Linguagem de Máquina 6

38 Variáveis Assembly: Registradores (3/3) Registradores são numerados de 0 a 31 Cada registrador pode ser referenciado por número ou nome. Por convenção, cada registrador tem um nome para facilitar a codificação - nomes: iniciam em $ Por agora: $16 - $22 $s0 - $s7 (corresponde a variáveis C) $8 - $15 $t0 - $t7 (corresponde a registradores temporários) Em geral, utilize nomes de registradores para tornar o código mais fácil de ler. OAC Linguagem de Máquina 7 Comentários em Assembly Outro modo de tornar o seu código mais claro: comente! Hash (#) é utilizado para comentários MIPS Qualquer coisa da marca hash(#) ao final da linha é um comentário e será ignorado. Nota: Diferente do C. Comentários em C tem a forma /* comentário */, de modo que podem ocupar várias linhas. OAC Linguagem de Máquina 8

39 Instruções Assembly Em linguagem assembly, cada declaração (chamada uma Instruction), executa exatamente uma de uma lista pequena de comandos simples Diferente de C (e da maioria das outras linguagem de alto nível), onde cada linha pode representar múltiplas operações. OAC Linguagem de Máquina 9 Adição e Subtração (1/3) Sintaxe de Instruções: 1 2,3,4 onde: 1) operação por nome 2) operando recebendo o resultado ("destino") 3) 1 o operando da operação ("fonte 1") 4) 2 o operando da operação ("fonte 2") Sintaxe é rígida: 1 operador, 3 operandos Por quê? Manter o Hardware simples via regularidade OAC Linguagem de Máquina 10

40 Adição e Subtração (2/3) em C: f = (g + h) (i + j); Adição em Assembly (MIPS) add $t0,$s1,$s2 # t0=s1+s2=(g + h) add $t1,$s3,$s4 # t1=s3+s4=(i + j) OAC Linguagem de Máquina 11 Reg. Temporários: $t0,$t1 Variáveis $s1,$s2,$s3,$s4 estão associados com as variáveis g,h,i,j Subtração em Assembly sub $s0,$t0,$t1 # s0=t0-t1=(g + h)-(i + j) Reg. Temporários: $t0,$t1 Variável $s0 está associada com a variável f Adição e Subtração (3/3) Como fazer a seguinte declaração C? a = b + c + d - e; Quebre em múltiplas instruções add $s0, $s1, $s2 # a = b + c add $s0, $s0, $s3 # a = a + d sub $s0, $s0, $s4 # a = a - e Nota: Uma linha de C pode resultar em várias linhas de MIPS. Note: Qualquer coisa após a marca hash em cada linha é ignorado (comentários) OAC Linguagem de Máquina 12

41 Operandos Assembly: Memória Variáveis C mapeiam em registradores; e como ficam as grandes estruturas de dados, como arrays/vetores? A memória (1 dos 5 componentes de um computador) contém tais estruturas. Mas as instruções aritméticas MIPS somente operam sobre registradores, nunca diretamente sobre a memória. Instruções para transferência de dados transferem dados entre os registradores e a memória: Memória para registrador Registrador para memória OAC Linguagem de Máquina 13 Endereçamento: Byte vs. palavra (1/2) Cada palavra na memória tem um endereço, similar a um índice em um array. Primeiros computadores numeravam palavras como elementos de um array C: Memory[0], Memory[1], Memory[2], OAC Linguagem de Máquina 14 Chamado o "endereço" de uma palavra Computadores precisam acessar bytes (8-bits) bem como palavras (4 bytes/palavra) Máquinas de hoje endereçam memória como bytes, portanto endereços de palavra diferem por 4 Memory[0], Memory[4], Memory[8],

42 Endereçamento: Byte vs. palavra (2/2) Endereçamento Byte Endereçamento Palavra OAC Linguagem de Máquina 15 Transferência de Dados: Memória para Reg. (1/4) Para transferir uma palavra de dados, nós devemos especificar duas coisas: Registrador: especifique este pelo número (0-31) Endereço da memória: mais difícil Pense a memória como um array único uni-dimensional, de modo que nós podemos endereçá-la simplesmente fornecendo um ponteiro para um endereço da memória. Outras vezes, nós queremos ser capazes de deslocar a partir deste ponteiro. OAC Linguagem de Máquina 16

43 Transferência de Dados: Memória para Reg (2/4) Para especificar um endereço de memória para copiar dele, especifique duas coisas: Um registrador que contém um ponteiro para a memória. Um deslocamento numérico (em bytes) O endereço de memória desejado é a soma destes dois valores. Exemplo: 8($t0) Especifica o endereço de memória apontado pelo valor em $t0, mais 8 bytes OAC Linguagem de Máquina 17 Transferência de Dados: Memória para Reg (3/4) Sintaxe da instrução de carga (load): 1 2,3(4) onde 1) nome da operação (instrução) 2) registrador que receberá o valor 3) deslocamento numérico em bytes. 4) registrador contendo o ponteiro para a memória Nome da Instrução: lw (significa Load Word, logo 32 bits ou uma palavra é carregada por vez) OAC Linguagem de Máquina 18

44 Transferência de Dados: Memória para Reg.(4/4) Exemplo: lw $t0,12($s0) Esta instrução pegará o ponteiro em $s0, soma 12 bytes a ele, e então carrega o valor da memória apontado por esta soma calculada no registrador $t0 Notas: $s0 é chamado registrador base 12 é chamado deslocamento (offset) Deslocamento é geralmente utilizado no acesso de elementos de array ou estruturas: reg base aponta para o início do array ou estrutura. OAC Linguagem de Máquina 19 Compilação com Memória Qual o offset em lw para selecionar A[8] em C? 4x8=32 para selecionar A[8]: byte vs. palavra Compile manualmente usando registradores: g = h + A[8]; g: $s1, h: $s2, $s3: endereço base de A 1 o transfere da memória para registrador: lw $t0,32($s3) # $t0 = A[8] Some 32 a $s3 para selecionar A[8], põe em $t0 A seguir, some-o a h e coloque em g add $s1,$s2,$t0 # $s1 = h+a[8]=$s2+$t0 OAC Linguagem de Máquina 20

45 Transferência de Dados: Reg para Memória Também queremos armazenar um valor do registrador na memória. Sintaxe da instrução store é idêntica à da instrução load. Nome da Instrução: sw (significa Store Word, logo 32 bits ou uma palavra será carregada por vez) Exemplo: sw $t0,12($s0) Esta instrução tomará o ponteiro em $s0, somará 12 bytes a ele, e então armazenará o valor do registrador $t0 no endereço de memória apontado pela soma calculada. OAC Linguagem de Máquina 21 Exemplo: Compilar... Compile manualmente usando registradores: A[12] = h + A[8]; h: $s2, $s3: endereço base de A 1 o transfere da memória para registrador $t0: lw $t0,32($s3) # $t0 = A[8] 2 o some-o a h e coloque em $t0 add $t0,$s2,$t0 # $t0 = h+a[8] 3 o transfere do reg. $t0 para a memória : sw $t0,48($s3) # A[12] = $t0 OAC Linguagem de Máquina 22

46 Ponteiros vs. Valores Conceito Chave: Um registrador pode conter qualquer valor de 32 bits. Este valor pode ser um int (signed), um unsigned int, um ponteiro (endereço de memória), etc. Se você escreve lw $t2,0($t0) então é melhor que $t0 contenha um ponteiro. E se você escrever add $t2,$t1,$t0 então $t0 e $t1 devem conter o quê? OAC Linguagem de Máquina 23 Notas a cerca da Memória Falha: Esquecer que endereços seqüenciais de palavras em máquinas com endereçamento de byte não diferem por 1. Muitos erros são cometidos por programadores de linguagem assembly por assumirem que o endereço da próxima palavra pode ser achado incrementandose o endereço em um registrador por 1 ao invés do tamanho da palavra em bytes. Logo, lembre-se que tanto para lw e sw, a soma do endereço base e o offset deve ser um múltiplo de 4 (para ser alinhado em palavra) OAC Linguagem de Máquina 24

47 Mais Notas acerca da Memória: Alinhamento MIPS requer que todas as palavras comecem em endereços que são múltiplos de 4 bytes. Alinhado Não Alinhado Bytes na Palavra Localização da Palavra Chamado Alinhamento: objetos devem cair em endereços que são múltiplos do seu tamanho. OAC Linguagem de Máquina 25 Papel dos Registradores vs. Memória E se temos mais variáveis do que registradores? Compilador tenta manter as variáveis mais freqüentemente utilizadas nos registradores. Escrevendo as menos comuns na memória: spilling Por que não manter todas as variáveis na memória? Menor é mais rápido: registradores são mais rápidos que a memória Registradores são mais versáteis: Instruções aritméticas MIPS pode ler 2, operar sobre eles e escrever 1 por instrução Transferência de dados MIPS somente lê ou grava 1 operando por instrução, sem nenhuma operação. OAC Linguagem de Máquina 26

48 Imediatos Imediatos são constantes numéricas. Eles aparecem freqüentemente em código, logo existem instruções especiais para eles. Somar Imediato: addi $s0,$s1,10 #$s0=$s1+10(em MIPS) f = g + 10 (em C) onde registradores $s0,$s1 estão associados com as variáveis f, g Sintaxe similar à instrução add exceto que o último argumento é um número ao invés de um registrador. OAC Linguagem de Máquina 27 Registrador Zero Um imediato particular, o número zero (0), aparece muito freqüentemente em código. Então nós definimos o registrador zero ($0 ou $zero) para sempre ter o valor 0. Isto é definido em hardware, de modo que uma instrução como: addi $0,$0,5 #$0=$0+5 $0=0(reg. $0=0 sempre) não vai fazer nada. Use este registrador, ele é muito prático! OAC Linguagem de Máquina 28

49 "Em conclusão..." (1/2) Em linguagem Assembly MIPS: Registradores substituem variáveis C Uma instrução (operação simples) por linha Mais Simples é Melhor Menor é Mais Rápido Memória é endereçada por byte, mas lw e sw acessam uma palavra de cada vez. Um ponteiro (usado por lw e sw) é simplesmente um endereço de memória, logo nós podemos somar a ele ou subtrair dele (usando offset). OAC Linguagem de Máquina 29 "E em conclusão..." (2/2) Novas Instruções: add, addi, sub lw, sw Novos registradores: Variáveis C: $s0 - $s7 Variáveis Temporárias: $t0 - $t9 Zero: $zero OAC Linguagem de Máquina 30

50 Linguagem de Máquina Instruções, como registradores e palavras, são de 32 bits Exemplo: add $t0, $s1, $s2 registradores tem números t0=reg.8,$s1=reg.17,$s2=reg.18 Formato de Instrução de soma com registradores (R-tipo): op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Primeiro campo: tipo de operação (soma). Último campo: modo da operação (soma com 2 registradores). Segundo campo: primeira fonte (17=$s1). Terceiro campo: segunda fonte (18=$s2). Quarto campo: registrador de destino (8=$t0). OAC Linguagem de Máquina 31 Linguagem de Máquina Novo princípio: Bom projeto exige um bom compromisso Vários tipos de instruções (tipo-r, tipo-i) Múltiplos formatos: complicam o hardware. Manter os formatos similares (3 primeiros campos iguais). Considere as instruções load-word e store-word, I-tipo para instruções de transferência de dados (lw,sw) Exemplo: lw $t0, 32($s2) Registrador de base: rs $s2. Registrador de fonte ou origem: rt $t0. Endereço de 16 bits: offset entre ±2 15. OAC Linguagem de Máquina op rs rt 16 bit - offset

51 Codificação das instruções vistas até agora Notar: add e sub: Mesmo opcode: 0. Diferente função: 32 e 34. OAC Linguagem de Máquina 33 Exemplo Tradução de C para assembly e linguagem de máquina. C: A[300] = h + A[300] Assembly: # $t1=end. base=a lw $t0,1200($t1) # $t0= A[300]=conteúdo(1200+$t1) add $t0,$s2, $t0 # $t0=$t0+$s2=a[300]+h sw $t0,1200($t1) # A[300]=$t0 Linguagem de máquina: simplicidade favorece regularidade 1 bit de diferença OAC Linguagem de Máquina 34

52 Computadores modernos Instruções são representadas como números. Programas podem ser armazenados na memória. Conceito de programa armazenado. Programa armazenado: Na memória... Programa de contabilidade. Editor. Compilador. Dados. Texto. Programa em C. OAC Linguagem de Máquina 35 Resumo da linguagem até agora OAC Linguagem de Máquina 36

53 Organização e Arquitetura de Computadores Aula 4 Linguagem de Máquina - Decisões 2002 Juliana F. Camapum Wanderley OAC Linguagem de Máquina - Decisões - 1 Revisão (1/2) Em Linguagem Assembly MIPS: Registradores substituem variáveis C Uma Instrução (operação simples) por linha Mais simples é Melhor Menor é Mais Rápido Memória é endereçada por byte, mas lw e sw acessam uma palavra por vez Um ponteiro (usado por lw e sw) é simplesmente um endereço de memória, de modo que podemos adicionar a ele ou subtrair dele (utilizando offset). OAC Linguagem de Máquina - Decisões - 2

54 Revisão (2/2) Novas Instruções: add, addi, sub, lw, sw Novos Registradores: Variáveis C: $s0 - $s7 Variáveis Temporárias: $t0 - $t9 Zero: $zero OAC Linguagem de Máquina - Decisões - 3 Panorama Decisões C/Assembly : if, if-else Laços (loops) C/Assembly: while, do while, for Desigualdades Declaração Switch C OAC Linguagem de Máquina - Decisões - 4

55 Até agora... Todas as instruções nos permitiram manipular dados. Assim, construimos uma calculadora. Para construirmos um computador, precisamos da habilidade de tomar decisões... Vamos lá: pegue papel e caneta porque vamos fazer alguns exercícios na classe hoje! OAC Linguagem de Máquina - Decisões - 5 Decisões em C: Declaração if 2 tipos de declaração if em C if (condição) cláusula if (condição) cláusula1 else cláusula2 Rearranje o 2 o if do seguinte modo: if (condição) goto L1; cláusula2; go to L2; L1: cláusula1; L2: Não é tão elegante como if-else, mas com o mesmo significado OAC Linguagem de Máquina - Decisões - 6

56 Instruções de Decisão MIPS Instrução de Decisão em MIPS beq register1, register2, L1 beq é "branch if (registers are) equal O mesmo que (usando C): if (register1==register2) goto L1 Instrução de decisão MIPS complementar bne register1, register2, L1 bne é "branch if (registers are) not equal O mesmo que (usando C): if (register1!=register2) goto L1 Chamados desvios condicionais OAC Linguagem de Máquina - Decisões - 7 Instrução Goto MIPS Além dos desvios condicionais, MIPS tem um desvio incondicional: J label Chamada instrução Pulo (Jump): pule (ou desvie) diretamente para a marca dada sem precisar satisfazer qualquer condição Mesmo significado (usando C): goto label Tecnicamente, é o mesmo que: beq $0,$0,label já que sempre vai satisfazer a condição. OAC Linguagem de Máquina - Decisões - 8

57 Compilando if C em MIPS (1/2) Compile manualmente if (i == j) f = g+h; else f = g-h; (true) i == j f=g+h i == j? f=g-h (false) i!= j Exit Use este mapeamento: f: $s0, g: $s1, h: $s2, i: $s3, j: $s4 OAC Linguagem de Máquina - Decisões - 9 Compilando if C em MIPS (2/2) Código final MIPS compilado (preencha o espaço em branco): (true) i == j i == j? (false) i!= j f=g+h f=g-h Exit OAC Linguagem de Máquina - Decisões - 10

58 Compilando if C em MIPS (2/2) Código MIPS final compilado: beq $s3,$s4,true # branch i==j sub $s0,$s1,$s2 # (false) f=g-h j Fim # go to Fim True: add $s0,$s1,$s2 # (true) f=g+h Fim: (true) i == j f=g+h I == j? f=g-h Exit (false) i!= j Nota: Compilador automaticamente cria labels para tratar decisões (desvios) apropriadamente. Geralmente não são encontrados no código da Linguagem de Alto Nível OAC Linguagem de Máquina - Decisões - 11 Laços (loops) em C/Assembly (1/3) Laço (loop) simples em C do { g = g + A[i]; i = i + j; } while (i!= h); Reescreva isto como: Loop: g = g + A[i]; i = i + j; if (i!= h) goto Loop; Use este mapeamento: g: $s1, h: $s2, i: $s3, j: $s4, base de A:$s5 OAC Linguagem de Máquina - Decisões - 12

59 Loops em C/Assembly (2/3) Código MIPS final compilado: (preencha o espaço em branco): OAC Linguagem de Máquina - Decisões - 13 Laços (loops) em C/Assembly (2/3) Código MIPS final compilado: Loop: add $t1,$s3,$s3 # $t1 = 2*i add $t1,$t1,$t1 # $t1 = 4*i add $t1,$t1,$s5 # $t1=end(a+4*i) lw $t1,0($t1) # $t1=a[i] add $s1,$s1,$t1 # g=g+a[i] add $s3,$s3,$s4 # i=i+j bne $s3,$s2,loop # goto Loop if i!=h OAC Linguagem de Máquina - Decisões - 14

60 Laços (loops) em C/Assembly (3/3) Existem três tipos de laços em C: while do while for Cada um pode ser rescrito como um dos outros dois, de modo que o método utilizado no exemplo anterior, pode ser aplicado a laços while e for igualmente. Conceito Chave: Apesar de haver muitas maneiras de se escrever um loop em MIPS, desvio condicional é a chave para se tomar decisões. OAC Linguagem de Máquina - Decisões - 15 Laço com while em C/Assembly (1/2) Laço (loop) simples em C while (save[i] == k) i = i + j; Reescreva isto como: Loop: if (save[i]!= k) goto Exit; i = i + j; goto Loop; Exit: Use este mapeamento: i: $s3, j: $s4, k: $s5, base de save :$s6 OAC Linguagem de Máquina - Decisões - 16

61 Loops em C/Assembly (2/2) Código MIPS final compilado: (preencha o espaço em branco): OAC Linguagem de Máquina - Decisões - 17 Laços (loops) em C/Assembly (2/2) Código MIPS final compilado: Loop: add $t1,$s3,$s3 # $t1 = 2*i add $t1,$t1,$t1 # $t1 = 4*i add $t1,$t1,$s6 # $t1=end(save+4*i) lw $t1,0($t1) # $t1=save[i] bne $t1,$s5,exit # goto Exit if save[i]!=k add $s3,$s3,$s4 # i=i+j j Loop # goto Loop Exit: OAC Linguagem de Máquina - Decisões - 18

62 Desigualdades em MIPS (1/5) Até agora, nós testamos apenas igualdades (== e!=). Programas gerais precisam testar > e < também. Criar uma Instrução de Desigualdade em MIPS: "Set on Less Than" Sintaxe: slt reg1,reg2,reg3 Significado: if (reg2 < reg3) reg1 = 1; else reg1 = 0; Em computadores, "set" significa "set to 1", "reset" significa "set to 0". OAC Linguagem de Máquina - Decisões - 19 Desigualdades em MIPS (2/5) Como nós utilizamos isto? Compile manualmente: if (g < h) goto Less; Use este mapeamento: g: $s0, h: $s1 OAC Linguagem de Máquina - Decisões - 20

63 Desigualdades em MIPS (3/5) Código MIPS final compilado: (preencha o espaço em branco): OAC Linguagem de Máquina - Decisões - 21 Desigualdades em MIPS (3/5) Código final MIPS compilado: Less: slt $t0,$s0,$s1 # $t0 = 1 if g<h bne $t0,$0,less # goto Less if $t0!=0 Desvie se $t0!= 0 (g < h) # (if (g<h)) Registrador $0 sempre contém o valor 0, assim bne e beq freqüentemente utilizam-no para comparação após uma instrução slt. OAC Linguagem de Máquina - Decisões - 22

64 Desigualdades em MIPS (4/5) Agora, nós podemos implementar <, mas como implementamos >, <= e >=? Poderíamos adicionar mais 3 instruções mas: Meta MIPS: Mais simples é Melhor Nós podemos implementar <= em um ou mais instruções utilizando apenas slt e os desvios? E >? E >=? 4 combinações de slt e beq/bne OAC Linguagem de Máquina - Decisões - 23 Desigualdades em MIPS (5/5) 4 combinações de slt e beq/bne: slt $t0,$s0,$s1 # $t0 = 1 if g<h bne $t0,$0,less # if(g<h) goto Less slt $t0,$s1,$s0 # $t0 = 1 if g>h bne $t0,$0,greater # if(g>h) goto Greater slt $t0,$s0,$s1 # $t0 = 1 if g<h beq $t0,$0,gteq # if(g>=h) goto Gteq slt $t0,$s1,$s0 # $t0 = 1 if g>h beq $t0,$0,lteq # if(g<=h) goto Lteq OAC Linguagem de Máquina - Decisões - 24

65 Imediatos em Desigualdades C Existe também uma versão com imediatos de slt para testar contra constantes: slti Útil em laços (loops) for if (g >= 1) goto Loop M I P S OAC Linguagem de Máquina - Decisões - 25 Comando Switch/Case Novo instrumento: jr (jump register): Salto incondicional. Pula para o endereço especificado pelo registrador. Geralmente é usada juntamente com uma tabela. Para casa: estudar a instrução Switch/Case. OAC Linguagem de Máquina - Decisões - 26

66 Organização e Arquitetura de Computadores Aula 5 Linguagem de Máquina - Funções 2002 Juliana F. Camapum Wanderley OAC Linguagem de Máquina - Funções - 1 Procedimentos Estruturação de programas. Mais fácil de entender. Reutilização. Dividir em partes menores. OAC Linguagem de Máquina - Funções - 2

67 Panorama Funções em C Instruções MIPS para Funções A pilha (Stack) Convenções de Registradores Exemplo OAC Linguagem de Máquina - Funções - 3 Funções em C main() { int i,j,k,m; i = mult(j,k);... ; m = mult(i,i);... } /* really dumb mult function */ int mult (int mcand, int mlier){ int product; product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; } return product; } De quais informações o compilador/programador deve manter registro? Quais instruções podem realizar isto? OAC Linguagem de Máquina - Funções - 4

68 Contabilidade de Chamada de Função Registradores tem papel fundamental para manter registro de informações nas chamadas de funções. Convenção de Registradores: Endereço de retorno $ra Argumentos $a0, $a1, $a2, $a3 Valor de Retorno $v0, $v1 Variáveis locais $s0, $s1,, $s7 A pilha também é utilizada. OAC Linguagem de Máquina - Funções - 5 Instruções de Suporte para Funções (1/4) C M I P S... sum(a,b);... /* a,b:$s0,$s1 */ } int sum(int x, int y) { return x+y; } endereço # programa principal 1000 add $a0,$s0,$zero # x = a 1004 add $a1,$s1,$zero # y = b 1008 addi $ra,$zero,1016 #$ra= j sum #jump to sum sum: add $v0,$a0,$a1 # função sum: x+y 2004 jr $ra # new instruction OAC Linguagem de Máquina - Funções - 6

69 Instruções de Suporte para Funções (2/4) Instrução única para pular e salvar o endereço de retorno: jump and link (jal) Antes: 1008 addi $ra,$zero,1016 #$ra= j sum #go to sum Depois: 1008 jal sum # $ra=1016,go to sum Por que ter uma jal? Torne o caso comum rápido: funções são muito comuns. OAC Linguagem de Máquina - Funções - 7 Instruções de Suporte para Funções (3/4) Sintaxe de jal (jump and link) é a mesma de j (jump): jal label jal deveria na verdade ser chamada laj de link and jump : Passo 1 (link): Salva o endereço da próxima instrução em $ra (Por que a próxima instrução? Por que não a corrente?) Passo 2 (jump): Pule para o label dado OAC Linguagem de Máquina - Funções - 8

70 Instruções de Suporte para Funções (4/4) Sintaxe de jr (jump register): jr register Ao invés de prover um label para pular para, a instrução jr provê um registrador que contém um endereço para onde pular. Útil somente se nós sabemos o endereço exato para onde pular: raramente aplicável. Muito útil para chamadas de funções: jal guarda o endereço de retorno no registrador ($ra) (chamada de uma função) jr pula de volta para aquele endereço (retorno da função) OAC Linguagem de Máquina - Funções - 9 Funções Aninhadas (1/2) int sumsquare(int x, int y) { return mult(x,x)+ y; } Alguma coisa chamada sumsquare, que chama mult. Há um valor em $ra que sumsquare quer pular de volta, mas será sobrescrito pela chamada a mult. Precisa salvar o endereço de retorno de sumsquare antes de chamar mult. OAC Linguagem de Máquina - Funções - 10

71 Funções Aninhadas (2/2) Em geral, pode ser necessário salvar algum outro registrador além de $ra. Quando um programa C está rodando, existem 3 importantes áreas de memória que são alocadas: Static (alocação estática): Variáveis declaradas uma vez por programa, deixam de existir somente quando a execução termina. Heap (alocação dinâmica): Variáveis declaradas dinamicamente. Stack (pilha): Espaço a ser utilizado pela função durante sua execução; é aqui que podemos salvar os valores dos registradores. OAC Linguagem de Máquina - Funções - 11 Alocação de Memória em C Endereço $sp stack pointer Stack Heap Static Espaço para informações salvas pela função Espaço explicitamente criado e.g., malloc(); ponteiros C Variáveis declaradas uma vez por programa 0 Code OAC Linguagem de Máquina - Funções - 12 Programa

72 Usando a Pilha (1/2) Nós temos um registrador $sp que sempre aponta para o último espaço utilizado na pilha. Para utilizar a pilha: 1 o decrementamos o ponteiro $sp de 4 bytes 2 o preenchemos os 4 bytes da pilha com a informação. Então, como compilamos isto? int sumsquare(int x, int y) { return mult(x,x)+ y;} OAC Linguagem de Máquina - Funções - 13 Usando a Pilha (2/2) Compile manualmente sumsquare: (salva end. retorno e argumento de SumSquare) addi $sp,$sp,-8 # reserva espaço na pilha sw $ra, 4($sp) # salva reg. end. retorno sw $a1, 0($sp) # salvar argumento y (Transfere arg. de mult e chama função mult) add $a1,$a0,$zero # transfere arg.x de mult(x,x) jal mult # chama mult (restaura arg. De SumSquare e executa operação) lw $a1, 0($sp) # restaura arg. y add $v0,$v0,$a1 # mult()+y (restaura end. retorno de SumSquare e a pilha) lw $ra, 4($sp) # restaura end. retorno addi $sp,$sp,8 # restaura pilha jr $ra # retorna para prog. principal OAC Linguagem de Máquina - Funções - 14 Função SumSquare int sumsquare(int x, int y) { return mult(x,x)+ y;}

Organização e Arquitetura de Computadores. Aula 1 - Introdução. 2002 Juliana F. Camapum Wanderley. http://www.cic.unb.br/docentes/juliana/cursos/oac

Organização e Arquitetura de Computadores. Aula 1 - Introdução. 2002 Juliana F. Camapum Wanderley. http://www.cic.unb.br/docentes/juliana/cursos/oac Organização e Arquitetura de Computadores Aula 1 - Introdução 2002 Juliana F. Camapum Wanderley http://www.cic.unb.br/docentes/juliana/cursos/oac OAC Introdução 1 Sumário Introdução a Arquitetura de Computadores

Leia mais

Organização e Arquitetura de Computadores. Aula 2 - Desempenho Juliana F. Camapum Wanderley.

Organização e Arquitetura de Computadores. Aula 2 - Desempenho Juliana F. Camapum Wanderley. Organização e Arquitetura de Computadores Aula 2 - Desempenho 2002 Juliana F. Camapum Wanderley http://www.cic.unb.br/docentes/juliana/cursos/oac OAC Desempenho 1 Objetivo: como... Medir e relatar Fazer

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

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

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

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

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

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

Arquiteturas RISC. (Reduced Instructions Set Computers)

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

Leia mais

Arquitetura de Computadores. 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

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

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:

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

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

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

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

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

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

Medidas de desempenho de CPUs. Uma introdução breve

Medidas de desempenho de CPUs. Uma introdução breve Medidas de desempenho de CPUs Uma introdução breve Fontes de informação Computer Organization & Design (D.A. Patterson + John L. Hennessey) Cap. 2 IEEE Computer IEEE Design & Test of Computers IEEE Transactions

Leia mais

Organização e Arquitetura de Computadores I

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

Leia mais

Arquitetura de Computadores 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

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

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

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

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

Figura 1 - O computador

Figura 1 - O computador Organização e arquitectura dum computador Índice Índice... 2 1. Introdução... 3 2. Representação da informação no computador... 4 3. Funcionamento básico dum computador... 5 4. Estrutura do processador...

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

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

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

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

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

Leia mais

Memória cache. Prof. Francisco Adelton

Memória cache. Prof. Francisco Adelton Memória cache Prof. Francisco Adelton Memória Cache Seu uso visa obter uma velocidade de acesso à memória próxima da velocidade das memórias mais rápidas e, ao mesmo tempo, disponibilizar no sistema uma

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

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

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

Leia mais

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

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

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

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

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 3 Software Prof.: Edilberto M. Silva http://www.edilms.eti.br SO - Prof. Edilberto Silva Barramento Sistemas Operacionais Interliga os dispositivos de E/S (I/O), memória principal

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

Conjunto de Instruções

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

Leia mais

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

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

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

Capítulo 1 Introdução

Capítulo 1 Introdução Capítulo 1 Introdução Programa: Seqüência de instruções descrevendo como executar uma determinada tarefa. Computador: Conjunto do hardware + Software Os circuitos eletrônicos de um determinado computador

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

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

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

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

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

RISC X CISC - Pipeline

RISC X CISC - Pipeline RISC X CISC - Pipeline IFBA Instituto Federal de Educ. Ciencia e Tec Bahia Curso de Analise e Desenvolvimento de Sistemas Arquitetura de Computadores 25 e 26/30 Prof. Msc. Antonio Carlos Souza Referências

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

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

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

Computadores de Programação (MAB353)

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

Leia mais

Edeyson Andrade Gomes

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

Leia mais

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

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

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

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 e Organização de Computadores. Capítulo 0 - Introdução

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

Leia mais

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

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

RISC - Reduced Instruction Set Computer

RISC - Reduced Instruction Set Computer Arquietura MAC 412- Organizãção de Computadores - Siang W. Song Baseado no livro de Tanenbaum - Structured Computer Organization Arquietura Índice 1 Avaliação da arquitetura CISC (microprogramada) Críticas

Leia mais

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01 Introdução à Arquitetura de Computadores Renan Manola Introdução ao Computador 2010/01 Introdução Conceitos (1) Computador Digital É uma máquina que pode resolver problemas executando uma série de instruções

Leia mais

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

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

Leia mais

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

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

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

Leia mais

Infraestrutura de Hardware. Instruindo um Computador

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

Leia mais

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

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

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

Organização de Computadores Hardware

Organização de Computadores Hardware Organização de Computadores Hardware Professor Marcus Vinícius Midena Ramos Colegiado de Engenharia de Computação (74)3614.1936 marcus.ramos@univasf.edu.br www.univasf.edu.br/~marcus.ramos Computador Ferramenta

Leia mais

Computadores de Programação (MAB353)

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

Leia mais

Arquitetura de Computadores

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

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

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

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional Sistemas Operacionais Prof. Pedro Luís Antonelli Anhanguera Educacional Hardware HARDWARE Sistema Computacional = conjunto de circuitos eletrônicos interligados formado por processador, memória, registradores,

Leia mais

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

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

Leia mais

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

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

AULA 1. Informática Básica. Gustavo Leitão. gustavo.leitao@ifrn.edu.br. Disciplina: Professor: Email:

AULA 1. Informática Básica. Gustavo Leitão. gustavo.leitao@ifrn.edu.br. Disciplina: Professor: Email: AULA 1 Disciplina: Informática Básica Professor: Gustavo Leitão Email: gustavo.leitao@ifrn.edu.br Estudo de caso Empresa do ramo de seguros Presidência RH Financeiro Vendas e Marketing TI CRM Riscos Introdução

Leia mais

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar Arquitetura de Computadores RISC x CISC Gustavo Pinto Vilar PPF / DPF Papiloscopista Policial Federal Pós-Graduado em Docência do Ensino Superior UFRJ Graduado em Ciência da Computação e Processamento

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 1 ARQUITETURA DE COMPUTADORES U C P Prof. Leandro Coelho Plano de Aula 2 Aula Passada Definição Evolução dos Computadores Histórico Modelo de Von-Neumann Básico CPU Mémoria E/S Barramentos Plano de Aula

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

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

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

Leia mais

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

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

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

Leia mais

Processadores. Prof. Alexandre Beletti Ferreira

Processadores. Prof. Alexandre Beletti Ferreira Processadores Prof. Alexandre Beletti Ferreira Introdução O processador é um circuito integrado de controle das funções de cálculos e tomadas de decisão de um computador. Também é chamado de cérebro do

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

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 à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Introdução à Organização de Computadores Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Tópicos Processadores Memória Principal Memória Secundária Entrada e

Leia mais

CPU Unidade Central de Processamento. História e progresso

CPU Unidade Central de Processamento. História e progresso CPU Unidade Central de Processamento História e progresso O microprocessador, ou CPU, como é mais conhecido, é o cérebro do computador e é ele que executa todos os cálculos e processamentos necessários,

Leia mais

O modelo do computador

O modelo do computador O modelo do computador Objetivos: Mostrar como é o funcionamento dos computadores modernos Mostrar as limitações a que estamos sujeitos quando programamos Histórico Os primeiros computadores são da década

Leia mais

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

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

Leia mais

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br Conceito de Computador Um computador digital é

Leia mais

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES PROCESSADORES CHIPS TRANSISTORES O que é um chip? - conhecido como circuito integrado; - pequeno e fino pedaço de silício no qual os transistores, que formam o microprocessador, foram encapsulados; - processadores

Leia mais

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias Visão Geral da Arquitetura de Computadores Prof. Elthon Scariel Dias O que é Arquitetura de Computadores? Há várias definições para o termo arquitetura de computadores : É a estrutura e comportamento de

Leia mais

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P.

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P. INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P. Centro de Emprego e Formação Profissional da Guarda Curso: Técnico de Informática Sistemas (EFA-S4A)-NS Trabalho Realizado Por: Igor_Saraiva nº 7 Com

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