Buscar

Pipeline e Processadores X86 e ARM

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.

Continue navegando