Escolar Documentos
Profissional Documentos
Cultura Documentos
Tpicos
Organizao do processador Organizao dos registradores Ciclo da instruo Pipeline de instrues Estudo de caso: x86 Referncias:
Stallings. Arquitetura e organizao de computadores. 8 ed. Cap. 12. Hennessy, Patterson. Arquitetura de computadores uma abordagem quantitativa. 4 ed. Apndice A.
Contextualizao
Um processador inclui registradores visveis ao programador e registradores de controle/estado. Registradores visveis ao programador podem ser de uso geral ou especfico (ex. armazenamento de nmeros reais, ndices, ponteiros etc). Podem ser referenciados explcita ou implicitamente em instrues => depende do formato da instruo e do opcode. Registradores de controle e estado controlam a operao do computador.
Ex: PC (program counter), PSW (program status word) Habilitar interrupes, indicar modo de operao (protegido ou usurio), etc.
Organizao do processador
Requisitos exigidos:
Buscar instruo, interpretar a instruo, obter os dados, processador os dados e gravar os dados.
Processador precisa de memria interna para armazenamento de dados de controle (ex. prxima instruo a ser executada). Estrutura
Organizao do processador
Registradores dentro do processador correspondem ao nvel mais alto na hierarquia de memria. Desempenham dois papis
Registradores visveis ao usurio Possibilitam que o programador minimize as referncias memria principal, pela otimizao no uso de registradores. Registradores de controle e estado
Usado pelas UC para controlar o funcionamento do processador e pelo sistema operacional para controlar a execuo de programas.
Importante destacar que essa distino nem sempre clara em todas as arquiteturas!!
Podem conter um operando para qualquer opcode do conjunto de instrues => uso ortogonal. Podem haver restries
Podem ser usados apenas para guardar dados No podem ser empregados para calcular o endereo de um operando.
Podem ser de uso geral ou usados para um modo de endereamento em particular. Exemplos:
Ponteiros de segmento Guarda o endereo base dos segmentos. Registradores de ndice Usados para indexar endereos e podem ser autoindexados. Ponteiros de pilha Aponta para o topo da pilha, se este modo de endereamento for visvel ao usurio.
Questes de projeto
Bits definidos pelo hardware do processador como resultado de algumas operaes. So coletados e armazenados em um ou mais registradores. Alguns processadores no usam cdigos condicionais
Situaes nas quais existe salvamento e restaurao de contexto feitas pelo processador e situaes nas quais o usurio responsvel por isso (atravs de instrues especficas).
So visveis s instrues de mquina que executam no modo de controle ou de sistema operacional. Quatro registradores principais
Armazena endereo da prxima instruo a ser executada. Armazena a instruo em execuo num determinado momento. Armazena endereos de memria Armazena dados a serem escritos ou que foram lidos da memria
Armazena cdigos condicionais Sinal: bit de sinal da ltima operao aritmtica Zero: marcado quando o resultado 0. Carry: usado em operao aritmticas de mltiplos bits. Marcado se uma operao resulta em transportar (adio) ou emprestar (subtrao) um bit de ordem maior. Igual: marcado se uma operao lgica resulta em igualdade. Overflow: usado para indicar sobrecarga aritmtica. Habilitar/desabilitar interrupo Supervisor: indica se o processador est executando em modo supervisor ou modo usurio.
Sistema operacional pode ser responsvel pela manuteno de algumas informaes de controle.
Negociao entre custo X velocidade. Quanto da informao de controle deve estar em memria e quanto deve estar nos registradores.
Registradores de 32 bits divididos em 8 registradores de dados e 9 registradores de endereos. Dados com 8, 16 ou 32 bits Endereos com 32 bits Um registrador de estado (16 bits) Um contador de programa (32 bits) Sem registradores de uso especfico.
Cada registrador de uso especfico. 4 registradores de dados (16 bits cada) AX, BX, CX, DX 4 registradores indexadores (16 bits cada) SP, BP, SI, DI Registradores podem ser usados implicitamente, dependendo da operao. Ex: MUL sempre usa o acumulador, registradores indexadores contm offset. 4 registradores de segmento (16 bits cada)
Processador de 32 bits projetado como uma extenso do 8086 (compatibilidade). Micro-arquitetura Netburst Registradores de 16 bits (do 8086) so mantidos embutidos em registradores de 32 bits EAX, EBX, ECX, EDX,
Interessante olhar: - Core Duo X Dual Core (arquiteturas Core/Penryn) - Intel Core i3, i5 e i7 (arquiteturas Lynnfield e Nehalem)
Ciclo da instruo
Estgios
Buscar: l a prxima instruo da memria para o processador Executar: interpreta opcode e efetua a operao indicada. Interromper: salva o estado do processo atual e atende a interrupo, se habilitada. Ciclo indireto: estgio adicional, quando endereamento indireto usado => acessos adicionais memria so necessrios
Fluxo de dados
Sequncia exata de eventos durante o ciclo de instruo depende do modelo de processador. Ciclo de leitura
1. PC tem endereo da instruo a ser lida 2. MAR = endereo da instruo 3. Endereo copiado para barramento de endereos 4. UC requisita leitura 5. barramento de dados recebe o dado lido (prxima instruo) 6. MBR = prxima instruo 7. IR = MBR 8. UC incrementa PC
1 8
2 3 6 4
Fluxo de dados
Fluxo de dados
Ciclo de interrupo
Contedo atual do PC deve ser salvo para que o processador possa resumir a atividade normal depois da interrupo.
1. MBR = PC (dados do PC so gravados em memria) 2. MAR = posio de memria para controle de interrupo - carregada no MAR pela UC. 3. PC = endereo da rotina de interrupo
3 1
Pipeline de instrues
ex.: circuitos mais rpidos Uso de vrios registradores em vez de um acumulador Memria cache
Pipeline de instrues
Pipeline de instrues
Estratgia do pipeline
Pipeline = analogia com linha de montagem em uma planta industrial, na qual um produto passa por vrios estgios de produo. A linha de montagem pode processar vrios produtos simultaneamente, cada um num estgio diferente. Uma instruo tem vrios estgios.
Pipeline de instrues
Processamento da instruo tem dois estgios: ler instruo e executar instruo. Momentos durante a execuo de uma instruo em que a memria no est sendo usada. Esse tempo usado para a obteno da prxima instruo paralelamente execuo da instruo atual. Pipeline de dois estgios independentes
Primeiro estgio busca a instruo e a coloca num buffer Quando o segundo estgio estiver liberado, a instruo passada para ele. Com isso, o primeiro estgio pode buscar a prxima instruo. Chamada busca antecipada (prefetch)
Pipeline de instrues
Se os dois estgios (leitura e execuo) forem de durao igual, o ciclo de instruo reduzido pela metade. Na prtica, o ciclo de instruo consome mais tempo do que o ciclo de leitura. Alm disso, instrues de desvio obrigam o estgio de busca a esperar pelo endereo da prxima instruo.
Uma abordagem buscar mesmo assim a prxima instruo aps a instruo de desvio. Se o desvio no for tomado, a busca antecipada ter valido a pena.
Pipeline de instrues
Para obter mais velocidade, o pipeline deve empregar mais estgios => decomposio do processamento da instruo:
Ler a prxima instruo esperada num buffer. Determinar o opcode e os especificadores dos operandos. Calcular o endereo efetivo para cada operando => modos de end. Obter cada operando na memria. Efetuar a operao e armazenar o resultado, se houver. Armazenar o resultado na memria
Pipeline de instrues
Pipeline de 6 estgios = reduo do tempo de execuo de 9 instrues de 54 para 14 unidades de tempo
Pipeline de instrues
O diagrama supe que cada instruo passa por todos os estgios. O diagrama assume que os estgios podem ser executados em paralelo. Tambm supe que no existem conflitos de memria (ex. FI, FO e WO). Assume-se que todos os estgios tero a mesma durao. Dificuldade relativa instruo de desvio condicional.
Instruo de desvio Pipeline deve ser limpo para carga da prxima instruo aps desvio (instruo 15)
Pipeline de instrues
Pipeline cheio
Pipeline esvaziado
Pipeline de instrues
Teoricamente, quanto maior o nmero de estgios no pipeline, maior ser a taxa de execuo! Na prtica:
Esforo extra em cada estgio do pipeline para transferir dados de um buffer a outro.
A lgica necessria para lidar com dependncias de memria e de registradores e para otimizar o pipeline aumenta imensamente com o nmero de estgios.
Lgica de controle dos estgios pode se tornar mais complexa do que a lgica de cada estgio.
Desempenho do pipeline
Tempo de ciclo (T): tempo gasto para que uma instruo avance um estgio no pipeline T=max[Ti]+d=Tm+d1 i k Onde
Ti = tempo de demora de resposta no estgio i. Tm = tempo de demora mximo do estgio (tempo do maior estgio) k = nmero de estgios do pipeline d = tempo de resposta de um ciclo necessrio para avanar sinais e
dados de um estgio para o prximo.
>>d.
Desempenho do pipeline
Tempo total para que um pipeline com K estgios processe N instrues dado por
Tk,n=[k+(n1)]
K ciclos para a primeira instruo e n-1 ciclos para as prximas Ex: instruo 9 completada no tempo 14
14=[6+(91)]
Desempenho do pipeline
Processador sem pipeline, tempo de ciclo igual a kT. O fator de acelerao do pipeline X execuo sem pipeline:
Sk=nk/k+(n1)
Desempenho do pipeline
Em teoria, quanto maior o nmero de estgios do pipeline, maior o potencial para acelerao. Na prtica, tem-se:
Hazards de pipeline
Um hazard de pipeline (ou bolha de pipeline) ocorre quando o pipeline, ou parte dele, precisa parar porque as condies no permitem a execuo contnua. Trs tipos:
Hazards de pipeline
Hazard de recursos
Instrues que esto no pipeline precisam do mesmo recurso. Instrues devem ser executadas em srie.
Memria com uma porta => leitura e escrita de operando no podem ser feitas em paralelo com a buca da prxima instruo. Caso (b) => pipeline fica ocioso no ciclo 3 devido leitura do opeando de I1 na memria
Hazards de pipeline
Hazard de dados
Conflito no acesso de uma posio de operando => duas instrues que devem ser executadas em sequncia mas que acessam o mesmo operando na memria ou registrador. Ex: ADD EAX, EBX SUB ECX, EAX // EAX = EAX + EBX // ECX = ECX EAX
Atualizao EAX
Hazards de pipeline
Uma instruo modifica um registrador ou posio de memria e outra instruo l os dados desse registrador ou posio de memria ANTES da atualizao ter sido completada.
Uma instruo l um registrador ou posio de memria e outra instruo subsequente altera essa posio ou registrador. O hazard ocorre quando a operao de escrita completada antes da operao de leitura.
Duas instrues escrevem na mesma posio de memria ou registrador, na ordem inversa a esperada.
Hazards de pipeline
Ocorre quando o pipeline toma a deciso errada ao prever um desvio e assim traz instrues para o pipeline que precisam ser descartadas logo em seguida. Algumas abordagens para tratar isso:
Mltiplos fluxos Busca antecipada do alvo do desvio Buffer de lao de repetio Previso de desvio Desvio atrasado
Hazards de pipeline
Um pipeline simples tem penalidades na execuo de uma instruo de desvio, pois precisa buscar duas instrues e pode fazer a escolha errada. A estratgia replicar os estgios iniciais do pipeline, permitindo que as duas instrues possveis do desvio sejam buscadas, cada uma num fluxo independente. Os problemas envolvidos com essa estratgia so:
Atrasos no acesso memria e aos registradores com mltiplos fluxos. Instrues de desvio adicionais podem entrar no pipeline antes que a deciso de desvio original seja resolvida, resultando em fluxos adicionais.
Hazards de pipeline
Quando um desvio condicional reconhecido, o alvo (instruo a ser executada) do desvio lido antecipadamente, alm da instruo que segue o desvio. Esse alvo salvo at que a instruo de desvio seja executada. Se o desvio for tomado, o alvo j foi obtido. Ex.: IBM 360/91.
Hazards de pipeline
Memria pequena e rpida mantida pelo estgio de busca de instruo do pipeline, a qual armazena as N instrues lidas mais recentemente na sequncia. Se o desvio est para ser tomado, o hardware primeiro procura se o alvo do desvio j est no buffer. Se estiver, a prxima instruo obtida do buffer. Benefcios:
Buffer armazena as N prximas instrues, sem necessidade de acesso memria. Se o alvo do desvio estiver apenas algumas posies frente da instruo de desvio, o alvo j estar no buffer. Caso tpico de instrues IF-THEN-ELSE. Estratgia adequada para tratar laos/iteraes, especialmente se todas as instrues do lao puderem ser armazenadas no buffer. Custo de acesso somente na primeira vez.
Hazards de pipeline
Semelhante cache de instrues, porm com menor tamanho e menor custo. Ex.: mquinas CDC (Star-100, 6600, 7600), CRAY-1, Motorola 68010 => instruo DBcc (decremento e desvio de condio).
Hazards de pipeline
Previso nunca tomada Previso sempre tomada Previso por opcode Chave tomada / no tomada Tabela de histrico de desvio
Estratgias estticas no dependem do histrico de execuo Estratgias dinmicas dependem do histrico de execuo
Hazards de pipeline
A abordagem da previso nunca tomada a mais popular. Estudos apontam que o desvio tomado em mais de 50% dos casos, o que justificaria adotar a estratgia de previso sempre tomada => na prtica, deve-se considerar o mecanismo de paginao, que vai resultar num grande nmero de erros de pgina, levando a perda de desempenho no pipeline. A abordagem baseada em opcodes considera que o desvio sempre tomado para alguns opcodes e nunca para outros. Estudos apontam sucesso em mais de 75% dos casos.
Hazards de pipeline
As estratgias dinmicas tentam melhorar a preciso da previso do desvio armazenando um histrico de instrues de desvios condicionais de um programa. Bits associados a cada instruo (chave) que auxiliam o processador a decidir na prxima vez que a instruo for executada. Chaves so mantidas em armazenamento temporrio de alta velocidade => cache ou tabela de instrues de desvio. Questo importante: quantos bits usar para a chave (histrico)?
Bit nico: instruo resultou em desvio ou no Dois bits: guardam o resultado das duas ltimas instncias da execuo da instruo.
Duas previses erradas fazem com que o algoritmo troque a deciso da previso de desvio.
Hazards de pipeline
Tabela de histrico de desvios = pequena cache associada ao estgio de busca de instruo do pipeline.
Hazards de pipeline
Estratgia baseada na reorganizao das instrues (alterao da sequncia) dentro de um programa, para que as instrues ocorram depois do que realmente desejado. Algumas tcnicas:
Pipeline de 5 estgios
Pode haver atrasos para valores usados para calcular endereos de memria.
Valor carregado da memria num registrador e registrador usado como base na prxima instruo => gera atraso de um ciclo no pipeline.
1. CPU acessa cache 2. registrador = valor obtido
3. Em paralelo, a busca especulativa para o alvo do desvio executada durante o estgio EX da I2.
64
Indica a condio do processador e ajuda a controlar suas operaes. 6 cdigos condicionais: carry, paridade, auxiliar, zero, sinal e overflow.
CR0 = flags de controle do sistema que indicam estados que se aplicam ao processador em vez da execuo de uma determinada tarefa. PE = habilitao de proteo MP = monitor do coprocessador EM = emulao TS = troca de tarefa ET = tipo de extenso NE = erro numrico WP = proteo de escrita AM = mscara de alinhamento NW = not write through CD = desabilitar cache PG = paginao
CR2 e CR3 = so vlidos quando a pagino est habilitada. CR2 guarda endereo linear da ltima pgina acessada antes da interrupo de falha de pgina. CR3 guarda os bits mais significativos do endereo base do diretrio de pginas. PCD = usado para habilitar/desabilitar a cache em nvel de pgina PWT = usado para controlar a escrita na cache externa.
CR4 = nove bits adicionais de controle VME = modo de extenso virtual do 8086 PVI = interrupes virtuais no modo protegido TSD = desabilitar time stamp DE = extenses de depurao PSE = extenses de tamanho de pgina PAE = extenses do endereo fsico MCE = habilitar verificao de mquina PGE = habilitar proteo global PCE = habilitar contador de desempenho
Instrues MMX usam 3 bits para enderear 8 registradores MMX. Processador mapeia registradores de ponto flutuante para suporte a MMX
64 bits de baixa ordem de cada registrador so usados. So endereados diretamente (em vez de pilha como em operaes de ponto flutuante) => setar palavra de marcao (FP).
Incluir instruo EMMS no final do bloco de instrues MMX para que operaes de ponto flutuante funcionem.
Interrupes e excees
Eventos que fazem o processador suspender a execuo da instruo corrente, salvando o seu contexto e desviando para a rotina predefinida para atender o evento (interrupo ou exceo). Uma interrupo gerada por um sinal de hardware e pode ocorrer vrias vezes durante a execuo do programa.
Interrupes mascarveis: recebidas no pino INTR do processador, se o flag IF (habilitar interrupes) estiver definido. Interrupes no-mascarveis: recebidas no pino NMI, independente de habilitao.
Uma exceo gerada a partir do software e provocada pela execuo de uma instruo.
Excees detectadas pelo processador: durante a execuo de uma instruo. Excees programadas: instrues que geram uma exceo (ex. INTO, INT3, INT, BOUND)
256 entradas com 32 bits, as quais contm o endereo (segmento e offset) de cada rotina de tratamento.
Classe 1: paradas (traps) na instruo anterior (vetor nmero 1) Classe 2: interrupes externas (2, 32 - 255) Classe 3: falhas na busca da prxima instruo (3, 14) Classe 4: falhas na decodificao da prxima instruo (6, 7) Classe 5: falhas na execuo de uma instruo (0, 4, 5, 8, 10 14, 16, 17)
Tratamento da interrupo