introdução a arquitetura e organização de computadores professor: andré luis meneses silva...
TRANSCRIPT
Introdução a Arquitetura e Organização de Computadores
Professor: André Luis Meneses SilvaE-mail/msn: [email protected]
Página: www.dcomp.ufs.br/index.php/docentes:Andre
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 Exemplo
Blue Gene Primo do Deep Blue Possui 131.000
processadores 360 trilhões de operações
por segundo. 31.634 vezes mais rápido
que o Deep Blue.
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.
Sistemas Computacionais
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
Arquitetura Organização
Tempo de vida relativamente curto.
Muda com a evolução da tecnologia.
Pode mudar sem afetar a arquitetura
Transparente ao programadorPode sobreviver por muitos anos.
Isso garante compatibilidade de software.
Arquitetura x Organização
Arquitetura Organização
Tempo de vida relativamente curto.
Muda com a evolução da tecnologia.
Pode mudar sem afetar a arquitetura
Transparente ao programadorPode sobreviver por muitos anos.
Isso garante compatibilidade de software.
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 21 elementos diferentes. Com 4 dígitos, podemos formar 24 elementos diferentes. Com 32 dígitos, podemos formar 232
elementos diferentes.
Com 64 dígitos, podemos formar 264 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.
A partir de agora chamaremos de L0, o conjunto de instruções relativos a linguagem de máquina e L1, L2, ... Ln o conjunto de instruções subseqüentes.
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 uma das instruções do programa durante a
execução. 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.
Linguagens, níveis e máquinas virtuais
Podemos imaginar, para cada nova abstração, a existência de um computador hipotético, ou de uma máquina virtual, cuja linguagem de máquina seja do nível mais alto que acabamos de criar.
Então para uma linguagem L1, temos uma máquina virtual M1. Se esta máquina M1 pudesse ser construída, precisaríamos da máquina M0?
Níveis de abstração em uma máquina convencional
Grande parte dos computadores modernos é formado por dois ou mais níveis.
Os níveis mais comuns, que podem ser encontrado nos computadores são os seguintes.: Nível da lógica digital
Nível mais baixo, cujos objetos de interesse são as portas lógicas.
Nível da Microarquitetura Nível cujo objetos de interesse são os registradores,
unidade lógica aritmética e o caminho de dados.
Níveis de abstração em uma máquina convencional
Nível da Arquitetura do Conjunto de Instruções (Nível ISA). Formado pelo conjunto de instruções aceitas por um
determinado hardware. Nível do Sistema Operacional
Nível mais abstrato, formado por um interpretador e possui instruções em comum com o nível anterior.
Nível da Linguagem do Montador Corresponde à linguagem de montagem (assembly).
Nível das linguagens de alto nível. Corresponde ao nível utilizado pelos programadores de
aplicação.
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.
Wilhelm Von Leibniz Calculadora mecânica que efetuava as
quatro operações aritméticas
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.
Konrad Zuse máquina de calcular usando relés – 1930
John Atanasoff Aritmética binária e memória com capacitores
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) COLOSSUS - 1943
1º computador eletrônico digital do mundo 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) Invenção do transistor - 1948 PDP-1 - 1961 - Digital Equipament Corp.
Vídeo de 512x512 pixels IBM 7090
Computador mais rápido da época Início do domínio da IBM PDP-8
Barramento único Surgimento dos minicomputadores
Estágios de Evolução da Arquitetura de Computadores.
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.
IBM System/360 Mesma arquitetura em máquinas com diferentes
poder de processamento. Surgimento do conceito de multiprogramação Utilizava a microprogramação para emular outros
computadores da IBM. DEC lança o PDP-11.
Estágios de Evolução da Arquitetura de Computadores.
IBM System/360
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. WatsonChairman of IBM, 1943
Leitura Recomendada
Tanembaum – Capítulo 1 Stallings – Capítulo 1 e 2 Henessy e Patterson – Capítulo 1