Você está na página 1de 4

Organizao e Arquitetura de Computadores

Roteiro da Aula

Mquina Multinveis

Carlos Augusto de S. Almeida


prof . c augusto almeida @gmail.com Instituto Federal de Sergipe (IFS) Campus Itabaiana Setembro de 2012
2

Linguagens & Nveis de Abstrao


Um computador uma mquina capaz de resolver problemas executando uma sequencia de instrues que lhe so fornecidas. Essa sequencia de instrues conhecida como programa.
P.ex. um programa para calcular a mdia de 2 nmeros. (passo 1) Obter os 2 nmeros; (passo 2) Calcular a mdia desses 2 nmeros; (passo 3) Imprimir a mdia calculada.

Linguagens & Nveis de Abstrao


A Ling. de Mquina formada por um conjunto limitado e simples de instrues que so reconhecidas e podem ser executadas pelos circuitos do computador (hardware). Ex. de instrues: (1) soma, (2) comparao, (3) transferncia de dados de uma parte da memria para outra.

O conjunto de instrues em Ling. de Mquina devem:


Ser simples; Ser compatveis com o uso da mquina; Ser compatveis com o desempenho requerido; Ter custo e complexidade da eletrnica reduzidos (aplicao).

Mas, o computador s pode executar programas que estejam em uma linguagem que ele entenda. Qual a linguagem que o computador entende ? Linguagem de Mquina ( 010101010111... )
Lembrete: Linguagem de Mquina != Linguagem Assembler
3

A Ling. de Mquina ( binria, de baixo nvel), muito diferente da Ling. Natural (humana, de alto nvel).
4

Linguagens & Nveis de Abstrao


Um trecho do cdigo de Hello, world! em Linguagem de Mquina
7F 34 00 01 00 00 6F 00 00 80 11 00 AE 45 00 00 00 10 00 72 00 00 80 00 00 00 4C 00 00 00 00 00 6C 00 00 04 00 00 00 46 00 00 00 00 B8 64 00 00 08 00 00 00 01 C8 00 A0 00 04 21 00 00 80 01 04 17 01 00 80 00 00 00 0A 00 00 00 00 00 00 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 2E 00 00 00 00 00 00 00 00 00 A0 00 CD 73 00 00 1D 03 00 00 00 00 80 90 00 80 68 00 00 00 00 00 00 00 00 04 04 00 B8 73 00 00 00 00 00 00 00 00 08 08 00 01 74 00 00 00 00 00 00 00 34 9D A0 00 00 72 00 00 00 A0 01 00 00 00 00 90 00 00 74 00 00 00 90 00 00 00 20 00 04 00 00 61 00 00 00 04 00 00 00 00 00 08 00 CD 62 00 00 00 08 00 00 02 02 9D 0E BA 80 00 00 0B 00 A0 03 01 00 00 00 00 0E 00 2E 00 00 00 00 00 00 03 28 00 00 00 00 74 00 00 00 00 00 00 00 00 00 00 00 00 65 00 00 00 00 00 00 01 04 05 0E 00 48 78 00 01 10 0E 00 00 00 00 00 00 B9 65 74 00 00 00 00 00 00 00 03 00 00 A0 6C 00 00 00 00 00 00 00 00 00 00 00 90 6C 2E 00 00 00 00 00 00 80 01 00 06 04 6F 64 00 06 00 00 00 80 00 10 00 08 2C 61 00 00 00 00 00 04 00 00 00 BB 20 74 00 00 00 00 00 08 00 00 00 01 77 61 00 00 00 00 00

Linguagens & Nveis de Abstrao


Linguagem de Mquina != Linguagem Assembler
section .text global _main _main: mov mov mov mov int edx,len ecx,str ebx,1 eax,4 0x80 ; goto para a funo principal do programa ; ; ; ; ; ; goto, incio da funo principal move p/ edx o comprimento da str1 ponteiro p/ str "Hello, world!" nmero do fd (file descriptor) no caso (stdout) nm. de chamadas de sistema, ou (sys_write) write chamada do kernel

48 65 6C 6C 6F 2C 20 77 6F 72 6C 64 21 H e l l o , W o r l d !

mov eax,1 int 0x80

; nm. de chamadas de sistema, ou (sys_exit) exit ; chamada do kernel ; string a ser impressa ; comprimento da string "Hello, world!"

section .data str1 db 'Hello, world!',0xa len equ $ - str1

Hello, world! em Assembler (Linux)


5 6

Implementao das LPs

Linguagens & Nveis de Abstrao


Problema: implementar em Ling. Mquina uma misso quase impossvel, uma tarefa complexa e dispendiosa (trabalhosa). Ento como executar programas escritos em Ling. de Alto Nvel ? Soluo encontrada: os programas so escritos em Ling. de Alto Nvel ( p.ex. Pascal ) e depois so traduzidos para Ling. de Mquina, antes de suas instrues serem executadas.
[nvel 1]

Compilao
Todo o cdigo-fonte traduzido para ling. de mquina, uma nica vez. Durante a traduo, o cdigo-fonte excessivamente analisado.
Busca por erros no cdigo. Otimizao de cdigo. Leva em considerao todo o cdigo.

O programa em ling. de mquina executado diretamente.


Mais eficiente.

Ex. de LPs: C, C++, Pascal, ...


cdigo-fonte

Ling. de Alto Nvel (instrues complexa)


traduo

for while readln writeln ...

[nvel 0]

Ling. de Baixo Nvel (instrues simples)

01010011101110111 ...

uma nica vez

compilador

Quando feito a traduo do programa para Ling. de Mquina ?

vrias vezes dados de entrada


7

programa (.exe)

sada
8

Implementao das LPs

Implementao das LPs

Interpretao Pura
O cdigo-fonte traduzido durante a execuo do programa.
Cada instruo do cdigo traduzida para ling. de mquina no momento em que chamada. Perda de eficincia e maior consumo de memria.
O interpretador precisa traduzir o cdigo e identificar erros no momento da execuo.

Hbrida
Busca unir o melhor dos dois mundos: da compilao e da interpretao.
A eficincia da compilao, e a portabilidade e flexibilidade da interpretao pura.

Maior portabilidade, flexibilidade, prototipao, e facilidade de depurao. Raramente usada. Ex. de LPs: JavaScript, PHP, Matlab, ...
vrias vezes cdigo-fonte dados de entrada
Linguagens & Nveis de Abstrao

cdigo-fonte uma nica vez vrias vezes cdigo intermedirio sada


9

compilador

interpretador

dados de entrada
Linguagens & Nveis de Abstrao

mq. virtual

sada
10

Traduo de Programas
Existem 3 abordagens para traduzir programas para Ling. de Mquina 1. Compilao: o programa completo traduzido antes de sua execuo.
A traduo ocorre uma nica vez. Gerao do executvel (.exe). Vantagem: melhor desempenho, as instrues do programa podem ser executadas diretamente, j esto em LM. Desvantagem: baixa portabilidade, a LM vria de plataforma para plataforma. Plataforma diferente implica em .exe diferente.

Traduo de Programas
Existem 3 abordagens para traduzir programas para Ling. de Mquina 1. Compilao: o programa completo traduzido antes de sua execuo. 2. Interpretao: o programa traduzido em tempo de execuo, cada instruo traduzida antes de ser executada. 3. Hbrida: meio-compilada e meio-interpretada.
Consegue: (1) melhorar o desempenho; (2) mantendo a portabilidade. Abordagem adotada pelo Java e C#.

2. Interpretao: o programa traduzido em tempo de execuo, cada instruo traduzida antes de ser executada.
A traduo ocorre inmeras vezes, uma traduo sempre que o programa executado. O programa executado a partir do prprio cdigo-fonte. Vantagem: portabilidade, porque a instruo traduzida para a LM no momento de sua execuo. Desvantagem: perda significativa de desempenho, a traduo das instrues consome recursos computacionais.
Linguagens & Nveis de Abstrao
11

12

Linguagens & Nveis de Abstrao

Mquinas Multinveis
Qual o problema de escrever & traduzir programas pensando na Ling. de Mquina (LM) do computador que ir executa-las? Cada computador possui uma LM especfica para ele. Dessa forma, o programa executvel s pode rodar em um computador (hardware) especfico. Soluo: para dar um pouco mais de portabilidade aos programas, ao invs deles serem escritos & traduzidos diretamente para a LM do Computador Real, eles so escritos & traduzidos para LM de um Computador Virtual.
O programa escrito pensando na Mquina Virtual. O programa tambm traduzido pensando na Mquina Virtual.

Mquinas Multinveis
Soluo: para dar um pouco mais de portabilidade aos programas, ao invs deles serem escritos & traduzidos diretamente para a LM do Computador Real, eles so escritos & traduzidos para LM de um Computador Virtual.
[nvel 2]

Ling. de Alto Nvel


traduo

[nvel 1]

Ling. Mquina do Computador Virtual


traduo

[nvel 0]

Ling. Mquina do Computador Real

Alm desses nveis de abstrao, podem existir muitos outros, onde cada nvel (linguagem/mquina) representa uma abstrao a mais em relao ao nvel inferior.

13

14

Linguagens & Nveis de Abstrao

Linguagens & Nveis de Abstrao

Mquinas Multinveis
Pensando mltiplos nveis de abstrao

Mquinas Multinveis
Computador visto como uma Mquina Multinvel de 6 nveis.

15

Abaixo do Nvel 0, ainda existe um outro nvel, onde os projetistas de hardware trabalham com os elementos mais bsico do projeto (transistores), mas isso deixe para os fsicos.

16

Linguagens & Nveis de Abstrao

Linguagens & Nveis de Abstrao

Mquinas Multinveis
Nvel 5: Nvel das Ling. Orientadas para a Soluo de Problemas
Esto as (1) Ling. de Alto Nvel: Pascal Java (2) Ling. de Mdio Nvel: C C++ C# Lisp ...

Mquinas Multinveis
Nvel 4: Nvel da Ling. Assembler
Ling. Assembler == Ling. de Montagem, forma simblica para representar a ling. de nvel mais baixo. Programas so inicialmente traduzidos para as ling. de nveis 1 2 e 3, e depois interpretadas pela mquina virtual apropriada ou pela prpria mquina real.

Os programas (cdigo-fonte): So +legveis; +confiveis; +portveis; e +redigveis (fceis de modificar). Quando no so 100% portveis, em geral, algumas modificaes j so suficientes para se encaixarem na nova plataforma. Os compiladores, traduzem os programas para os nveis: 3 (nvel do Sist. Operacionais) ou 4 (nvel da Ling. de Assembler). Algumas ling. so interpretadas. P.ex. Java, interpretada pela Mquina Virtual Java (ou JVM).

17

18

Linguagens & Nveis de Abstrao

Linguagens & Nveis de Abstrao

Mquinas Multinveis
Nvel 3: Nvel do Sistema Operacional
As instrues neste nvel tb podem conter instrues ISA. Oferece uma interface de acesso a memria, geralmente, implementa o conceito de memria virtual, que permite alocar mais memria do que realmente h, atravs da paginao. Permite executar 2 ou mais programas simultaneamente, conceito de pseudo-paralelismo. Suporta aplicaes com interface grfica. Programas deste nvel para baixo, so conhecidas como programas do sistema. Os programas dos nveis acima deste, so conhecidos como programas de aplicao (Word Excel Notepad).

Mquinas Multinveis
Nvel 2: Nvel da Arquitetura do Conjunto de Instrues
Nvel ISA: Instruction Set Architecture Arquitetura do Conjunto de Instrues Definida pelo fabricante, que disponibilizam estas informaes atravs de um Manual de Referncia da Linguagem de Mquina. O Manual de Referncia define como so executadas: (1) interpretadas por microprogramas, arquitetura CISC; (2) executadas diretamente pelo hardware, arquitetura RISC. O conjunto de instrues tb definido pelo fabricante, e dependente da arquitetura da mquina.

19

20

Linguagens & Nveis de Abstrao

Linguagens & Nveis de Abstrao

Mquinas Multinveis
Nvel 1: Nvel de Microarquitetura
Disponibiliza uma memria local, de 8 a 32 registradores, para ser manipulada pela UAL (Unidade Aritmtica e Lgica), que realiza as operaes aritmticas mais simples. As operaes podem ser controladas por um microprograma (arquitetura CISC), ou executadas diretamente por hardware (arquitetura RISC). Microprograma: um interpretador para as instrues do Nvel 2 ISA. (1) busca; (2) decofica; e (3) executa as instrues, uma a uma, usando para isso os registradores.

Mquinas Multinveis
Nvel 0: Nvel da Lgica Digital
Nvel mais baixo da estrutura. Os objetos de interesse so as portas lgicas. Cada porta lgica possui 1 ou mais entradas digitais (aceitam 0 ou 1) e calculam funes lgicas simples sobre essas entradas. Ex.: AND OR XOR ... Portas lgicas so combinadas para formar memrias de 1 bit > registradores > e at processadores.

21

22

Linguagens & Nveis de Abstrao

Linguagens & Nveis de Abstrao

Mquinas Multinveis (mais detalhes)

Mquinas Multinveis (mais detalhes)

23

24

Linguagens & Nveis de Abstrao

Linguagens & Nveis de Abstrao

Mquinas Multinveis (mais detalhes)

Mquinas Multinveis (mais detalhes)

Os Circuitos Digitais esto divididos em 3 blocos bsicos, de acordo com sua funo: Logic (lgico) para processamento de dados; State (estado) para armazenar dados; Interconnect (interconexo) para transmitir dados.
25 26

Linguagens & Nveis de Abstrao

Linguagens & Nveis de Abstrao

Mquinas Multinveis (mais detalhes)

Mquinas Multinveis
Concluso sobre as Mquinas Multinveis
Computadores so projetados como uma srie de nveis de abstrao, onde cada nvel construdo em cima de seus precursores. Cada nvel representa uma abstrao distinta, com diferentes objetos e operaes. A abstrao oferecida por cada nvel permite ignorar detalhes irrelevantes dos nveis mais baixos, reduzindo uma questo complexa a algo muito mais fcil de ser entendido.

A Arquitetura de Computadores, em geral, est relacionada a 3 componentes bsicos: Processor (lgico) para computador dados (processamento); Networks (barramentos) para transferir dados; Memria (memria) para armazenar dados.
27

Nos primeiros computadores havia uma distino clara entre hardware e software. Atualmente, muito difcil fazer est distino. O que hoje est implementado em software, amanh pode estar em hardware, e vice-versa. Mas as aplicaes no sentem estas mudanas, porque as camadas abstraem (escondem) essas mudanas.
28

Linguagens & Nveis de Abstrao

Mquinas Multinveis
Concluso sobre as Mquinas Multinveis
As camadas abstraem um pouco mais a heterogeneidade do hardware, proporcionando programas mais portteis. Do ponto de vista do programador, no tem muita importncia a maneira como a instruo realmente processada. A instruo existe realmente no hardware, ou uma abstrao oferecida pela mquina virtual. Os programadores de um nvel, em geral, no devem se preocupar com a implementao das instrues nos nveis inferiores.

29