Universidade de Brasília Histórico e Introdução Organização e Arquitetura de Computadores Objetivo Apresentar a evolução dos computadores, sua estrutura em termos de componentes básicos e funções principais. Abstração Projeto Urbano: características da cidade definição dos setores vias de circulação sistema hidráulico e energético sistema de esgotos... 1
Abstração Processador: características: - para que serve? - Que tipo de aplicações deve atender? projeto da arquitetura: - conjunto de instruções - tipos de dados - registradores -... projeto da organização: - blocos principais - barramentos - alimentação e relógio -... Abstração o ser humano consegue tratar um conjunto pequeno de conceitos ao mesmo tempo em um projeto, a abstração permite ignorar detalhes, focando aspectos mais gerais em primeiro lugar os conceitos ou relações abstratos são sucessivamente detalhados, até chegar a uma descrição do projeto em nível de implementação através da abstração se controe uma hierarquia de conceitos e relações, que auxilia a divisão do problema em unidades mais simples Marcos na História da Computação 1642 Pascal Soma, subtração Transferência de vai-um 1671 Leibinitz *, -, +, / Mecanismo para mul. e div. 1827 Babbage: Difference Engine 1834 Babbage: Analytical Engine Avaliação polinomial Computador de propósito geral 1941 Zuse: Z3 Computador de propósito geral 1944 Aiken: Harvard Mark I Computador de propósito geral Automação de operações Controle do sequênciamento Dispositivos eletro-mecânicos Válvulas 2
No princípio (pré-computadores) No início do século 17 iniciou-se a automação de tarefas com máquinas (ex.:adição mecanizada). Com resultados utilizados até hoje! Por exemplo: Blaise Pascal, matemático e filósofo do século 17. Máquina de Pascal Mais tarde no mesmo século foram adicionadas multiplicação e divisão à máquina. Cartões perfurados codificados com instruções para a máquina vieram da indústria de tecelagem. Máquina de Babbage em 1823, Charles Babbage concebeu a Difference Engine, para cômputo automático de tabelas matemáticas utilizando o método das diferenças finitas foi concebida para polinômios de grau 6 e números binários de 20 bits não foi concluída por dificuldades no projeto mecânico 3
Máquina de Babbage em 1934 concebeu a Analytical Engine, que introduziu conceitos de armazenamento de informações (memória), unidade operadora e controle, presentes nos computadores atuais a entrada de dados era via cartões perfurados Máquina de Babbage ENIAC O primeiro computador eletrônico 4
ENIAC Início dos anos 40 Universidade da Pennsylvania 18000 válvulas e 1500 relés Electronic Numerical Integrator And Calculator. 5000 adições por segundo ou 357 multiplicações por segundo. programado por cartões perfurados e podia ler dois números por segundo. O MARK I A série de computadores Mark foi desenvolvida na Universidade de Harvard durante os anos 40. O primeiro, Mark I, entrou em operação em 1944 e foi utilizado até 1959. O MARK I Armazenava e contava números mecanicamente, utilizando 3000 discos de armazenamento decimais, 1400 chaves circulares (rotary dial switches) e 500 milhas de fios. Transmitia e lia os dados eletricamente. Era programado por cartões perfurados, pesava 5 toneladas e realizava uma operação de multiplicação em 6 segundos. 5
O MARK I Os dados eram armazenados em local diferente das instruções (programa). Este tipo de organização ficou conhecida como Arquitetura de Harvard As instruções também eram armazenadas num formato diferente dos dados A arquitetura von Neumann Nos primeiros computadores o controle (instruções) tinha natureza diferente dos dados. O controle era usualmente manipulado através de fios e chaves, os dados lidos de fita ou cartão A equipe de von Neumann (ENIAC) desenvolveu a idéia de representar dados e instruções da mesma forma, armazenando o programa na memória, como os dados. Este conceito ficou conhecido como arquitetura de von Neumann. Muitos pesquisadores contestam este termo por ignorar o trabalho de Eckert e Mauchly, engenheiros do projeto Mudanças no hardware 6
Mudanças no hardware Os primeiros dispositivos utilizados eram os relés (eletromecânicos) A utilização de válvulas aumentou a velocidade de operação, com comutação eletrônica Para o final dos anos 50 foi introduzido o uso do transistor. 1/200 do tamanho da válvula. Podiam suportar até 100.000 instruções por segundo. Gerações de Computadores Geração Período Tecnologia Velocidade (op / seg) 1 1946-57 Válvula 40.000 2 1958-64 Transistor 200.000 3 1965-71 Integração 1.000.000 média e baixa 4 1972-77 Integração alta 10.000.00 5 1978- Integração muito alta 100.000.000 Principais Módulos Processador Controle Entrada Memória Operação Saída 7
Sistema computacional típico O processador O Processador para executar uma instrução, o processador internamente utiliza: registradores para armazenar dados e instruções circuitos lógicos para executar operações simples máquinas de estado para executar sequências de operações, implementando as instruções 8
Como a memória é organizada Como a memória é organizada A memória de acesso randômico é utilizada para troca de informações ou para o armazenamento de programas (do disco ou outro periférico) para executálos. Este tipo de memória não preserva seu conteúdo quando o sistema é desligado. Ciclo de Execução o ciclo típico de execução de uma instrução em um computador divide-se em etapas: busca instrução na memória decodifica busca operando(s) realiza operação armazena resultado 9
Dispositivos periféricos Dispositivos periféricos Dispositivos periféricos 10
Dispositivos periféricos Software Níveis de abstração Nível 5 Linguagem orientada para problemas Tradução (compilador) Nível 4 Linguagem de montagem Tradução (montador) Nível 3 Sistema Operacional Interpretação (SO) Nível 2 Máquina convencional Interpretação (µprograma) Nível 1 Microprogramação µprograma executado pelo hardware Nível 0 Lógica digital 11
Linguagens de baixo-nível Enquanto os sistemas von Neumann lidam bem com as instruções em linguagem de máquina, ela não é muito fácil para os programadores lerem ou escreverem. A linguagem assembly foi desenvolvida nos anos 50. Utiliza códigos mnemônicos (ADD, SUB,...), mais fáceis de aprender e memorizar que os códigos numéricos. Linguagens de baixo-nível Na linguagem assembly cada instrução tem uma correspondência de um-para-um com as instruções em linguagem de máquina. Linguagens assembly exigem o uso de montadores: programas que traduzem a linguagem assembly em linguagem de máquina. Linguagens de baixo-nível Como cada processador tem seu próprio conjunto de instruções, também tem seu próprio montador. Isto significa que um programa em linguagem assembly só pode ser escrito para um tipo particular de máquina. Linguagem de máquina e linguagem assembly são chamadas linguagens de baixo-nível. 12
Linguagens de alto-nível Para resolver os problemas das linguagens assembly foi necessário desenvolver outro tipo de linguagens: as linguagens de alto-nível. Mais naturais para o programador e independentes de máquina. O programador pode se preocupar com um problema em particular e não como traduzí-lo para o nível de compreensão da máquina. Linguagens de alto-nível Por exemplo, escrever A = B + C é mais fácil do que escrever MOV @C, R1; ADD @B, R1; MOV R1, @A; A primeira é mais abstrata e faz menos considerações sobre a máquina alvo. 13
Linguagens de alto-nível Linguagens de alto-nível foram desenvolvidas nos meados dos anos 50. A primeira foi FORTRAN, seguida pelo ALGOL e LISP. As linguagens de alto-nível modernas incluem Pascal, C, C++, Smalltalk, Java,... Linguagens de alto-nível Estas linguagens requerem o uso de compiladores: programas que traduzem o código fonte de alto-nível na linguagem de máquina do computador alvo. A cada instrução do código fonte podem corresponder várias instruções da linguagem de máquina. Um programa simples FOR I = 1 TO 4 PRINT I END Um programa equivalente em assembly: PUT 1 INTO Register 1 PUT 4 INTO Register 2 LOOP: COMPARE Register 1 WITH Register 2 IF EQUAL BRANCH TO "END" ADD 1 TO Register 1 BRANCH TO "LOOP" END: STOP 14
I think there is a world market for maybe five computers. Thomas Watson Senior, Chairman of IBM, 1943 15