terça-feira, 30 de agosto de 2011

OPERAÇÕES EXECUTADAS PELO HARDWARE DA MÁQUINA

Todo computador precisa ser capaz de executar operações aritméticas. A notação abaixo, da linguagem de montagem do MIPS,
add a, b, c
instrui o computador a somar duas variáveis  b e c, colocando o resultado da soma em a.
Esta notação é extremamente rígida e muito limitada, na medida em que cada instrução aritmética do MIPS executa apenas uma operação e precisa sempre referenciar exatamente três variáveis. Por exemplo, suponha que desejemos colocar a soma de b, c, d e e na variável a.

Linguagem de montagem do MIPS
Categoria
Instrução
Exemplo
Significado
Comentário
Aritmética
add
add a, b, c
a = b + c
Sempre três operandos
subtract
sub a, b, c
a = b –c
Sempre três operandos


A sequência de intruções a seguir adiciona as variáveis acima referenciadas:

add a, b, c # A soma de b e c é colocada em a.
add a, a, d # A soma de b, c e d é colocada em a.
add a, a, e # A soma de b, c d e e está agora em a.

Portanto, gastamos três instruções para obter a soma de quatro variáveis.
As palavras à direita do símbolo do "jogo da velha" (#) em cada uma das linhas acima são os comentários, muito importantes para os leitores humanos e solenemente ignorados pelo computador. Observe que, ao contrário de outras linguagens, cada linha desta linguagem pode conter no máximo uma instrução. Outra diferença é que os comentários sempre terminam no final de uma linha.
Intuitivamente, uma operação como a adição possui três operandos: os dois números a serem somados e um lugar para colocar o valor da soma. Exigir que cada instrução tenha exatamente três operandos, nem mais nem menos, segue a filosofia de manter o hardware tão simples quanto possível: o hardware para realizar operações aritméticas sobre um número variável de operandos é mais complicado do que aquele que trata com um número fixo de variáveis. Essa situação ilustra o primeiro dos quatro princípios básicos do projeto do hardware:

Princípío de projeto 1: A simplicidade é favorecida pela regularidade.

Podemos agora mostrar, nos dois exemplos que se seguem, as relações dos programas escritos em linguagem de alto nível para os programas escritos nesta notação mais primitiva.

Compilação de dois comandos de atribuição em C para linguagem de montagem do MIPS
Exemplo
O segmento a seguir, de um programa em C, contém cinco variáveis, a, b, c, d e e:

a = b + c;
d = a - e;

A tradução das instruções em C para linguagem de montagem do MIPS é realizada por um compilador. Mostre o código MIPS, produzido pelo compilador C.

Solução

Uma instrução aritmética do MIPS opera sempre sobre dois operandos-fonte, e coloca o resultado em um operando-destino. Portanto, os dois comandos C acima são compilados diretamente nas duas instruções da linguagem de montagem do MIPS, mostradas a seguir:

add a, b, c
sub d, a, e

Compilação de uma declaração C complexa.
Exemplo
Um comando em C um pouco mais complexo que o anterior é apresentado a seguir, e contém cinco variáveis f, g, h, i e j:

f = (g + h) - (i + j);

Qual o código MIPS produzido pelo compilador?

_______________________________________________________________________________
Referência
PATTERSON A. David & HENNESSY L. John. Organização e projeto de computadores. A interface HARDWARE/SOFTWARE. 2ed. LTC - Rio de Janeiro - 2000.

Por mim adaptado.
Enquanto adaptava este texto ouvia Erykah Badu...
_______________________________________________________________________________
Infelizmente na próxima QUARTA (31 de agosto) não poderei comparecer ao campus. Esta aula será compensada da seguinte maneira:
No dia 14 de setembro ficaremos juntos até às 22:20;
No dia 21 de setembro ficaremos juntos até às 21:30.
_______________________________________________________________________________
Comentem este post.

quarta-feira, 24 de agosto de 2011

Os Primeiros Computadores Eletrônicos

J. Prosper Eckert e John Mauchly construíram, na Moore School da Universidade da Pennsylvania, aquilo qeu foi considerado o primeiro computador de propósito geral que realmente funcionou como tal. A máquina, que recebeu o nome de ENIAC (Electronic Numerical Integrator and Calculator), foi subsidiado pelo Exército dos Estados Unidos, e tornou-se operacional durante a Segunda Guerra Mundial. Talvez por razões de segurança nacional, a existência da máquina só foi revelado em 1946, após o fim da guerra. O ENIAC, apesar de ser uma máquina de propósito geral, foi usado para calcular tabelas de direção de tiro para artilharia do Exército. Seu formato era em U, e suas medidas eram 80 pés de comprimento por 8,5 de altura por vários pés de largura. Cada um dos seus 20 registradores de 10 dígitos media 2 pés. No total, o ENIAC usou 18.000 válvulas.
1 pé é igual a 0,3048 metros, isso quer dizer que um registrador media 60,96 centímetros.


[..]
Em 1944, John Von Neumann se interessou pelo projeto do ENIAC. Os responsáveis pelo projeto estavam interessados em melhorar a maneira como os programas eram desenvolvidos e iniciaram discussões a respeito do armazenamento de programas na forma de números. O Dr. von Neumann ajudou na consolidação dessas ideias e escreveu um artigo lançando as bases para um computador com programa armazenado, chamado EDVAC (Electronic Discrete Variable Automatic Computer).

Retirado do livro: Organização e projeto de computadores - 2.ed. LTC - Patterson & Hennessy.
http://www.flickr.com/photos/museeinformatique/3784586580/

Outros computadores foram criados após o ENIAC, por exemplo: o UNIVAC, CRAY-1, entre outros.
Faça uma pesquisa na internet e descubra quantos registradores tinha cada um destes projetos.

sábado, 13 de agosto de 2011