arquitetura de computadores prof. adilson oliveira cruz [email protected]

62
Arquitetura de Computadores Prof. Adilson Oliveira Cruz [email protected] FUNDAMENTOS DE ARQUITETURA DE COMPUTADORES

Upload: beatriz-de-almeida-paiva

Post on 07-Apr-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

Arquitetura de Computadores

Prof. Adilson Oliveira [email protected]

FUNDAMENTOS DE ARQUITETURA DE COMPUTADORES

Page 2: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

CONCEITOS

Hardware (HW):Hardware é o nome dado ao conjunto de dispositivos

(componentes físicos) que formam o computador, isto é, a máquina propriamente dita.

Exemplos:

2

Page 3: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

CONCEITOS

Software (SW):Software é o nome dado aos programas de um computador,

ou seja, o conjunto de instruções, expresso em linguagens especiais e compreensíveis para a máquina, para que ela possa executar as operações que desejamos.

Exemplos:

3

Page 4: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

CONCEITOS

Em outras palavras:Hardware é tudo aquilo que se chuta quando se tem um

problema com o computador!

4

Page 5: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

CONCEITOS

Em outras palavras:E, software é tudo aquilo que se xinga quando se tem um

problema com o computador!

5

Page 6: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

CONCEITOS

Arquitetura de Computadores:Refere-se aos atributos de um sistema que são visíveis para

o programador ou, em outras palavras, que têm impacto direto sobre a execução lógica de um programa (Stalling, 2002)

Exemplos:○ O conjunto de instruções○ O número de bits usados para representar os vários tipos de

dados○ Os mecanismos de E/S○ Técnicas de endereçamento de memória

6

Page 7: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

7

Page 8: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

CONCEITOS

Organização de Computadores:Refere-se às unidades operacionais e suas interconexões

que implementam as especificações da sua arquitetura (Stalling, 2002)

Exemplos:○ Detalhes do hardware transparente ao programador○ Sinais de controle○ As interfaces entre o computador e os periféricos○ Tecnologia de memória utilizada

8

Page 9: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

9

Page 10: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

QUESTÕES

Definir se um computador deve ou não ter uma instrução de multiplicação é uma decisão de projeto de sua arquitetura ou de sua organização?Decisão de arquitetura, pois uma operação de multiplicação

faz parte do conjunto de instruções da máquina.

E quanto a definir se essa instrução será implementada por uma unidade especial de multiplicação ou por um mecanismo que utiliza repetidamente uma unidade de soma. Constitui uma decisão de projeto de sua arquitetura ou de sua organização?Decisão de organização, pois visa definir que unidade

operacional implementará essa instrução.10

Page 11: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

PRINCÍPIOS BÁSICOS

Cada computador possui um conjunto de instruções.Cada instrução é composta de uma operação e de dados que

serão usados nesta operação.Cada instrução é única, apesar de existirem instruções

similares.

Em geral, cada instrução tem a formaOPERAÇÃO OPERANDOS

OPERAÇÃO: especifica a função a ser desempenhada.OPERANDOS: determina dos dados com os quais a

operação será realizada

11

Page 12: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

PRINCÍPIOS BÁSICOS

Exemplos de instruções:mov eax,4 ;numero de chamada do sistema = sys_writemov ebx,1 ;file descriptor = stdoutmov ecx,msg ;mensagem a ser impressa (enter)mov edx,1 int 0x80 ;chamada ao kernel Linuxadd eax,ebx ;EAX = EAX + EBXcmp al,'+' ;compara o argumento com as operacoes. je near adicao ;Se for alguma delas, pula para acmp al,'-' ;respectiva operacao. q je near subtracao ;Se nao for, continua a execucao

12

Page 13: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

PRINCÍPIOS BÁSICOS

Programa: Seqüência lógica de instruções a ser seguida para que seja

atingido algum objetivo computacional

Tanto o programa quanto os dados correspondentes ficam armazenados na memória da máquina.Todo programa para ser executado deve estar na memória.

O conjunto de instruções deve ser interpretado para a realização do processamento, ou seja, as operações e operandos devem ser entendidos e processados.

13

Page 14: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

PRINCÍPIOS BÁSICOS

O conjunto de instruções básicas entendidas pelo computador é chamado de Linguagem de Máquina.

Em geral, estas instruções são:Tão simples quanto é possívelCompatíveis com o uso que se pretende dar ao computador Compatíveis com a performance que se deseja atingir

O objetivo é:Reduzir o custo e a complexidade da eletrônica necessária a

sua implementação.

14

Page 15: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTES FUNCIONAIS BÁSICOS

A arquitetura básica dos computadores de hoje foi proposta pelo húngaro naturalizado americano John von Neumann.

Sua arquitetura foi chamada de:Modelo de Von Neumann

Trabalhou na construção do:ENIAC e seu sucessor, o EDVACPrimeiros computadores eletrônicos binários

15

Page 16: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTES FUNCIONAIS BÁSICOS

Durante a construção do EDVACPublicou o artigo “First Draft of a Report on the EDVAC”Nesse artigo, ele propôs um computador composto por uma

estrutura simples mas fixa com um controle programado, que seria capaz de executar qualquer comando sem haver necessidade de se alterar o hardware.○ Técnica do programa-armazenado

O relatório sobre o EDVAC se tornou um dos primeiros documentos a descrever a disposição interna e os princípios de funcionamento dos computadores modernos

16

Page 17: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTES FUNCIONAIS BÁSICOS

Sugeriu:Guardar os programas na mesma unidade de memória dos

dadosUnidade Central de Processamento (CPU), composta de

unidade de controle e uma ou mais unidades de execução (ALU’s)

Extrair qualquer dado ou instrução da memória, realizar a operação e devolver para memória.

17

Page 18: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTES FUNCIONAIS BÁSICOS

Arquitetura devon Neumann:

18

Page 19: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTES FUNCIONAIS BÁSICOS

Apesar da evolução de cada componente físico e das interações entre os componentes essa arquitetura se manteve e é utilizada em quase todos os computadores de uso doméstico e de trabalho

19

Page 20: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTES FUNCIONAIS BÁSICOS

O modelo de von Neumann e consiste em:Memória principal

○ Que armazena dados e instruções. Unidade lógica e aritmética (ULA)

○ Capaz de realizar operações com dados binários.Unidade de controle

○ Interpretar e executar instruções armazenadas na memória. Dispositivos de entrada e saída (E/S)

○ Operados pela unidade de controle.○ Fornecem dados para o processamento e recebem dados do

processamento.

20

Page 21: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE - MEMÓRIA

A memória de um computador tem a função de armazenar dados e instruções.

É organizada em células ou posições, que podem ser visualizadas como uma matriz unidimensional.

Cada uma das células pode conter um valor numérico e é capaz de ser endereçadaPode ser identificada unicamente em relação às outras

células pelo uso de um endereço. Cada célula é denominada palavra (word) e tem um

determinado tamanho, chamado tamanho da palavra.Normalmente o tamanho é de 1 byte (ou 8 bits).A palavra é a menor unidade endereçável da memória

21

Page 22: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE - MEMÓRIA

Memória RAM:Sigla de Random Access Memory (Memória de Acesso

Aleatório).Desvantagem: é volátil

○ Perde-se a informação que armazenada quando a energia elétrica for interrompida.

Memória ROM:Sigla de Read Only Memory (Memória de Somente Leitura)A informação não é perdida quando o sistema é desligado.

○ O BIOS fica armazenada em uma memória ROM

22

Page 23: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE - MEMÓRIA

23

Page 24: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE - MEMÓRIA

Funcionamento da memória

24

Page 25: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE - MEMÓRIA

Associado a memória possuímos dois registradores: REM (registrador de endereço da memória): contém o

endereço do dado a ser lido ou escrito na memória.RDM (registrador de dados da memória): contém o dado a

ser escrito na memória ou o dado lido da memória.

A memória trabalha com dois sinais de controle: Read: o conteúdo da posição indicada por REM é copiada

para RDMWrite: a posição apontada por REM recebe o conteúdo de

RDM

25

Page 26: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE - MEMÓRIA

Parâmetros que caracterizam a memória:A nível de Arquitetura:

○ Tamanho da palavra em bits○ Tamanho máximo da memória em palavras.

A nível de organização:○ Tamanho ○ Velocidade (333 MHz, 1000 MHz)○ Tecnologia (DDR, SDR)

26

Page 27: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE - MEMÓRIA

O tamanho do endereço de memória depende do número de endereços disponíveis.

Exemplo:Para endereçar 1024 células de 1 byte cada, precisamos de

10 bits, porque 210 = 1024.

Questões: Com uma palavra de 1 byte e um endereçamento de 32 bits, conseguimos gerenciar uma memória de que tamanho?Resp: 4.294.967.296 bytes ≈ 4 GB

27

Page 28: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE - CPU

A Unidade Central de Processamento de dados (CPU) é o componente responsável:Pela leitura e escrita do conteúdo das células de memóriaRegular o tráfego de dados entre as células de memória e

registradores especiaisDecodificar e executar as instruções de um programa

A CPU é composta pela Unidade Lógica e Aritmética e a Unidade de Controle.

28

Page 29: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE – UNIDADE LÓGICA E ARITMÉTICA A Unidade Lógica e Aritmética (ULA) realiza operações

aritméticas e operações lógicas sobre um ou mais operandos.

Exemplo: soma de dois operandos, negação de um operando, “e lógico” entre dois operandos.

As operações da ULA são, geralmente, muito simples.Funções mais complexas podem ser realizadas pela ativação

seqüencial de várias operações básicas. Exemplo: execução de multiplicação como uma seqüência

de somas e deslocamentos.

29

Page 30: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE – UNIDADE LÓGICA E ARITMÉTICA Modelo estrutural da ULA:

30

Page 31: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE – UNIDADE LÓGICA E ARITMÉTICA Funcionamento da ULA:

A ULA recebe os dados (operandos) e o sinal de controle que indica a operação a ser realizada

Após realizar a operação, ela fornece o resultado da operação e os códigos de condição.

31

Page 32: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE – UNIDADE LÓGICA E ARITMÉTICA Alguns códigos de condição retornados pela ULA:

Overflow: Indica que o resultado é maior que a capacidade de representação disponível;

Sinal: Indica se o resultado é positivo ou negativo;Carry: representa o bit de vai um ou vem um.Zero: indica se o resultado da operação é nulo

Uma ULA se caracteriza por:Tamanho dos operandos em bits;Número e tipo de operações;Códigos de condição gerados.

32

Page 33: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE – UNIDADE DE CONTROLE

É o dispositivo mais complexo da CPU. Responsável por gerenciar a movimentação de dados e

de instruções de/para a CPU, através de sinais de controle que são emitidos em instantes de tempo programados.

Cada sinal de controle comanda uma micro-operação. Exemplo:

Seleção de uma operação da ULA (aquele sinal de entrada da ULA), realização de carga de um registrador...

33

Page 34: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE – REGISTRADORES ESPECIAIS Apontador de Instruções (PC): registrador que tem por

função manter o endereço de memória da próxima instrução a ser executada. Também chamado de Contador do Programa (PC). Fica na Unidade de Controle.

Registrador de Instruções (IR): armazena a instrução que está sendo executada. Em função do conteúdo deste registrador, a Unidade de Controle determina quais sinais de controle devem ser gerados.

Registrador de Estado (RST): armazena códigos de condição gerados pela ULA. Em função do conteúdo deste, a Unidade de Controle decide por gerar ou não certos sinais de controle. Logo, é interface entre ULA e a Unidade de Controle.

34

Page 35: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE – DISPOSITIVOS DE E/S

Interfaces de comunicação entre a CPU e o exterior da máquina

Permitem a entrada (para processamento) e a saída (para visualização) de informação entre o dispositivo e a memória.

Algumas das mais comuns unidades de entrada são o teclado e o mouse.

As mais comuns unidades de saída são a tela do monitor e a impressora.

35

Page 36: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE – BARRAMENTO

Os diversos componentes do computador encontram-se interligados através do barramento, que atua como caminho para o tráfego de dados dentro do computador.

36

Page 37: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPONENTE – BARRAMENTO

37

Page 38: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

INSTRUÇÃO

O que diferencia os computadores das outras máquinas?A principal característica dos computadores modernos, e que

o distingue de outras máquinas, é que pode ser programado.Isto significa que uma lista de instruções pode ser

armazenada na memória e executa posteriormente

38

Page 39: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

INSTRUÇÃO

As instruções executadas na ULA são limitadas e bem definidas . Exemplos:“Copie o conteúdo da posição de memória 123 para a

posição de memória 456““Adicione o conteúdo da posição de memória 510 ao

conteúdo da posição 511 e coloque o resultado na posição 507”

“Se o conteúdo da posição 012 é igual a 0, a próxima instrução está na posição 678"

39

Page 40: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

INSTRUÇÃO

Todas as instruções são representadas como números . Por exemplo, a instrução “add” (adicione) é representada pelo número 10000000.

O conjunto particular de instruções que um computador possui é conhecido como a linguagem de máquina do computador.

Exemplo: add eax, ebx = 0000 0000 sub eax, 10 = 1000 0011call func = 1110 1000

40

Page 41: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

LINGUAGEM DO COMPUTADOR

A única linguagem que o computador “entende” é a linguagem de máquina, que é representada por 0’s e 1’s.

Pelo fato das linguagens de máquina serem muito distantes da linguagem natural, torna-se difícil para o ser humano comunicar sua vontade ao computador.

Na prática, as pessoas não escrevem instruções diretamente na linguagem de máquina mas em uma linguagem de programação, com um nível de abstração mais alto

Algumas linguagens de programação se aproximam bastante da linguagem de máquina, como o assembly (linguagem de baixo nível)

41

Page 42: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

PROGRAMAS

Que programas são esses?Compiladores (compilers)Interpretadores (interpreters)Montadores (assemblers)

Além desses existem outros que auxiliam o computador a executar os programasLigadores (linkers)Carregadores (loaders)

42

Page 43: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

MONTADOR, LIGADOR E CARREGADOR

O que é um montador?Os montadores, ou “assemblers”, montam um programa em

linguagem de máquina a partir de sua versão em linguagem de montagem, ou linguagem “assembly”.

MontadorTransformam cada parte dos comandos em linguagem

assembly (opcode, número do registrador, números, etc.) em 0’s e 1’s

Escrevem o programa em linguagem de máquina em um arquivo com as instruções ordenadas e com os endereços indicados por elas, especificados como labels, já convertidos para números

43

Page 44: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

MONTADOR, LIGADOR E CARREGADOR

O que eles fazem?Acham um endereço inicial para o programaDeterminam o comprimento de cada instrução

○ Precisam conhecer quantos operandos são requeridos para cada instrução

Substituem todas as instruções e operandos pelos equivalentes binários

Determinam as posições de memória, relativas ao programa, para os endereços simbólicos, e substituir tais endereços simbólicos pelos endereços binários

Marcar todas as referências simbólicas não resolvidasMarcar os endereços simbólicos externamente referenciáveis

44

Page 45: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

MONTADOR, LIGADOR E CARREGADOR

Um programa pode ser dividido em vários segmentos. Quando há referências simbólicas cruzadas entre os segmentos, não é papel do montador resolver estas referências, mas ele precisa detectá-las e marcá-las.

O arquivo gerado pelo montador é chamado de arquivo objeto, e em geral pode ser executado diretamente pelo computador.

45

Page 46: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

MONTADOR, LIGADOR E CARREGADOR

Ligadores. O que é um ligador?Ligadores ou “linkers” são programas especiais que recebem

como entrada os arquivos objeto e geram como saída o programa final em linguagem de máquina

Um ligador realiza quatro tarefas básicas:Determina as posições de memória para os trechos de

código de cada módulo que compõe o programa sendo “linkado”.

Resolve as referências entre os arquivos.

46

Page 47: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

MONTADOR, LIGADOR E CARREGADOR

Um ligador realiza quatro tarefas básicas: (cont.)Procura nas bibliotecas (libraries), indicadas pelo

programador, as rotinas usadas nos fontes de cada segmento.

Indica ao programador quais são os endereços simbólicos que não foram resolvidos (não tenham correspondente em nenhum segmento ou bibliotecas indicadas).

Programas que tenham sidos linkados sem erros estão prontos para serem executados!

47

Page 48: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

MONTADOR, LIGADOR E CARREGADOR

O que é um Carregador (ou Loader)?É um programa que faz parte do Sistema Operacional usado

para carregar os arquivos objeto para a memória. Para iniciar o execução de um programa, o carregador

realiza as seguintes operações:Determina o tamanho de todas as partes de um programa e

aloca memória para todas elasCopia as instruções e os dados para o trecho de memória

separadoInicializa os registradores do processador para valores

apropriadosSalta para a primeira instrução do programa usando a

instrução da máquina utilizada para chamada de procedimento (start) 48

Page 49: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

MONTADOR, LIGADOR E CARREGADOR

49

Page 50: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

PROGRAMAÇÃO

A programação em linguagem assembly é uma tarefa difícil e pouco produtiva

Exemplo:X = 5 – 2 * 4 / 6;mov eax, 5mov ebx, 2sub eax, ebxmov ebx, 4mul eax, ebx, ...

Assim, foram criadas linguagens de um nível de abstração mais alto.

50

Page 51: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

PROGRAMAÇÃO

51

Page 52: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

PROGRAMAÇÃO

Junto com essas linguagens foram desenvolvidos processos para transformar os códigos destas linguagens de alto nível em códigos de máquina.

Esses processos são chamados de:CompilaçãoInterpretação

52

Page 53: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPILADOR

O que é um Compilador?Compiladores são programas que recebem como entrada

arquivos texto contendo módulos escritos em linguagem de alto nível e geram como saída arquivos objeto correspondentes a cada módulo, ou, se todas as bibliotecas e módulos são apresentados como entrada, geram um programa executável diretamente.

53

Page 54: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPILAÇÃO

Criamos um programa feito com a linguagem de alto nível L1.

Executamos um programa que transforma todas as instruções escritas em L1, nas instruções equivalentes em uma linguagem de baixo nível L0 (linguagem de máquina).

O processador então executa o programa feito totalmente em linguagem L0.

Essa técnica é conhecida como compilação. A esse programa que transforma um programa escrito na

linguagem L1 para a linguagem L0, chamamos de compilador.

54

Page 55: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

COMPILAÇÃO

Assim, na compilação, o programa é todo traduzido de uma linguagem de mais alto nível para linguagem de máquina de uma só vez e é armazenado em linguagem de máquina para futuras execuções.

São exemplos de linguagens de programação compiladas a linguagem C, C++, Delphi, Pascal...

55

Page 56: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

INTERPRETADOR

O que é um Interpretador?Programas interpretadores recebem como entrada arquivos

texto contendo programas em linguagem assembly ou linguagem de alto nível.

Percorrem os programas, a partir de seu ponto de entrada, executando cada comando

56

Page 57: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

INTERPRETAÇÃO

Criamos um programa feito com a linguagem de alto nível L1.

Executamos um programa que transforma todas as instruções escritas em L1, nas instruções equivalentes em uma linguagem de baixo nível L0 (linguagem de máquina) e envia essas instruções para a execução.

Essa técnica é conhecida como interpretação. A esse programa que transforma um programa escrito na

linguagem L1 para a linguagem L0, chamamos de interpretador.

57

Page 58: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

INTERPRETAÇÃO

Em linguagens interpretadas, o programa vai sendo traduzido e à medida em que vai sendo executado.Traduzido linha a linha.Não existe um arquivo executável

Dentre as linguagens interpretadas podemos destacar Python, Pearl, JavaScript, Prolog, ...

Linguagens interpretadas também são chamadas de linguagens de script.

58

Page 59: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

QUESTÕES

Qual é a principal diferença entre o trabalho realizado por um montador e por um compilador?

Tipicamente, o que seria mais rápido: a execução de um programa compilado ou a de um programa interpretado? Por que?

E se pensarmos em termos de portabilidade? O que seria melhor, a interpretação ou a compilação?

A linguagem Java é compilada ou interpretada?

59

Page 60: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

MÁQUINAS VIRTUAIS

Uma máquina virtual é um programa que emula uma máquina e tem seu conjunto de instrução. A máquina virtual é executada sobre uma máquina real.

Assim, o código escrito em uma linguagem L2 é compilado para a linguagem L1 entendido pela máquina virtual. A máquina virtual, por sua vez, interpreta linha a linha o código em L1 o transformando na linguagem da máquina real.

60

Page 61: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

MÁQUINAS VIRTUAIS

Princípios básicos:Para aumentar a performance, as máquinas virtuais ao invés

de interpretar linha a linha o código de L1 para L0 podem “compilar” blocos de uma só vez, de acordo com as necessidades. Essa técnica é chamada JIT(Just in time).

A linguagem Java é o maior exemplo de linguagem que utiliza-se de máquinas virtuais (JVM). Atualmente as JVM utilizam-se da técnica JIT.

61

Page 62: Arquitetura de Computadores Prof. Adilson Oliveira Cruz acruz@catolica-es.edu.br

BIBLIOGRAFIA

WEBER, R. F. Fundamentos da Arquitetura de Computadores. 3ª. ed. Porto Alegre: Editora Sagra Luzzatto, 2004.

STALLINGS, W. Arquitetura e Organização de Computadores. 5a. ed. São Paulo: Prentice Hall, 2002.

62