O que é Arquitetura de
Computadores ?
Forças
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
Paulo André Castro
CE-703 / ITA
Cenário Constante em Computação
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
CE-703 / ITA
Problemas e Limites
Por que melhor desempenho?
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.
Paulo André Castro
CE-703 / ITA
Alternativas
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
Paulo André Castro
CE-703 / ITA
Softwares cada vez mais complexos
Sistemas gráficos com qualidade de imagem cada vez
maior
Novas aplicações
Desejo por melhor desempenho
Paulo André Castro
Paulo André Castro
Alternativas para obtenção de computadores mais
poderosos:
1.
2.
3.
4.
CE-703 / ITA
Avanços na tecnologia eletrônico-digital;
Aperfeiçoamento da arquitetura de computadores;
Utilização de vários processadores num único
computador;
Interligação de computadores entre si (redes de
computadores).
Paulo André Castro
CE-703 / ITA
1
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.
Paulo André Castro
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
Situando Arquitetura de
Conjunto de Instruções
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.
Paulo André Castro
CE-703 / ITA
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
Paulo André Castro
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
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)
Paulo André Castro
CE-703 / ITA
2
ENIAC (Electronic Numerical Integrator
and Calculator)
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!)
Paulo André Castro
CE-703 / ITA
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
CE-703 / ITA
Os primeiros
Microprocessadores
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.
Paulo André Castro
CE-703 / ITA
Os processadores x86
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.
Paulo André Castro
CE-703 / ITA
Evolução da Unidades
Funcionais
Evolução
Paulo André Castro
Paulo André Castro
CE-703 / ITA
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.
Paulo André Castro
CE-703 / ITA
3
Modelo de
Memória do
8086
Registradores no 8086
Paulo André Castro
CE-703 / ITA
Paulo André Castro
Mais Processadores x86
CE-703 / ITA
Registradores do
Pentium e de seu
ancestral o 8086
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
Paulo André Castro
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
Os cinco componentes clássicos
de um Computador
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
Paulo André Castro
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
4
Exemplo de
Arquitetura de
um Computador
Atual
Organização Simples
Paulo André Castro
CE-703 / ITA
O Processador em Funcionamento:
Executando Instruções
Em linhas gerais, a execução de uma instrução
pode ser dividida nas seguintes fases:
1.
2.
3.
4.
5.
Recuperação do código da operação
Decodificação do código da operação
Recuperação dos operandos
Execução propriamente dita
Armazenamento dos resultados
CE-703 / ITA
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.
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!
Paulo André Castro
Paulo André Castro
CE-703 / ITA
Processadores de Pilha: instruções e operandos ficam
armazenados em uma estrutura de dados do tipo Pilha na
memória.
Paulo André Castro
CE-703 / ITA
Processador com Acumulador:
Um Caso Simples
Processadores com Acumulador
Exemplo de Funcionamento de um Processador com
Acumulador
Comparação simples versus Processador com
Registradores de Propósito Geral
Paulo André Castro
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
5
Exemplo de programa
em Processador com Acumulador
Microprograma
da CPU 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 )
(H − I ) * (F + G)
Qual o código assembly correspondente?
Paulo André Castro
CE-703 / ITA
Acumulador x Registradores de
Propósitos Gerais
X=
Paulo André Castro
CE-703 / ITA
Pergunta...
Considerando a seguinte divisão de fases:
1.
2.
3.
4.
5.
Recuperação do código da operação
Decodificação do código da operação
Recuperação dos operandos
Execução propriamente dita
Armazenamento dos resultados
Há algum problema intrínseco de desempenho na
arquitetura com acumulador? Qual?
Paulo André Castro
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
Evolução dos desempenhos dos
processadores
Novos processadores
As tarefas básicas ocorrem em todos os processadores:
1.
2.
3.
4.
5.
Recuperação do código da operação
Decodificação do código da operação
Recuperação dos operandos
Execução propriamente dita
Armazenamento dos resultados
Como isto é feito e/ou organizado muda (muito)
principalmente por:
DESEMPENHO
Paulo André Castro
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
6
Como medir desempenho?
Medidas de 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 ?
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
Quanto menor melhor
Paulo André Castro
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
Modelo Simples
Produtor-Consumidor
Perguntas ?
Aumentar o throughput sempre melhora o tempo de
resposta?
Diminuir o tempo de resposta sempre melhora o
throughput?
• 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)
Paulo André Castro
CE-703 / ITA
Modelo Simples
Produtor-Consumidor
CE-703 / ITA
Aumentando o Throughput
• Throughput (“Taxa de Finalização”): Número de tarefas concluídas por
unidade de tempo
•Para maximizar:
• Em geral, throughput pode ser incrementado
•Colocando mais hardware (reduzindo latência relacionada a carga)
•A fila nunca deveria estar vazia
• Tempo de resposta é muito mais difícil de reduzir
•O servidor nunca deveria estar ocioso(idle)
Paulo André Castro
Paulo André Castro
•É preciso otimizar a arquitetura e/ou tecnologia de implementação
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
7
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
Paulo André Castro
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
Medindo o aumento de
desempenho
Definindo Desempenho
Considerando tempo de execução, temos:
Desempenho(x)= 1/TempoExecução(X)
Aumento de desempenho ocorrido, devido a uma melhoria E.
Logo, dizer que X é n vezes mais rápido que Y, significa:
ou,
Desempenho ( x )
=n
Desempenho ( y )
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.
Tempo _ Execução(Y )
=n
Tempo _ Execução( X )
Paulo André Castro
O que deve ser priorizado para possível melhoria?
Caso comum e a Lei de Amdahl
CE-703 / ITA
Paulo André Castro
CE-703 / ITA
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
desempenho S para uma fração do tempo F. Qual o ganho
de desempenho?
8
Download

6s/página - Divisão de Ciência da Computação