Abstrações e Tecnologias Computacionais Professor: André Luis Meneses Silva E-mail/msn: andreluis.ms@gmail.com Página: orgearq20101.wordpress.com
Agenda Introdução Sistemas Computacionais Arquitetura X Organização Linguagens, níveis e máquinas virtuais Níveis de Abstração em uma máquina convencional Estágios de Evolução da Arquitetura de Computadores.
Introdução Sistemas Computacionais: Crescimento acelerado. Empregados em vários setores. Alguns mitos que se tornaram realidade: Caixas Eletrônicos Computação embarcada em automóveis. Computadores laptop. Projeto do Genoma Humano World Wide Web.
Sistemas Computacionais Classificação. Desktop Servidores Computadores embutidos.
Desktop Enfatizam o bom desempenho a um único usuário, por um baixo custo e normalmente são usados para executar software independente. Representa um dos maiores mercados para os computadores e a evolução de muitas tecnologias de computação é motivada por essa classe.
Servidores Forma moderna do que antes eram os mainframes, minicomputadores e supercomputadores. Projetados para suportar grandes cargas de trabalho, em aplicações científicas ou em aplicações empresariais. São construídos a partir da mesma tecnologia básica dos computadores desktop, mas fornecem uma maior capacidade de expansão tanto no processamento quanto na e/s de dados.
Servidores Podem ser: Mini-servidores Menores que desktop e voltado para o armazenamento de dados Supercomputadores Constituído por centenas ou milhares de processadores, gigabytes ou terabytes de memória e de terabytes ou pentabytes de armazenamento. Voltados para resolução de cálculos científicas e de engenharia de alta capacidade, tais como previsão do tempo, exploração de petróleo, determinação da estrutura da proteína.
Servidores Supercomputadores Administração Nacional de Energia Nuclear. 1,02 quatrilhão de operações por segundo 6.984 processadores AMD Opteron Dual-Core. 80 terabytes de memória. 288 racks 557,41 metros quadrados. 226,796 kg.
Computadores Embarcados ou Embutidos Maior classe de computadores e abrangem a faixa mais ampla de aplicações e desempenho. São projetados para executar uma aplicação ou um conjunto de aplicações relacionadas como um único sistema. Normalmente possuem necessidades específicas que combinam um desempenho mínimo com limitações rígidas em relação a custo ou potência. Computadores embutidos, em geral, possuem menor tolerância a falhas, pois é comum seu emprego em sistemas de tempo real.
Arquitetura X Organização Arquitetura Refere-se aos atributos de um sistema que são visíveis para o programador, ou seja, que possuem impacto direto sobre a execução lógica de um programa. Exemplos: conjunto de instruções, número de bits usado para representar os tipos de dados, mecanismos de E/S, técnicas de endereçamento de memória. Organização Refere-se às unidades operacionais e suas interconexões que implementam as especificações da sua arquitetura. Exemplos: sinais de controle, interfaces entre o computador e os periféricos, tecnologia de memória utilizada.
Arquitetura X Organização Mais exemplos: Definir se um computador deve ou não ter uma instrução de multiplicação. Decisão de Arquitetura. Definir se uma instrução de multiplicação será implementada por uma unidade especial de multiplicação ou por um mecanismo que utiliza repetidamente sua unidade de soma. Decisão de Organização
Arquitetura X Organização Outras características: Organização Tempo de vida relativamente curto. Muda com a evolução da tecnologia. Pode mudar sem afetar a arquitetura Transparente ao programador Arquitetura Pode sobreviver por muitos anos. A família Intel X86 possui a mesma arquitetura básica A família IBM System/370 também. Isso garante compatibilidade de software. Pelo menos retro-compatibilidade Em microcomputadores a relação entre arquitetura e organização é mais estreita. Mudanças tecnológicas, em geral, também influenciam a arquitetura.
Linguagens, níveis e máquinas virtuais Aplicações convencionais podem consistir em centenas de milhares a milhões de linhas de código e se basear em bibliotecas de software que implementam funções complexas. No entanto, o hardware em um computador só pode executar instruções de baixo nível extremamente simples. A linguagem compreensível pelo hardware é denominada de linguagem de máquina.
Linguagens, níveis e máquinas virtuais Um sistema computacional opera através de sinais elétricos (ligado e desligado), representados, respectivamente, por 1 e 0. Este alfabeto é denominado sistema binário. Embora só possuam dois símbolos, estes não limitam o poder de expressividade da linguagem. Fazendo associação com o alfabeto. Com 1 dígito*, podemos formar 2 1 elementos diferentes. Com 4 dígitos, podemos formar 2 4 elementos diferentes. Com 32 dígitos, podemos formar 2 32 elementos diferentes. Com 64 dígitos, podemos formar 2 64 elementos diferentes. * dígito também é conhecido como bit.
Linguagens, níveis e máquinas virtuais Linguagem de máquina não é muito conveniente para nós humanos. Para resolver este problema, criamos um novo conjunto de instruções mais conveniente para os usuários do que as instruções de linguagem de máquina. Este novo conjunto de instruções pode ser visto como uma nova camada ou abstração do conjunto de instruções da camada anterior. Mas como passar de um nível para o outro?
Linguagens, níveis e máquinas virtuais Existem duas soluções diferentes para este problema: Compiladores Consiste em substituir cada uma das instruções da camada de nível mais alto por uma seqüência equivalente de instruções da camada de nível mais baixo. Gera um novo arquivo. Possui boa performance. Interpretadores Examina cada execução. uma das instruções do programa durante a Transforma cada instrução de alto nível em instruções de baixo nível. Em seguida, esta instrução é executada antes do exame da próxima instrução de alto nível. Não gera um novo arquivo Não possui uma boa performance.
Conseqüências desta evolução Microprogramação Sistemas Operacionais Maior produtividade e aumento da qualidade dos programas gerados. Crescimento da importância do software. Perda dos limites entre até onde vai o hardware e até onde vai o software Tudo que fazemos em hardware, pode ser feito em software e vice-versa?
Conseqüências desta evolução Soluções por Hardware, em geral possuem: Melhor performance. Menor consumo de energia. Alto custo. Baixo grau de flexibilidade. Soluções por software, em geral possuem: Pior performance. Maior consumo de energia. Baixo custo. Alto grau de flexibilidade. Decidir o que será implementado em hardware ou em software é um dos grandes problemas da computação atual.
Estágios de Evolução da Arquitetura de Computadores. Geração Mecânica (1642-1945) Blaise Pascal Calculadora mecânica Só efetuava somas e subtrações.
Estágios de Evolução da Arquitetura de Computadores. Charles Babbage Máquina Diferencial - Só somava e subtraia Realizava um único algoritmo. Método das diferenças finitas usando polinômios Saída era dada através da perfuração de pratos de cobre. Máquina Analítica (1834) Possuía memória, unidade de processamento, unidade de entrada e saída.
Estágios de Evolução da Arquitetura de Computadores. Ada Augusta Lovelace Primeira desenvolvedora de software da história Produziu software para a máquina analítica de Babbage Infelizmente a máquina não funcionou corretamente devido a limitações da época.
Estágios de Evolução da Arquitetura de Computadores. Howard Aiken descobriu os trabalhos de Babbage Mark I - 1944 6 segundos para executar uma instrução Marcou o fim da geração de computadores mecânicos
Estágios de Evolução da Arquitetura de Computadores. Mark-I
Estágios de Evolução da Arquitetura de Computadores. Geração das Válvulas (1945-1955) Mauchley e Eckert ENIAC - 1946 18mil válvulas, 1500 relés e 6mil chaves Marco da história do computador moderno Fundaram uma empresa (hoje, Unisys)
Estágios de Evolução da Arquitetura de Computadores. Eniac
Estágios de Evolução da Arquitetura de Computadores. John von Neumann Máquina de von Neumann - 1952 programas representados em forma binária na memória do computador (programa armazenado) uso da aritmética binária para representar números memória, unidade aritmética, unidade de controle, dispositivo de entrada e dispositivo de saída Registrador especial: Acumulador Maioria dos computadores atuais ainda é projetada segundo essas premissas
Estágios de Evolução da Arquitetura de Computadores.
Estágios de Evolução da Arquitetura de Computadores. Geração dos transistores (1955-1965) Seymour Cray CDC 6600-1964 processamento paralelo outros processadores ajudando a CPU principal surgimento dos supercomputadores
Estágios de Evolução da Arquitetura de Computadores. Circuitos Integrados (1965-1980) Surgimento do Circuito Integrado - 1958 Robert Noyce Co-fundador da Intel Gordon Moore Lei de Moore: O número de transistores em um chip dobra a cada 18 meses
Estágios de Evolução da Arquitetura de Computadores. Integração de Circuitos em Escala muito Alta (1980 -?) Circuitos integrados VLSI Milhões de transistores em um único chip Surgimento dos microcomputadores Apple e Apple II - Machintosh IBM PC Início da computação pessoal
Será? Acho que existe, no mundo, um mercado para talvez uns cinco computadores Thomas J. Watson Chairman of IBM, 1943
Leitura Recomendada Henessy e Patterson Capítulo 1 Recomendação de filmes: Piratas do Vale do Silício