O que é Arquitetura de Computadores?

Documentos relacionados
O que é Arquitetura de Computadores?

Arquiteturas para Alto Desempenho CES-25

SSC304 Introdução à Programação Para Engenharias

Máquinas Multiníveis Aula 04. Prof. Jadir Eduardo Souza Lucas Universidade Federal do Espírito Santo Departamento de Informática

ENIAC Primeiro computador de Propósito Geral. William Stallings Computer Organization and Architecture 6 th Edition (2003)

Aula 02. Histórico. slide 1

O Funcionamento do Processador

MICROPROCESSADORES. Aula 10

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

CES-10 Introdução à Computação. Prof. Paulo André IEC - ITA

Ábaco. Ipad HISTÓRIA DA INFORMÁTICA E SUA EVOLUÇÃO. Tecnologias de Informação e Comunicação

14/3/2016. Prof. Evandro L. L. Rodrigues

ORGANIZAÇÃO DE COMPUTADORES

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

EEL Microprocessadores. EEL Microprocessadores. EEL Microprocessadores. EEL Microprocessadores. EEL Microprocessadores

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

MONTAGEM E MANUTENÇÃO DE COMPUTADORES

Organização de Computadores I

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

2. A influência do tamanho da palavra

Nome: N.º Ano: Turma: Turno: Responde às seguintes questões 1. Quais as vantagens da utilização de transístores face às válvulas de vácuo?

Aula 1: Introdução à Organização de Computadores

Unidade I. Organização de Computadores. Prof. Renato Lellis

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização

Informática básica. Professor: Francisco Ary

2. A influência do tamanho da palavra

INFORMÁTICA E CONTABILIDADE. Prof. Me. Fábio Assunção CMP 1128 Parte 01

William A. Zacariotto

Informática Aplicada. Introdução

EVOLUÇÃO DOS COMPUTADORES

HISTÓRIA DO COMPUTADOR

Campus Avançado Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini

Hardware. Computador. Computador. Computador. Evolução dos Computadores. Laboratório de Utilização de Microcomputadores (DCA0302) Aula 01

Introdução a Arquitetura e Organização de Computadores. Stallings: Cap.1 e 2, Monteiro: Cap. 1, Tanenbaum: Cap. 1. Prof. Alexandre Beletti Ferreira

Fundamentos de Programação 1

Universidade de Brasília Histórico e Introdução

Histórico e Introdução

Micr c o r co c ntr t o r lad a or o es

Informática básica. Professor: Francisco Ary

Arquitetura e Organização de Computadores

Breve histórico da Evolução dos Computadores (leitura informativa )

Processadores

ARQUITETURA DE COMPUTADORES. Adão de Melo Neto

Unidade I ORGANIZAÇÃO DE. Prof. Antônio Palmeira

Arquiteturas RISC e CISC. Adão de Melo Neto

Montagem e Manutenção Processadores

Microprocessadores II - ELE 1084

Conceitos Básicos de Informática

AULA1 Introdução a Microprocessadores gerais. Disciplina: Aplicações Avançadas de Microprocessadores (AAM)

Aula Breve História dos Computadores - Informatiquês - O Computador - Software vs. Hardware. Introdução à Engenharia da Computação

Prof. Sandro Wambier

Disciplina: Arquitetura de Computadores

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

Aula 10 Processadores de Propósito Geral

Arquitetura de Microprocessadores

Geração de computadores Arquitetura e Organização de Computadores Curso de Análise e Desenvolvimento de Sistemas

EVOLUÇÃO DOS COMPUTADORES

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

28 de fevereiro de 2016

Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações. Medidas de desempenho


CPU. Funções: Componentes: Processamento; Controle. UC (Unidade de Controle); Registradores; ALU s, FPU s etc. Arquitetura de Computadores 3

Arquitetura de Um Computador

Organização de Computadores I

3. Unidade Central de Processamento

Processador. Processador

Aula 03 Organização de computadores PROCESSADORES INTRODUÇÃO. 18/04/2016 Prof. Dsc. Jean Galdino 1

História e Evolução dos Computadores

O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho

O Funcionamento do Processador

EVOLUÇÃO DOS COMPUTADORES. Vávulas e Transistores

INTRODUÇÃO. Introdução a Informática. Vinícius Pádua

Ricardo Castro 10ºC nº30

SEL-0415 Introdução à Organização de Computadores Aula 2 Prof. Dr. Marcelo Andrade da Costa Vieira

Arquitetura de Computadores

Fundamentos de Arquiteturas de Computadores

Prof. Leonardo Augusto Casillo

Organização e Arquitetura de Computadores I

Computadores e Programação (DCC/UFRJ)

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS

Introdução histórica. José Delgado. Arquitetura de Computadores Introdução histórica 1

INSTITUTO FEDERAL CATARINENSE Campus Ibirama

ULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade.

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

Fundamentos de Arquiteturas de Computadores

1.Introdução capaz de executar uma sequência de instruções definidas pelo homem gerar um determinado resultado

GFM015 Introdução à Computação. Plano de Curso e Introdução. Ilmério Reis da Silva UFU/FACOM

Arquitetura de Computadores Aula 11 - Multiprocessamento

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

CONCEITOS BÁSICOS DE INFORMÁTICA. Disciplina: Informática Professor: Gustavo Sabry

Organização de Sistemas Computacionais Processadores: Organização da CPU

Grupo I Resumo Histórico

A Evolução dos Computadores: do ENIAC ao TianHe2

Arquitetura e Organização de Computadores

Manutenção de Computadores e Redes

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

Montagem e manutenção de computadores


Transcrição:

O que é Arquitetura de Computadores? Coordenação de um conjunto de níveis de abstração de um computador sobre um grande conjunto de forças de mudança Arquitetura de Computadores = Arquitetura de Conjuntos de Instruções + Organização de Máquina

Forças

Cenário Constante em Computação Desejo por melhor desempenho Desejo por sistemas menores e mais leves Desejo por maior capacidade de memória e armazenamento Desejo por menor consumo de energia (menor dissipação de calor) e conseqüentemente baterias menores e mais leves, fundamental em sistemas embutidos

Por que melhor desempenho? Softwares cada vez mais complexos Sistemas gráficos com qualidade de imagem cada vez maior Novas aplicações Reconhecimento de voz, Processamento de imagem, (Localização, identificação,etc.) Realidade Virtual, Servidores com enorme número de usuários (Internet), etc. Aplicações clássicas Previsão de Tempo, Simulação complexa, Solução de Problemas Matemáticos, etc.

Problemas e Limites Há limites físicos para a tecnologia eletrônico-digital: Custos de construção Velocidade da luz; Capacidade de integração dos circuitos; Distância entre componentes de um circuito; Superaquecimento e custo de refrigeração

Alternativas Alternativas para obtenção de computadores mais poderosos: 1. Avanços na tecnologia eletrônico-digital; 2. Aperfeiçoamento da arquitetura de computadores; 3. Utilização de vários processadores num único computador; 4. Interligação de computadores entre si (redes de computadores).

Situando Organização de Máquina

Aperfeiçoamentos na Arquitetura de Computadores Arquitetura de Conjunto de Instrução Pipeline para diminuir a ociosidade da CPU no ciclo de instrução. Emissão de várias instruções para execução, em processamento superescalar. Melhor organização dos circuitos aritméticos para se obter muitos resultados intermediários simultâneos.

Aperfeiçoamentos na Arquitetura de Computadores Organização de Máquinas Memória cache para melhorar as interações entre memória e CPU. Memória entrelaçada para aumentar a largura de banda do sistema de memória Utilização de processadores de entrada e saída em paralelo com a CPU, em multiprogramação e time sharing.

Situando Arquitetura de Conjunto de Instruções

Por que estudar Arquitetura de Computadores? Para entender melhor a estrutura e o funcionamento dos computadores Para entender as soluções de compromisso(tradeoffs) entre vários componentes Para entender melhor o impacto das tendências da tecnologia e forças de mercado sobre a evolução dos computadores Para aprender a utilizar técnicas de otimização de desempenho em sistemas computacionais (software ou hardware) Para estar apto a fazer projeto de sistemas embutidos e desenvolvimento de software embutido de modo mais eficiente, bem como melhores decisões de compra de hardware

Computação: Um pouco de História... Pré-história Máquinas de Calcular Ábacos Chineses (há mais de 2000 anos) Calculadoras Mecânicas (Pascal e Leibniz) ~1650 História O computador mecânico de Charles Babbage A primeira programadora: Ada (~1840)

Mais um pouco de História O computador Eletrônico: Von Neumman (década de 40) Instruções na Memória (ao contrário de cartões perfurados) usado até hoje! Primeiros Computadores (por volta de 1945...) Z-1(alemão), Mark I (americano), ENIAC (americano, 500 multiplicações por segundo!)

ENIAC (Electronic Numerical Integrator and Calculator)

Evolução De 1946 para cá, a tecnologia eletrônico-digital evoluiu muito e continua a evoluir: Relés eletro-mecânicos, válvulas eletrônicas, transistores, circuitos impressos, circuitos integrados (MSI, LSI, VLSI, ULSI), fibra ótica, supercondutividade, raio laser, troca de silício por arsenato de gálio, etc.. O ENIAC tinha 24 metros de extensão, algumas toneladas e capacidade de operar 500 multiplicações/segundo Um ipad 2 tem capacidade de 168.9MFLOPs e um iphone 33.3 MFLOPs

Evolução da Unidades Funcionais Os primeiros micros só tinham hardware para somar e subtrair números inteiros. Multiplicação e divisão de inteiros e operações com números reais eram realizadas por software. Hoje essas últimas e outras funções tais como as trigonométricas, exponenciais e logarítmicas já são implementadas por hardware. Além disso esse hardware vem sendo aperfeiçoado.

Os primeiros Microprocessadores O Intel 4004 foi o primeiro chip a conter todos os elementos de uma CPU. Fabricado em 1971, trazia ao mundo os microcomputadores. Somava números de 4 bits e a multiplicação era obtida por software, através de repetidas adições. O Intel 8008 foi o primeiro microprocessador de 8 bits; introduzido no mercado em 1972; duas vezes mais complexo que o 4004. Ambos processadores, o 4004 e o 8008, foram projetados para aplicações especificas.

Os processadores x86 Intel 8088 e 8086 São os primeiros microprocessadores de 16 bits da Intel; lançados no mercado em 1978. Para aritmética de ponto-flutuante, existe o coprocessador 8087, opcional. Diferenças Básicas Barramento externo: do 8088, 8 bits; do 8086, 16 bits. Buffer de instruções: do 8088, 4 bytes, do 8086, 6 bytes.

Registradores no 8086

Modelo de Memória do 8086

Mais Processadores x86 Intel 80486: a partir de 1989 Uso de sofisticada tecnologia de memória cache e de pipeline de instruções; Coprocessador de ponto-flutuante passou a ser incorporado ao processador principal. Pentium: a partir de 1992 Computador superescalar; Cache de instruções separada de cache de dados; Uso de tecnologia agressiva para reduzir os efeitos negativos das instruções de desvio condicional no desempenho superescalar; Core 2: a partir de 2006 Computadores com múltiplos núcleos: Duo, quad, extreme

Registradores do Pentium e de seu ancestral o 8086

A arquitetura x86 O x86 não é tão complexo assim ele só não faz muito sentido. (Mike Johnson, Líder de projeto do 80x86 na AMD, relatório de microprocessador (1994)) Por isso, durante a maior parte do curso estaremos utilizando processadores RISC como exemplos e como veremos a maior parte do sistemas embutidos utilizam processadores RISC

Os cinco componentes clássicos de um Computador

Organização Simples

Exemplo de Arquitetura de um Computador Atual

O Processador em Funcionamento: Executando Instruções Em linhas gerais, a execução de uma instrução pode ser dividida nas seguintes fases: 1. Recuperação do código da operação 2. Decodificação do código da operação 3. Recuperação dos operandos 4. Execução propriamente dita 5. Armazenamento dos resultados As fases que envolvem acesso à memória podem ser dez vezes mais lentas que as demais ou até mais lentas Um processsador é um Software implementado em Hardware!

Tipos de Processadores segundo posição dos operandos e resultado Processadores com Acumulador: Operações envolvem um registrador especial e [em alguns casos] a memória. Processadores com Registradores de Propósito Geral: Os operandos podem estar em vários registradores ou mesmo na memória. Processadores de Pilha: instruções e operandos ficam armazenados em uma estrutura de dados do tipo Pilha na memória.

Processadores com Acumulador Exemplo de Funcionamento de um Processador com Acumulador Comparação simples versus Processador com Registradores de Propósito Geral

Processador com Acumulador: Um Caso Simples

Microprograma da CPU com Acumulador

Exemplo de programa em Processador com Acumulador Pseudo-código: T1=F+G T1=(H-I)*T1 T2=E*F X=A+B X=((C-D)*X-T2)/T1 Equivalente a: ( C D)*( A + B) ( E * F) X = ( H I)*( F + G) Qual o código assembly correspondente?

Acumulador x Registradores de Propósitos Gerais

Pergunta... Considerando a seguinte divisão de fases: 1. Recuperação do código da operação 2. Decodificação do código da operação 3. Recuperação dos operandos 4. Execução propriamente dita 5. Armazenamento dos resultados Há algum problema intrínseco de desempenho na arquitetura com acumulador? Qual?

Novos processadores As tarefas básicas ocorrem em todos os processadores: 1. Recuperação do código da operação 2. Decodificação do código da operação 3. Recuperação dos operandos 4. Execução propriamente dita 5. Armazenamento dos resultados Como isto é feito e/ou organizado muda (muito) principalmente por: DESEMPENHO

Evolução dos desempenhos dos processadores

Como medir desempenho? Como se mede o impacto de um melhoria no desempenho de um computador? Clock? FLOPS? Desempenho (performance) deve ser medida através de um conjunto de tarefas executadas por unidade de tempo? Quanto maior melhor Desempenho deve ser medida pelo tempo gasto para realizar uma determinada tarefa? Quanto menor melhor

Medidas de Desempenho Throughput: Número de tarefas concluídas por unidade de tempo. Por exemplo, instruções/segundo. MFLOPs, Mbps. Tempo de resposta (latência): Tempo consumido para executar uma determinada tarefa ou conjunto de tarefas

Perguntas? Aumentar o throughput sempre melhora o tempo de resposta? Diminuir o tempo de resposta sempre melhora o throughput?

Modelo Simples Produtor-Consumidor Latência (Tempo de Resposta): tempo médio para a conclusão de uma tarefa. Para minimizar: A fila deveria estar vazia O servidor deveria estar ocioso(idle)

Modelo Simples Produtor-Consumidor Throughput ( Taxa de Finalização ): Número de tarefas concluídas por unidade de tempo Para maximizar: A fila nunca deveria estar vazia O servidor nunca deveria estar ocioso(idle)

Aumentando o Throughput Em geral, throughput pode ser incrementado Colocando mais hardware (reduzindo latência relacionada a carga) Tempo de resposta é muito mais difícil de reduzir É preciso otimizar a arquitetura e/ou tecnologia de implementação

Aumento de Throughput X Tempo de Resposta

Desempenho Estejamos preocupados com throughput ou latência, o mais importante é o tempo total de conclusão dos programas de interesse do usuário. O computador mais rápido é aquele que executa suas tarefas em menor tempo O fundamental é saber especificar quais as tarefas relevantes para aquele computador

Definindo Desempenho Considerando tempo de execução, temos: Desempenho(x)= 1/TempoExecução(X) Logo, dizer que X é n vezes mais rápido que Y, significa: ou, Desempenho ( x) Desempenho ( y) = n Tempo _ Execução( Y ) Tempo _ Execução( X ) = n

Medindo o aumento de desempenho Aumento de desempenho ocorrido, devido a uma melhoria E. Existem várias técnicas, componentes e meios de comunicação que podem ser alvo de aperfeiçoamentos. Por outro lado, existem também vários tipos de instruções quais devem ser melhoradas preferencialmente. O que deve ser priorizado para possível melhoria? Caso comum e a Lei de Amdahl

Lei de Amdahl O ganho de desempenho possível de um dado melhoramento é limitado pela fração de tempo que a característica melhorada é usada. Suponha que um aperfeiçoamento ofereça um ganho de Suponha que um aperfeiçoamento ofereça um ganho de desempenho S para uma fração do tempo F. Qual o ganho de desempenho?