Baixe o app para aproveitar ainda mais
Prévia do material em texto
PIPELINE, FAMÍLIA DE PROCESSADORES X86 E ARM Autor: Tayane Stephanie do Vale Universidade Federal do Acre-UFAC Centro de Ciências Exatas e Tecnológicas-CCET Bacharelado em Engenharia Elétrica 1. INTRODUÇÃO Neste trabalho abordaremos as principais funções da pipeline e as caracterı́sticas dos processadores X86 e ARM. Uma abor- dagem superficial, dando ênfase a seus principais funções. 2. PIPELINE Atualmente, a grande maioria dos sistemas de computação é fabricado em torno de processadores que buscam maior ve- locidade na realização de suas atividades. Um dos processos mais usados é o que conhecemos na indústria como linha de montagem (”pipeline”), no qual a UCP se divide em várias partes funcionais distintas (estágios), cada uma correspon- dendo a uma determinada atividade 2.1. Paralelismo a nı́vel de instrução Paralelismo a nı́vel de instrução É possı́vel obter maior de- sempenho computacional com: Tecnologias mais avançadas, tais como circuitos mais rápidos;Melhor organização da CPU, tais como o uso de múltiplos registradores e memória cache; • Pipeline de instruções:A ideia básica num pipeline de instruções é a de novas entradas serem aceitas, antes que as entradas aceitas previamente tenham terminado. Este conceito assume que uma instrução tem vários estágios. • Pipeline:Várias instruções são realizadas de forma si- multânea, embora em estágios diferentes. Por exemplo: 1. Lavanderia: Tempo Total = 4 x 90minutos = 6horas. 2. Pessoa L S D L S D L S D L S D 3. a x x x 4. b x x x 5. c x x x 6. d x x x Universidade Federal do Acre. 1. Exemplo otimizado: 2. Lavanderia Tempo Total = 30 + 4 x 40m +20m = 3 horas e meia • Pessoa L S D L S D L S D L S D • a x x x • b x x x • c x x x • d x x x A taxa de inserção de tarefas no pipeline é limitada pela tarefa mais lenta. Considere um pipeline com 6 estágios de mesma duração: • Busca de instrução (BI). • Decodificação de instrução (DI). • Cálculo de operandos (CO). • Busca de operandos (BO). • Execução de instrução (EI). • Escrita de operando (EO). Fig. 1. Ciclos de Instrução CONFLITOS DO PIPELINE:Eventos em que a instrução seguinte não pode ser executada. hazard de pipeline ocorre quando o pipeline, ou alguma parte dele, deve parar porque as condições não permitem a execução contı́nua. Tal parada do pipeline é também conhecida como bolha de pipeline. Existem três tipos de hazards: recursos, dados e controle. • ESTRUTURAL:O hardware não pode suportar a combinação de instruções que o pipeline deseja ex- ecutar no mesmo ciclo de clock. • DADOS:Um hazard de dados ocorre quando há um conflito no acesso de um local de operando. De um modo geral, podemos definir o hazard da seguinte forma: duas instruções em um programa estão para ser executadas na sequência e ambas acessam um determi- nado operando de memória ou registrador. Se as duas instruções são executadas em estrita sequência, não ocorre nenhum problema. Contudo, se as instruções são executadas em um pipeline, então é possı́vel que a atualização do valor do operando ocorra de tal forma que produza um resultado diferente do que seria com uma execução estritamente sequencial. Configura-se em: – Leitura após escrita ou dependência verdadeira: uma instrução modifica um registrador ou uma posição de memória e uma instrução subsequente lê os dados dessa posição de memória ou reg- istrador. O hazard ocorre quando a operação de leitura acontece antes de a escrita ter sido com- pletada. – Escrita após leitura ou antidependencia: uma instrução lê um registrador ou uma posição de memória e uma instrução subsequente escreve nessa posição. O hazard ocorre se a operação de escrita é completada antes da operação de leitura. – Escrita após escrita ou dependência de saı́da: duas instruções escrevem na mesma posição. O hazard ocorre se as operações de escrita acontecerem na sequência inversa da esperada. • CONTROLE: Um hazard de controle, também con- hecido como hazard de desvio, acontece quando o pipeline toma uma decisão errada ao prever um desvio e assim acaba trazendo instruções dentro do pipeline que precisam ser descartadas logo em seguida 2.2. Múltiplos fluxos: Consiste em duplicar os estágios iniciais do pipeline para per- mitir a busca de ambas as instruções, usando dois fluxos de instruções. Problemas: Uso de múltiplos pipelines introduz atrasos devidos à contenção de acesso a registradores e à memória. Pode ocorrer a entrada de instruções de desvio adicionais no pipeline, antes que seja tomada a decisão sobre o desvio orig- inal. 2.3. Busca antecipada da instrução-alvo do desvio Consiste em buscar antecipadamente a instrução-alvo do desvio e a instrução consecutiva ao desvio. No instante em que a instrução de desvio condicional é reconhecida. A instrução-alvo é armazenada em um registrador, até que a instrução de desvio seja executada. 2.4. Memória de laço Consiste em usar uma pequena memória de alta velocidade, mantida pelo estágio de busca de instrução, para guardar as n instruções buscadas mais recentemente, em seqüência. Van- tagens: A memória conterá certo número de instruções que estão à frente da instrução corrente. Se ocorrer um desvio para alguma posição adiante do endereço da instrução de desvio, essa posição já estará na memória de laço (útil em instruções do tipo IF-THEN-ELSE); Particularmente adequada para li- dar com laços de repetição ou iterações (se a memória for grande o suficiente para conter as instruções de uma iteração, estas terão que ser buscadas da memória apenas uma vez, para a primeira iteração). 3. FAMÍLIA DE PROCESSADORES X86 Visando agilidade na produção para inserção rápida no mer- cado, pela primeira vez a IBM ”terceirizou” a produção dos componentes do seu novo computador para outras compan- hias. O processador escolhido foi o 8088 desenvolvido pela Intel e o sistema operacional foi o DOS (Disk Operating System), desenvolvido por uma companhia de 32 pessoas chamada Microsoft Graças a escolha da IBM pelo Intel 8088 para compor o IBM PC, e ao sucesso deste computador, o 8088 passou a ser mundialmente aceito. Muitas companhias (Compaq, Columbia Data Products,...) passaram a copiar a arquitetura do IBM PC e oferecer seus próprios sistemas baseados no 8088. Aı́ começou o mercado de PCs. Com este sucesso a Intel passou a focar a maioria de seus investimentos em microprocessadores para PCs e não mais em chips de memória. Intel 8086, 80186, 80286, 80386, 80486 e Pen- tium Um microprocessador é um circuito integrado digital que realiza operações matemáticas e lógicas para cumprir determinada tarefa de acordo com uma série de instruções ordenadas por um programa externo e codificadas por micro- circuitos internos. Fig. 2. 3.1. Organização dos registradores Uso geral: existem oito registradores de 32 bits de uso. Eles podem ser usados para todos os tipos de instruções x86 e também podem guardar operandos para cálculo de endereços. Registradores de dados: AX, BX, CX e DX são todos registradores de 16 bits utilizados nas operações aritméticas e lógicas podem ser usados como registradores de 16 ou 8 bits AX (acumulador): utilizado como acumulador em operações aritméticas e lógicas; em instruções de E/S, ajuste decimal, conversão, etc BX (base): usado como registrador de BASE para referen- ciar posições de memória. BX armazena o endereço BASE de uma tabela ou vetor de dados, a partir do qual outras posições são obtidas adicionando-se um valor de deslocamento (off- set). CX (contador): utilizado em operações iterativas e repet- itivas para contar bits, bytes ou palavras, podendo ser incre- mentado ou decrementado. CL funciona como um contador de 8 bits. DX (dados): utilizado em operações de multiplicação para armazenar parte de um produto de 32 bits, ou em operaçõesde divisão, para armazenar o resto. Utilizado em operações de E/S para especificar o endereço de uma porta de E/S. Registradores de segmento: CS, DS, SS e ES • Segmento: é um bloco de memória de 64 KBytes, endereçável. • segmento de código: CS • segmento de dados: • segmento de pilha: SS (stack segment). • segmento extra: ES Registrador apontador de instrução: • IP (Instruction Point) é automaticamente incrementado em função do número de bytes da instrução execu- tada. Utilizado em conjunto com CS para localizar a posição, dentro do segmento de código corrente, da próxima instrução a ser executada. • Registradores apontador de pilha e de ı́ndice: – Armazenam valores de deslocamento de endereços (offset), a fim de acessar regiões da memória muito utilizadas: ∗ Pilha. ∗ Blocos de dados. ∗ Arrays e strings. Podem ser utilizados em operações aritméticas e lógicas, possibili- tando que os valores de deslocamento sejam resultados de computações anteriores. – SP (stack pointer - apontador de pilha) é utilizado em conjunto com SS, para acessar a área de pilha na memória; aponta para o topo da pilha. – SI (source index - ı́ndice fonte) usado como reg- istrador ı́ndice em alguns modos de endereçamento indireto, em conjunto com DS. – DI (destination index - ı́ndice destino) similar ao SI, atuando em conjunto com ES. – Atenção: SI e DI facilitam a movimentação de da- dos sequenciados entre posições fonte (indicado por SI) e posições destino (indicado por DI). Registrador de sinalizadores (FLAGS) • Indica o estado do microprocessador durante a execução de cada instrução. • conjunto de bits individuais, cada qual indicando al- guma propriedade. • subdividem-se em: FLAGS de estado (status) e FLAGS de controle. CF - Flag de Carry • CF = 1 ⇒ Após instruções de soma que geram ”vai um” após instruções de subtração que não geram ”empréstimo” (”empresta um”). • CF = 0⇒ caso contrário. PF - Flag de paridade • PF = 1⇒ caso o byte inferior do resultado de alguma operação aritmética ou lógica apresentar um número par de ”1’s”. • PF = 0⇒ caso contrário (número impar). AF - Flag de Carry Auxiliar: utilizado em instruções com números BCD. • AF = 1⇒ caso exista o ”vai um” do bit 3 para o bit 4 de uma adição caso não exista ”empréstimo” do bit 4 para o bit 3 numa subtração; • AF = 0⇒ caso contrário. ZF - Flag de Zero • ZF = 1 ⇒ caso o resultado da última operação ar- itmética ou lógica seja igual a zero. • ZF = 0⇒ caso contrário SF - Flag de Sinal: utilizado para indicar se o número resultado é positivo ou negativo em termos da aritmética em Complemento de 2 (se não ocorrer erro de transbordamento - overflow). • SF = 1⇒ número negativo; • SF = 0⇒ número positivo. OF - Flag de Overflow (erro de transbordamento). • OF = 1⇒ qualquer operação que produza overflow. • OF = 0⇒ caso contrário. Flags de controle TF - Flag de Trap (armadilha) • TF = 1⇒ após a execução da próxima instrução, ocor- rerá uma interrupção; a própria interrupção faz TF = 0. • TF = 0⇒ caso contrário IF - Flag de Interrupção • IF = 1⇒ habilita a ocorrência de interrupções. • IF = 0⇒ inibe interrupções tipo INT externas DF - Flag de Direção: usado para indicar a direção em que as operações com strings são realizadas. • DF = 1 ⇒ decremento do endereço de memória (DOWN). • DF = 0⇒ incremento do endereço de memória (UP). 4. PROCESSADOR ARM Os processadores ARM começaram a aparecer na mı́dia nos últimos tempos como um dos principais argumentos de venda de alguns modelos de smartphones e tablets. ARM é um acrônimo de Advanced RISC Machine (algo como máquina RISC avançada) e RISC é um conjunto de instruções uti- lizadas durante o processamento. RISC é a abreviação de Reduced Instruction Set Computer (Conjunto Reduzido de Instruções de Computador) que é basicamente a forma como o processador lida com instruções (desde abrir o navegador até renderizar um vı́deo) utilizando um conjunto extrema- mente simples e reduzido de etapas. 4.1. CARACTERÍSTICAS: Um processador ARM utilizando o modelo RISC é bastante simples se comparado ao x86, o que por um lado faz com que o seu desempenho seja menor, mas faz também com que ele precise de uma quantidade ı́nfima de energia para operar, o que o torna ideal para smartphones e tablets. Como os mod- elos de microprocessadores ARM apresentavam alta veloci- dade, tamanho pequeno do circuito integrado e baixo con- sumo, sua aplicação cresceu na área de sistemas embarcados O crescente interesse pela tecnologia RISC chamou a atenção da Apple Computers. Formou se uma parceria entre Acorn Apple e VLSI, originando a companhia Advanced RISC Ma- chines Ltd em 1990. Os processadores ARM são projetos para atender às ne- cessidades de 3 categorias: • Plataformas de aplicação (A): dispositivos executando sistemas operacionais abertos. • Sistemas embarcados de tempo real (R): sistemas para aplicações de armazenamento, automotivas, industriais e de rede. • Microcontroladores (M): smart cards, placas SIM e ter- minais de pagamento. Fig. 3. Evolução da ARM • Dois conjuntos de instruções de tamanho fixo: ARM (32 bits) e Thumb (16bits). • 16 registradores de 32 bits; • Arquitetura Load Store : as instruções somente operam sobre valores que já estejam nos registradores (ou ime- diatos) e sempre armazenam resultados em algum reg- istrador. O acesso à memória é feito apenas através das instruções load e store; • Dispositivos de E/S são mapeados em memória; • Suporte a interrupções e execução condicional de instruções. Principais Componentes • Unidade de decodificação de instruções e controle lógico : decodifica as instruções ARM e Thumb e organiza a sequência de exceções e outros eventos irregulares. • Registrador de endereço de memória : associado ao incrementador de endereço, mantém o controle da posição de PC. • Registradores de memória de dados: controlam o fluxo de entrada e saı́da. Fig. 4. Evolução da ARM • ULA (Unidade Lógica Aritmética): Realiza as operações lógicas e aritméticas requisitadas. Banco de Registradores • 1 porta de leitura • 2 portas de escrita Portas de leitura e escrita do PC • Barrel Shifter: realiza o deslocamento de uma palavra de dados em uma quantidade especı́fica de bits. • A arquitetura ARM7 e seus antecessores possuem um pipeline de três estágios: Fetch, Decode e Execute: – Fetch: a instrução é trazida da memória e colo- cada no pipeline. – Decode: os registradores usados na instrução são decodificados. – Execute: o banco de registradores é lido, as operações lógico aritméticas são executadas sobre os operandos, o resultado da operação é gerado e escrito no registrador de destino. 7 modos de operação: 1. Modo usuário: execução da maioria das aplicações. 2. Modo supervisor: modo em que se executa o SO. 3. Modo de abortamento: ativado quando se tem falha de memória. 4. Modo indefinido: ativado quando o processador tenta executar uma instrução que não é suportada nem pelo núcleo nem pelos coprocessadores. 5. Modo de interrupção rápida (FIQ fast interrupt): ati- vada quando o processador recebe um sinal de interrupção a partir de uma fonte designada de interrupção rápida. 6. Modo de interrupção (IRQ interruption request): ati- vado sempre que o processador recebe um sinal de interrupção. 7. Modo de sistema: usado para executar certas tarefas privilegiadas do SO. 5. REFERÊNCIAS STALLINGS, W. Arquitetura e Organização de Computa- dores. 10a edição. São Paulo: Pearson, 2017.
Compartilhar