O que é Arquitetura de Computadores - comp.ita.brpauloac/ce703/ce703_cap2_p1.pdf · sobre a...
Transcript of O que é Arquitetura de Computadores - comp.ita.brpauloac/ce703/ce703_cap2_p1.pdf · sobre a...
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
CE-703 / ITAPaulo André Castro
Forças
CE-703 / ITAPaulo André Castro
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
CE-703 / ITAPaulo André Castro
� 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.)
CE-703 / ITAPaulo André Castro
� 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
CE-703 / ITAPaulo André Castro
� 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;
CE-703 / ITAPaulo André Castro
computador;4. Interligação de computadores entre si (redes de
computadores).
Situando Organização de
Máquina
CE-703 / ITAPaulo André Castro
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
CE-703 / ITAPaulo André Castro
� 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.
CE-703 / ITAPaulo André Castro
Situando Arquitetura de
Conjunto de Instruções
CE-703 / ITAPaulo André Castro
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)
CE-703 / ITAPaulo André Castro
� 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
CE-703 / ITAPaulo André Castro
� 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
CE-703 / ITAPaulo André Castro
� Z-1(alemão), Mark I (americano), ENIAC (americano, 500 multiplicações por segundo!)
ENIAC (Electronic Numerical Integrator
and Calculator)
CE-703 / ITAPaulo André Castro
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,
CE-703 / ITAPaulo André Castro
(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.
CE-703 / ITAPaulo André Castro
� 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
CE-703 / ITAPaulo André Castro
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
CE-703 / ITAPaulo André Castro
� 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
CE-703 / ITAPaulo André Castro
Modelo de
Memória do
8086
CE-703 / ITAPaulo André Castro
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;
CE-703 / ITAPaulo André Castro
� 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
CE-703 / ITAPaulo André Castro
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
CE-703 / ITAPaulo André Castro
� 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
CE-703 / ITAPaulo André Castro
Organização Simples
CE-703 / ITAPaulo André Castro
Exemplo de
Arquitetura de
um Computador
Atual
CE-703 / ITAPaulo André Castro
O Processador em Funcionamento:
Executando Instruções
� Em linhas gerais, a execução de uma instruçãopode 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
CE-703 / ITAPaulo André Castro
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.
CE-703 / ITAPaulo André Castro
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
CE-703 / ITAPaulo André Castro
� Comparação simples versus Processador com Registradores de Propósito Geral
Processador com Acumulador:
Um Caso Simples
CE-703 / ITAPaulo André Castro
Microprograma
da CPU com
Acumulador
CE-703 / ITAPaulo André Castro
Exemplo de programa
em Processador com Acumulador
� Pseudo-código:� T1=F+G
� T1=(H-I)*T1
� T2=E*F
X=A+B
CE-703 / ITAPaulo André Castro
� X=A+B
� X=((C-D)*X-T2)/T1
� Equivalente a:
� Qual o código assembly correspondente?)(*)(
)*()(*)(
GFIH
FEBADCX
+−−+−=
Acumulador x Registradores de
Propósitos Gerais
CE-703 / ITAPaulo André Castro
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
CE-703 / ITAPaulo André Castro
� 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)
CE-703 / ITAPaulo André Castro
� Como isto é feito e/ou organizado muda (muito) principalmente por:� DESEMPENHO
Evolução dos desempenhos dos
processadores
CE-703 / ITAPaulo André Castro
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 ?
CE-703 / ITAPaulo André Castro
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
CE-703 / ITAPaulo André Castro
� 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?
CE-703 / ITAPaulo André Castro
Modelo Simples
Produtor-Consumidor
CE-703 / ITAPaulo André Castro
• 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
CE-703 / ITAPaulo André Castro
• 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
CE-703 / ITAPaulo André Castro
• 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
CE-703 / ITAPaulo André Castro
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
CE-703 / ITAPaulo André Castro
� 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:
CE-703 / ITAPaulo André Castro
ou,
nyDesempenho
xDesempenho =)(
)(
nXExecuçãoTempo
YExecuçãoTempo =)(_
)(_
Medindo o aumento de
desempenho
Aumento de desempenho ocorrido, devido a uma melhoria E.
CE-703 / ITAPaulo André Castro
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?