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 podem reconhecer e executar um conjunto limitado de instruções simples. As instruções primitivas do computador formam uma linguagem, chamada linguagem de máquina. 1.1 Organização Estruturada do Computador 1.1.1 Linguagens, Níveis e Máquinas Virtuais Linguagem: Conjunto de instruções adequadas a um determinado nível. Tradução: as instruções de uma linguagem de um nível superior são substituídas completamente pelas instruções do nível inferior. Um novo programa é gerado. (ex.: Compilação de um programa). Interpretação: Utiliza se um programa escrito no nível inferior capaz de compreender as instruções contidas em um programa em um nível superior. Um novo programa não é gerado. (ex.: Matlab). Máquina Virtual: Computador hipotético capaz de executar diretamente as instruções de um 1
determinado nível. Cada nível possui o seu próprio computador. Computador: Formado por camadas ou níveis. 1.1.2 Máquinas atuais com vários níveis Nível 2 : Semicondutores formando transistores Nível 1: Transistores formando portas lógicas Nível 0: Portas lógicas formando circuitos digitais (Registradores, comparadores, somadores...) Nível 1(Microarquitetura) via de dados: Registradores formando memória local e circuitos formando a ULA (Unidade Lógica Aritmética). Unidade de controle criada por um programa (microprograma) ou por hardware. Microprograma: Interpretação. Hardware: execução direta. Nível 2: ISA (Instruction Set Architecture). 2
Conjunto de instruções divulgadas pelo fabricante. Nível 3: Sistema operacional: Controla as funções básicas do computador. Nível híbrido: interpretado e/ou traduzido. Grande parte das instruções deste nível são do nível ISA. Nível 4: Linguagem Assembly. Utilização de mnemônicos. Nível 5: Linguagens de alto nível. Normalmente traduzidas (compiladas). 1.1.3 Desenvolvimento de máquinas multiníveis. Hardware: Composto por objetos tangíveis (circuitos integrados, placas de circuito, fontes de alimentação...). Software: Constituído por um algoritmo (conjunto de instruções em uma determinado ordem explicando como fazer alguma coisa) e sua representação no computador programa. O hardware e o software são logicamente equivalentes. Invenção do microprograma; Invenção do sistema operacional; Migração das funções para o microcódigo; Eliminação do microprograma. 3
1.2 Desenvolvimento da Arquitetura dos computadores 1.2.1 Geração zero (1642 1945) Máquinas puramente mecânicas, capazes de executar operações limitadas. Início: máquina de somar(e subtrair) de Pascal (Blaise Pascal) Máquina de Calcular de Babbage (Charles Babbage). 1.2.1 Primeira Geração tubos de vácuo (1945 1955) Utilização de válvulas. Máquinas grandes, pesadas, difíceis de se operar, necessitando ambiente adequado, pouco confiáveis e que consumiam muita energia. Projeto do ENIAC (Electronic Numerical Integrator And Computer). Projeto de Von Neumann: Base da maioria dos computadores digitais atuais (máquina de von Neumann). Utilização de lógica binária. 4
1.2.3 Segunda Geração Transistores (1955 1965) Utilização de transistores no lugar de válvulas Redução de tamanho, peso e custo energético. DEC, IBM. 1.2.4 Terceia Geração Circuitos Integrados (1965 1980) Substituição dos transistores por circuitos integrados Redução de espaço e consumo. Início da idéia das "famílias de máquinas" (Lançada pela IBM). Multiprogramação: Vários programas compartilhando a memória. Enquanto um aguardava alguma entrada/saída para completar, o outro podia ser executado. 5
1.2.5 Quarta Geração VLSI (Very Large Scale Integration, 1980...) Computador Pessoal IBM PC Aple e Aple II Desenvolvimento de máquinas RISC CPUs super escalares. 1.3 Zoológico dos Computadores 1.3.1 Forças Econômicas e Tecnológicas Lei de Moore: Cada nova geração de CIs de memória é introduzida a cada 3 anos. Cada nova geração possui quatro vezes mais memória. O número de transistores dobra a cada 18 meses. Avanços na tecnologia > Melhores produtos e menores preços > novas aplicações > novos mercados e novas empresas > competição > demanda para melhores tecnologias >... Primeira lei de Nathan para Software: "Software é um gás. Ele se expanda para preencher o container que o armazena". 6
1.3.2 Espectro do Computador 1.4 Exemplos de Famílias de Computadores 1.4.1 Introdução ao Pentium II Intel Corporation: Inicialmente fabricante de CIs de memória. 7
4004: CPU de 4 bits 8008: CPU de oito bits, limite de 16K de memória (devido ao número de pinos do encapsulamento). 8080: CPU de oito bits, 64K 8086: CPU de 16 bits, 1MB de memória, barramento de dados de 16 bits, não totalmente compatível com o 8080. 8088: CPU de 16 bits,1mb de memória, barramento de dados de 8 bits. 80286: CPU de 16 bits, 16MB de memória. 80386: CPU de 32 bits. 80486: CPU de 32 bits com uma unidade de ponto flutuante e memória cache. Pentium: 32 bits, duas pipelines. Pentium Pró: dois níveis de cache, estrutura superescalar Pentium II: Pentium pró+mmx Celeron: Versão mais barata, de menor performance do Pentium II. Xeon: Versão especial do Pentium II, utilizada principalmente em servidores. Grande cache, barramento mais rápido e melhor suporte a vários processadores. 8
1.4.2 Introdução ao UltraSPARC II Utilização do UNIX (década de 70) nas universidades: PCs não rodam UNIX. SUN 1: utilizava CPU da motorola, 68020. Início do projeto de CPU própria, em 1987, baseada no RISC II, chamada SPARC (Scalable Processos ARChitecture): SPARC: 32 bits, 36MHz, apenas 3 formatos de instrução e apenas 55 instruções. SPARC versão 9: 64 bits, 64 linhas de endereço e registradores de 64 bits. UltraSPARC I: Dedicada a trabalhar com imagem. Conjunto de instruções chamado VIS (Visual Instruction Set). UltraSPARC II: Diferença no clock e acréscimo de algumas novas características. 1.4.3 Introdução ao picojava II Desenvolvimento do JAVA, inspirada no C++, para aplicações via internet. Sendo uma linguagem de programação, é possível escrever compiladores para compilarem o arquivo fonte para qualquer tipo de arquitetura de computador, mas ficando dependente da arquitetura escolhida. Para possibilitar a execução e diferentes máquinas a Sun definiu uma máquina virtual chamada JVM (Java Virtual Machine), composta d uma memória de palavras de 32 bits e 226 instruções que a máquina pode executar. Desenvolvimento de um compilador para traduzir Java pra JVM, tornando os programas portáveis resultando no desenvolvimento de um interpretador (escrito em C) de JVM para executar os programas binários em Java. Ou, então, utilização de um compilador, JIT(Just in Time). Desenvolvimento de CIs JVM. CPUs que executam diretamente programas em JVM. PicoJava I e PicoJava II: Projeto de CI licenciado pela Sun. 9