Escolar Documentos
Profissional Documentos
Cultura Documentos
Princípios básicos:
o Registrador de instrução:
armazena a instrução
executada no momento.
Figura 2: esquema
detalhado da CPU.
• Barramento de
endereços: usado para
selecionar
origem/destino de
dados.
• Barramento de
controle: sincroniza as
atividades do sistema,
conduz status e
informação de controle
de/para processador.
3
INSTRUÇÕES
• Uma instrução é um conjunto de bits devidamente codificados que indica ao
computador que sequência de microoperações ele deve realizar.
• Geralmente consiste em um código de operação (identifica o que faz a instrução) e
endereços (de onde vem os operandos/onde vão os resultados).
Figura 4 – Formato de
instrução simples
NÚMERO DE ENDEREÇOS
Ao longo dos anos as arquiteturas de computadores foram projetadas com diferentes
conjuntos de instruções:
Arquitetura de 4 endereços
Arquitetura de 3 endereços
OP E1 E2 E3
• Necessita de um registrador específico para localizar o endereço da próxima instrução
➔ program counter (PC).
• Vantagens: reduz o tamanho da instrução, ocupa menos espaço na memória.
• Desvantagens: necessidade de instruções explícitas de desvio; não se pode mais
manipular dados e fazer desvio de fluxo em uma única instrução.
Entretanto, ainda usam muita memória e, na maioria das vezes, um dos operandos fonte e
o destino indicam o mesmo endereço. A modificação da indicação dos operandos deu
origem à arquitetura de 2 endereços.
Arquitetura de 2 endereços
OP E1 E2
• E1, além de operando fonte, também é o destino.
• Vantagens: reduz ainda mais o tamanho da instrução.
• Desvantagens: como o resultado é armazenado em um operando fonte, o dado anterior
deste operando é perdido; necessário criar instruções de movimentação de dados que
permitem copiar operandos de uma posição para outra.
Com a criação de registradores especiais, pode-se reduzir ainda mais o número de
endereços, criando-se então as arquiteturas de 1 endereço.
Arquitetura de 1 endereço
OP E1
• E1 é um operando fonte, o outro operando é implicitamente o acumulador (AC).
• AC é tanto operando fonte quando destino.
• Vantagens: utiliza um registrador local, portanto economiza os acessos à memória,
resultados intermediários não precisam ser lidos/escritos na memória a cada utilização;
registrador específico (mais rápido) otimizado para a função.
5
MODOS DE ENDEREÇAMENTO
Uma referência a um operando em uma instrução pode conter tanto o valor do operando
quanto o endereço do operando. Grande parte das instruções contem operandos, portanto
é necessário algum modo de especificar onde eles estão e como os bits de um campo de
endereço são interpretados para achar o operando.
Imediato
Direto
• O campo de endereço contém o endereço real/efetivo (EA) do operando. Comum nas
primeiras gerações.
• Exemplo: EA = A ➔ ADD A
Procura na posição A da memória pelo operando e adiciona o conteúdo da posição A da
memória no acumulador.
• Vantagens: apenas um acesso à memória (busca do operando).
• Desvantagens: espaço de endereçamento limitado pelo campo.
Indireto
• O campo de endereço aponta para uma posição de memória que, por sua vez, contém
o endereço do operando.
• Surgiu como solução para a limitação da faixa de endereços que podem ser
especificados no endereçamento direto.
• Exemplo: EA = (A) ➔ADD (A)
Busca em A, encontra o endereço do operando (A) e busca em (A) pelo operando.
Adiciona o conteúdo do endereço efetivo ao acumulador.
• Vantagens: mais espaço de endereçamento (2n).
• Desvantagens: dois acessos à memória: 1) obter o endereço do operando. 2) obter o
valor.
1) Busca da instrução
3) Execução
4) Acesso à memória
5) Escrita em registrador
COMPONENTES DE UM PROCESSADOR
• Caminho de dados
o Responsável pela manipulação dos dados (armazenamento, aritmética).
o Composto de blocos funcionais.
o Contém todos os registradores e unidades funcionais.
• Unidade de controle
o Responsável por informar ao caminho de dados o que necessita ser feito (como
executar determinada instrução).
o Composta por sinais de controle.
Como projetar um processador?
1) Analisar o conjunto de instruções.
2) Selecionar os componentes do caminho de dados e estabelecer a metodologia de
temporização.
3) Construir o caminho de dados.
4) Analisar a implementação de cada instrução para determinar os sinais de controle que
realizam a transferência dos dados.
5) Construir a unidade de controle.
10
Seleção de componentes
• Program counter (PC) • Memória
• Banco de registradores
• ULA
• Multiplexador
Figura 8 –
Exemplo de
caminho de
dados
• Temporização
Clock determina quando os sinais de controle terão efeito.
Implementações possíveis:
o Monociclo ➔ todos os estágios executados em um ciclo de clock.
o Multiciclo ➔ cada estágio executado em um ciclo de clock.
o Pipeline ➔ multiciclo com execução sobreposta das instruções.
MICROARQUITETURA MONOCICLO
• Ciclo de clock deve ser longo o suficiente para permitir a execução de todos os estágios
do ciclo de instrução sem interrupções.
Figura 10 – Monociclo
Ineficiente
• Todas as instruções são tão lentas quanto a mais lenta.
• Um recurso precisa ser replicado se for usado mais de uma vez na mesma instrução.
• Difícil implementar instruções complexas.
• Sempre necessário otimizar o pior caso, não adianta implementar técnicas para reduzir
a execução dos casos comuns.
DESEMPENHO
• Fluxo/vazão/throughput ➔ número de tarefas executadas por vez. Trabalho total executado em
determinado tempo.
o Interessante quando se tem vários programas executando concorrentemente e a medida é o
tempo de execução.
• Tempo de execução/tempo de resposta ➔ tempo necessário para executar um programa.
o Interessante quando a medida está relacionada a uma única aplicação.
• Tempo decorrido ➔ tempo total. Não é uma boa métrica.
• Tempo de CPU ➔ tempo em que o processador está computando.
o Não conta tempo de E/S, execução de outros programas.
Desempenho relativo
Se máquina X é n vezes mais rápida:
12
Clock
• Período ou tempo de ciclo ➔ medida em segundos
• Frequência ➔ ciclos por segundo (Hertz). F = 1/p. 1 Hz = 1 ciclo por segundo.
Observações
O número de ciclos não é necessariamente igual ao número de instruções, exceto quando
estamos falando de arquitetura monociclo.
Instruções diferentes levam tempos diferentes para serem executadas ➔ multiplicação
demora mais que adição, acesso à memória demora mais que acesso à registradores...
Mudar o tempo de ciclo geralmente muda o número de ciclos requeridos por várias
instruções.
13
Dependências do desempenho
Lei de Amdahl
• Aumentar um aspecto do computador irá aumentar desempenho total na mesma
proporção da melhora desse aspecto? ➔ NÃO.
• O ganho de desempenho possível de um dado melhoramento é limitado pela fração de
tempo que a característica melhorada é usada.
• Por exemplo, se o programa precisa de 20 horas usando um único núcleo de
processamento, e a parte específica de um programa que demora uma hora para
executar não pode ser paralelizado, enquanto as 19 horas restantes (95%) do tempo da
execução pode ser paralelizado, independente de quantos processadores são dedicados
a execução paralela deste programa, o tempo de execução mínima não pode ser menor
que aquela crítica uma hora. Por isso o aumento de velocidade é limitado em no máximo
20x.
• Importante investir recursos proporcionais onde o tempo é gasto!
14
Métrica MIPS
• MIPS ➔ milhões de instruções por segundo.
• Alternativa à medida de desempenho apenas por tempo. Não se deve limitar a
avaliação de desempenho em apenas um aspecto (tempo, clock, CPI...)
• Computadores mais rápidos tem MIPS mais altas.
• Restrições:
o Não se pode comparar computadores com ISAs diferentes. ➔ não leva em
consideração as características de implementação das instruções.
o Varia de acordo com o programa executado no mesmo computador.
o Se um novo programa executa mais instruções, mas cada instrução é mais
rápida, MIPS pode variar independente do desempenho.
nº de instruções
MIPS =
Tempo de execução x 106
15
RISC x CISC
RISC
• Reduced instruction set computer.
• Conjunto simples e reduzido de instruções.
• Hardware mais simples, menor
custo, maior clock.
• Grande número de registradores de
propósito geral ou otimização do
uso de registradores pelo
compilador.
• Operações registrador – registrador
➔ diminui acesso à memória.
• Poucos modos de endereçamento.
• Compilador tem mais espaço para otimização.
• Otimizada para pipeline ➔ operações por instrução menores e mais previsível, CPI
próxima a 1.
• Geralmente utilizado em sistemas embarcados.
CISC
• Complex instruction set computer
• Conjunto de instruções mais
complexo.
• Para acomodar instruções mais
complexas a UC precisa ser mais
complexa ➔ maior custo
• Muitos modos de endereçamento.
• Mais próxima de linguagens de alto
nível.
• Desejo de simplificar os compiladores e de melhorar o desempenho. Entretanto, a
complexidade das instruções torna difícil a otimização do código pelo compilador.
• Um programa CISC apresentar um número menor de instruções em código simbólico de
máquina, porém o número de bits de memória que ele ocupa pode não ser menor.
• Geralmente utilizado em PCs, MACs, mainframes.
Observações gerais
• Arquiteturas RISC e CISC são incompatíveis ➔ um programa desenvolvido para um tipo
de máquina não roda na outra.
• Atualmente nenhum processador segue FIELMENTE uma das duas. Há incorporação de
características de cada.
Arquiteturas híbridas
• Executam operações CISC, mas internamente funcionam como RISC ➔ quebram
instruções e processam novamente.
• Principal CISC atual (x86) traduz em hardware o ISA CISC para ISA RISC.
o Vantagens ➔ simplifica o núcleo do processador; instruções traduzidas poder ser
armazenadas em memória, aumentando o desempenho; maior abstração e
flexibilidade em programar para ISA CISC.
17
LEI DE MOORE
O número de transistores em um chip dobrará, pelo mesmo custo, a cada 18 meses. Vem
guiando o desenvolvimento de hardware por décadas.
Em algum momento será atingido o limite físico do material utilizado (silício) ➔ busca de
novos materiais, computação quântica...
MICROARQUITETURA MULTICICLO
• Objetivo ➔ uma instrução demorar apenas o tempo necessário para ser executada.
• Solução ➔ dividir instrução em passos, um por ciclo de clock. Cada passo da instrução
agora é executado em um ciclo diferente. Instruções mais rápidas precisam menos ciclos.
• Agora um recurso pode ser usado mais que uma vez, registradores armazenam os
valores entre ciclos. Uma unidade funcional pode ser usada mais de uma vez por
instrução, desde que em diferentes ciclos.
• Sinais de controle não são mais determinados somente pela instrução. Cada passo da
instrução gera seu próprio sinal de controle ➔ máquina de estados finitos.
• Limitações do multiciclo
o Alguns recursos de hardware ficam ociosos durante diferentes fases da instrução.
o Exemplo ➔ Busca não está operando enquanto a instrução está sendo decodificada.
A maioria do caminho de dados não está operando enquanto está acontecendo
acesso à memória.
18
PIPELINE
• Múltiplas instruções são sobrepostas
temporalmente na execução.
• Se uma instrução não estiver usando
alguns recursos na sua fase de
processamento, pode-se usar os
recursos disponíveis para processar
outras instruções ➔ resolve o
problema de ociosidade do multiciclo.
• Exemplo ➔ enquanto uma instrução é
decodificada já se pode buscar a
próxima.
• Pipeline aumenta o desempenho ao
aumentar a vazão/throughput de
instruções e não ao diminuir o tempo
de execução de uma instrução
individual.
Speedup
• Métrica para relacionar o aumento de desempenho quando uma tarefa é executada.
• Definido pela relação da latência total e vazão. No exemplo da figura ➔ Speedup =
8h/3.5h = 2.3x.
• Tempos não balanceados por estágio reduzem o desempenho do pipeline.
Como implementar o pipeline em um projeto?
• Dividir a execução da instrução em estágios distintos, de preferência com o mesmo
tempo de execução.
• Garantir que haja recursos de hardware para processar uma instrução em cada estágio.
• Processar uma instrução diferente em cada estágio.
19
PROCESSADORES SUPERESCALARES
• Várias instruções possam ser iniciadas
e executadas simultaneamente. No
pipeline simples apenas estágios
diferentes podiam ser executados em
um mesmo momento, agora várias
instruções executam paralelamente no
mesmo ciclo.
• Processador 2-way: duas instruções
buscadas e executadas por ciclo ➔
duplicação de recursos (ULA,
multiplexadores), portas e
registradores extras, barramentos.
• Instruções são despachadas para
execução somente se não possuem
dependências (estrutura, dados, controle).
Janela de instruções
• Isola os estágios de busca e decodificação das instruções ➔ modelo de despacho fora
de ordem.
• Centralizada: armazena todas as instruções já decodificadas e ainda não despachadas
para execução.
• Distribuída pelas unidades funcionais: só armazena as instruções destinadas à unidade
funcional associada a ela.
o Algoritmo de Tomasulo ➔ despacho sequencial de instruções fora de ordem. Realiza
a difusão dos resultados produzidos pelas unidades funcionais através de um
barramento global.
NÍVEIS DE PARALELISMO
Instrução
• Granulosidade fina.
• Paralelismo entre as instruções ➔ pipeline, superpipeline, superescalar.
Tarefas
• Granulosidade média.
• Paralelismo entre threads (divisões de um processo principal).
• Arquiteturas SMT (simultaneous multithreading).
Máquinas e processos
• Granulosidade grossa.
• Paralelismo entre processos.
• Computação paralela.
• Multiprocessadores e multicomputadores.
21
ARQUITETURAS PARALELAS
SISD
• Single instruction stream, Single data
stream.
• Computadores convencionais (seriais).
Exemplo: computadores von Neumann.
• Instruções são buscadas serialmente,
porém os estágios podem ser sobrepostos (pipeline).
• Pode-se saber o que está ocorrendo exatamente a cada instante de tempo e reproduzir
o processo passo-a-passo mais tarde.
MISD
• Multiple instruction stream, Single
data stream.
• Vários processadores onde cada um
recebe instruções distintas, mas
operam sobre o mesmo conjunto de
dados. Cada processador tem seu
controle e unidade de
processamento, mas dividem a
mesma memória. Difícil de ser
encontrada.
• Poderia ser utilizada para aplicar diferentes algoritmos em um mesmo dado (ex.:
múltiplos algoritmos de criptografia em uma mensagem).
SIMD
• Single instruction stream, Multiple
data stream
• Processadores matriciais, paralelos
e associativos. Exemplos:
processadores gráficos, vetoriais.
• Uma unidade de controle envia um
fluxo de instruções para vários
processadores. Os processadores
recebem a mesma instrução ao
mesmo tempo e operam sobre diferentes fluxos de dados.
MIMD
• Multiple instruction stream, Multiple
data stream.
• Vários processadores, cada um
controlado por uma unidade de
controle. Recebe instruções
diferentes e operam sobre fluxo de
dados diferentes. Ex.:
multiprocessadores e
multicomputadores.
22