segunda-feira, 8 de outubro de 2012

Pipeline

O que é?
Pipeline  é  uma  técnica  de  implementação  de processadores que permite a sobreposição temporal de diversas fases de execução de instruções onde  o hardware processa mais de uma instrução de cada  vez sem  esperar  que  uma  instrução  termine  antes  de começar a outra.







Os mesmos princípios podem ser aplicados aos processadores que
executam suas tarefas em pipeline.

 Tradicionalmente,  as  instruções  do  MIPS  (Microprocessor  without
interlocked  pipeline  stages  ­  Microprocessador  sem  estágios
interligados de pipeline)  são executadas em até cinco passos:
1) Busca Instrução na memória
2) Leitura dos registradores e decodificação das instruções
3) Execução de operação ou cálculo de endereço
4) Acesso a operando na memória
5) Escrita do resultado em registrador



















Arquiteturas_CISC_e_RISC

Definição de CISC e RISC

CISC é o conjunto de instruções admitidas é substancialmente grande, complexo, de formato e duração diferentes. Internamente, o processador subdivide instruções complexas em instruções mais simples, o que obriga a aumentar a complexidade do chip (microcódigo) e nesses termos diminuir a velocidade de relógio para não surgirem problemas electrónicos, com as resultantes e inconvenientes perdas de desempenho ou seja é  capaz  de  executar  várias  centenas  de  instruções 
complexas diferentes, sendo extremamente versátil.

Arquitetura CISC:

Microprocessadores  CISC  (Complex  Instruction  Set  Computer)  são
fáceis de programar e permitem um uso eficiente de memória.
 A  pouco  tempo  atrás  as  máquinas  eram  programadas  única  e exclusivamente em linguagem Assembly (linguagem de máquina), e as memórias eram lentas e caras, o que justificou a filosofia CISC.
 Assim,  projetos  de  microprocessadores  clássicos,  tais  como    o  Intel 80x86 e o Motorola 68K series, seguiram a filosofia CISC.
Mudanças  recentes  na tecnologia  de  software  e  hardware forçou  uma
reavaliação em termos de arquitetura.
 Assim, muitos processadores CISC mais modernos têm implementado alguns princípios RISC  (Reduced Instruction Set Computer), tornando­ se arquiteturas híbridas mais convenientes.
 No  fundo,  a  idéia  CISC  ganhou  força  devido  ao  fato  de  ela  gerar  a necessidade  de  compiladores  de  simples  desenvolvimento,  uma  vez que  muitas  instruções  de  máquina  são  realizadas  pelo  próprio
processador.

O objectivo dos cisc é optimizar o desempenho das máquinas.

Desvantagens de cisc:

  • Como as novas gerações de uma família de processador geralmente envolve  a  geração  antecessora,  tanto  o  conjunto  de  instruções quanto o hardware do novo chip tornam­-se mais complexos 
  •  Instruções  diferentes  levam  quantidades  diferentes  de  período  de relógio para executar, o que pode tornar a máquina excessivamente lenta
  •  Instruções  muito  especializadas  não  são  usadas  com  a  frequência suficiente  a  ponto  de  justificar  sua  existência  –  aproximadamente 20% das instruções disponíveis são usadas em um programa típico
  •  Instruções  CISC  típicas  setam  “condition  codes”,  o  que  demanda tempo  de  execução,  além  do  fato  de  os  programadores  terem  um esforço extra em lembrar de examiná-­las. 





O conceito de processador RISC baseia-se na premissa de que será menos eficiente executar uma instrução complexa do que executar o conjunto de instruções simples equivalente.
Assim, os processadores RISC têm por objectivo simplificar o conjunto de instruções em diversas dimensões por forma a maximizar esta premissa ou seja são aqueles  que  utilizam  um  pequeno  conjunto  de  instruções  altamente otimizado.
Para isso, um processador RISC caracteriza-se por:
  • Execução  em  um  ciclo  de  clock.  Esta  característica  é  resultado  da otimização  de  cada  instrução,  aliada  a  uma  técnica  chamada  de Pipelining;
  •  Grande número de registradores para evitar uma quantidade elevada de interações com a memória.
Cada instrução consiste num grupo de bits que pode ser dividido em duas partes:
  • a primeira parte indica o que é a instrução e como será executada, sendo constituída de um só campo;
  • a segunda parte referese ao(s) dado(s) que será(ão) manipulado(s) na operação, podendo ser constituída por mais de um campo.
A definição dos códigos de operação do conjunto de instruções de um processador pode ser feita por duas maneiras: 
  • instruções com C.Op. de tamanho fixo;
  • instruções com C.Op. de tamanho variável.
No primeiro caso, todas as instruções têm um C.Op. com a mesma quantidade de bits. A implementação das instruções e sua manipulação durante a execução de um programa são facilitadas, ao passo que o tamanho do C.Op., e da própria instrução tende a aumentar, influenciando no aumento do tamanho ocupado pelo programa na MP. 



As instruções de máquina tem os seguintes tipos, dependendo da sua função:
  • Processamento de dados: instruções aritméticas e lógicas;
  • Armazenamento de dados: instruções de memória;
  • Movimentação de dados: instruções de E/S;
  • Controle: instruções de teste e desvio.
Instruções aritméticas são aquelas que fornecem a capacidade computacional para processamento de dados numéricos. Instruções lógicas (ou booleanas) operam sobre bits de uma palavra, na condição de bits e não de números, oferecendo, portanto, a capacidade de processar qualquer outro tipo de dado (quantitativo ou qualitativo) que o usuário possa desejar empregar, sem o estabelecimento de relações matemáticas ou algébricas entre esses dados. Instruções de memória são aquelas utilizadas para mover dados entre a memória e os registradores da UCP, uma vez que operações aritméticas e lógicas são executadas sobre dados armazenados nesses registradores. Instruções de E/S são necessárias para transferir programas e dados para a memória (provenientes de fontes externas à UCP) e para transferir resultados de processamentos computacionais de volta para o usuário. Instruções de teste são aquelas utilizadas para testar o valor de uma palavra de dados ou o estado de uma etapa de processamento computacional. Instruções de desvio são usadas para desviar a execução do programapara uma nova instrução, muitas vezes em função do resultado de um teste.

Desvantagens da arquitetura risc:


  • É fato que máquinas RISC são mais baratas e mais rápidas do que as CISC, o que pode nos induzir a pensar que elas são as máquinas do futuro.
  • Entretanto, o  custo de um hardware mais  simples é a necessidade de um software mais complexo.




CPU - Instruções

Definição de Instruções da Máquina



 Código de operação: especifica a operação a ser realizada
•  Operando fonte*: operandos que constituem dados de entrada para a
operação
•  Operando de destino*: resultado que pode ser produzido pela operação
•  Endereço da próxima instrução: local onde deve ser buscada a instrução
seguinte (em alguns casos), após o término da corrente


Diagrama de estados do ciclo de instruções



Instruções de Máquina

Actualmente a duas tecnologias de projecto de processadores no mercado:

  • Sistema com conjuntos de instruções complexo 

          (Complex Instruction Set Computer ­ CISC);

  • Sistema com conjunto de instruções reduzido 

          (Reduced Instruction Set Computer ­ RISC).


Formato das instruções


•  a primeira parte indica o que é a instrução e como será executada,
sendo constituída de um só campo;
•  a segunda parte refere­se ao(s) dado(s) que será(ão) manipulado(s)
na operação, podendo ser constituída por mais de um campo.



Tamanho das Instruções

•  instruções com C.Op. de tamanho fixo;
•  instruções com C.Op. de tamanho variável.

No caso de implementação de instruções com um C.Op.
de tamanho variável, há a possibilidade de redução de
espaço ocupado na MP, já que permite a codificação de
um número maior de instruções usando uma menor
quantidade de bits.Esse tipo de implementação permite maior versatilidade
entre as quantidades de bits do código de operação e as
dos campos operandos, objetivando criar um conjunto de
instruções com maior número de instruções, com
quantidades diferentes de operandos, sem aumentar em
demasia o tamanho total das instruções.




Tipos de instruções

Podemos classificar as instruções de máquina nos seguintes
tipos, dependendo da sua função:
•  Processamento de dados: instruções aritméticas e lógicas;
•  Armazenamento de dados: instruções de memória;
•  Movimentação de dados: instruções de E/S;
•  Controle: instruções de teste e desvio.


  • Instruções aritméticas: são aquelas que fornecem a capacidade computacional 

para processamento de dados numéricos.

  • Instruções lógicas (ou booleanas): operam sobre bits de uma palavra, na 

condição de bits e não de números, oferecendo, portanto, a capacidade de
processar qualquer outro tipo de dado (quantitativo ou qualitativo) que o
usuário possa desejar empregar, sem o estabelecimento de relações
matemáticas ou algébricas entre esses dados.

  • Instruções de memória: são aquelas utilizadas para mover dados entre a 

memória e os registradores da UCP, uma vez que operações aritméticas e
lógicas são executadas sobre dados armazenados nesses registradores.

  • Instruções de E/S: são necessárias para transferir programas e dados para a 

memória (provenientes de fontes externas à UCP) e para transferir resultados
de processamentos computacionais de volta para o usuário.

  • Instruções de teste: são aquelas utilizadas para testar o valor de uma palavra 

de dados ou o estado de uma etapa de processamento computacional.

  • Instruções de desvio: são usadas para desviar a execução do programa para 

uma nova instrução, muitas vezes em função do resultado de um teste.

Ciclo de instrução




















Ciclo de instrução sem Interrupção










segunda-feira, 1 de outubro de 2012

Definição de CPU ou UCP


Unidade Central de Processamento (UCP)
Central Processing Unit (CPU)

A unidade central de processamento ou CPU (Central Processing Unit), também conhecido como processador, é a parte de um sistema computacional, que realiza as instruções de um programa de computador, para executar a aritmética básica, lógica, e a entradas e saída de dados. A CPU tem papel parecido ao cérebro no computador. O termo vem sendo usado desde o início de 1960. A forma, desenho e implementação mudaram drasticamente desde os primeiros exemplos, porém o seu funcionamento fundamental permanece o mesmo.
Podemos dividir as suas funções em 3 partes:
  • Processamento e execução dos programas
  • Executar as instruções 
  • Controlar as operações no computador.

    Vamos aprofundar as suas funções:
  • É responsável pela realização de qualquer operação realizada por
um computador. 
  • Comanda não somente as ações efetuadas internamente, como
também em decorrência de interpretação de uma determinada
instrução, ele emite sinais de controle para os demais componentes
do computador agirem e realizarem alguma tarefa.
  •  Os processadores atuais são fabricados de modo que, em um único
invólucro (pastilhachip)
são inseridos todos os elementos necessários
à realização de suas funções.
Um processador tem, por propósito, realizar operações com dados (que
denominamos processamento) normalmente numéricos.
  •  Para realizar essas operações o processador necessita em primeiro
ligar interpretar que tipo de operação ele irá executar.
  •  Em seguida, antes da realização propriamente dita da operação, é
necessário que os dados estejam armazenados no dispositivo que
irá executar a operação.
  • Ele é projetado e fabricado com o propósito único de executar
sucessivamente pequenas operações matemáticas ou outras
manipulações de dados, na ordem e na seqüência definidas pela
organização do sistema.
  •  Portanto, o processador não somente realiza o processamento, como
também controla todo o funcionamento do sistema.
A função do processador (UCP) consiste resumidamente no seguinte:
  • Buscar uma instrução na memória (operação de leitura), uma de
cada vez;
  •  Interpretar que operação a instrução está explicitando (soma,
subtração, movimentação de dados, etc);
  •  Buscar os dados onde estiverem armazenados, para trazêlos
até
o processador;
  •  Executar efetivamente a operação com o(s) dados(s);
  •  Guardar o resultado (se houver algum) no local definido na
instrução;
  •  E finalmente, reiniciar o processo buscando uma nova instrução.
  • Na figura ao lado vemos o
    diagrama de blocos de
    uma UCP simples, com
    destaque aos elementos
    que exercem a função
    controle:
    • Unidade de Controle
    • Decodificador de
    Instrução
    • Registrador de Instrução
    • Contador de Instrução
    • Relógio
    • Registrador de Endereços
    da Memória
    • Registrador de Dados da
    • Memória


      As atividades realizadas por um processador podem ser divididas em
      duas grandes categorias:
      •  PROCESSAMENTO
      •  Compreende a realização das atividades relacionadas com a
      efetiva execução de uma operação, envolvendo principalmente a
      Unidade LógicoAritmética
      (ULA) e os registradores internos ao
      processador.
      •  CONTROLE
      •  É exercida pelos componentes do processador que realizam as
      atividades de busca, interpretação e controle da execução das
      instruções, bem como o controle dos demais componentes do
      sistema de computação, tais como a memória e os dispositivos de
      entrada e saída.
       

      A CPU é dividida em 2 partes principais:
      •       UAL - Unidade Aritmética e Lógica
      •        UC - Unidade de Controle




        A ULA (“ALU”) é o dispositivo do processador que efetivamente

        executa as operações matemáticas com os dados. Tais operações
        podem ser, por exemplo:Soma, subtração, multiplicação e divisão;
        Operação lógica AND, OR, XOR;
        Deslocamento à direita, deslocamento à esquerda; Entre outros
        Toda instrução que envolve operações aritméticas são passadas pela UC para a ALU
        Possui registradores que recebem dados e executam as operações.

        Diagrama Esquemático ALU

       


      A capacidade de processamento de um processador é em grande
      parte determinada pelas facilidades embutidas no hardware da ULA
      para realizar as operações planejadas.
      •  Um dos elementos fundamentais para isso é o tamanho da palavra
      do processador.
      •  O valor escolhido no projeto de fabricação determinará o tamanho
      dos elementos ligados às área de processamento, a ULA e os
      registradores de dados.
      •  Processadores que possuem palavra de largura igual a 16 bits
      devem ter seus registradores de dados com largura igual a 16 bits,
      e assim respectivamente naqueles que possuem 32 ou 64 bits.
      •  Um tamanho maior ou menor de palavra acarreta, sem dúvida,
      diferenças de desempenho do processador.


      A UC é o dispositivo mais complexo do processador.
      •  Ele possui a lógica necessária para realizar a movimentação de dados
      e instruções “de” e “para” o processador, através dos sinais de controle
      que emite em instantes de tempo determinados conforme uma
      programação prévia.
      Tem por funções a busca, interpretação e controle de execução das instruções
      Controle dos demais componentes do computador
      Orienta o fluxo de dados
      Contem o conjunto de instruções que a CPU é capaz de realizar.


      Diagrama funcional da UCP
       
      Registradores Importantes na  UCP
      Na UC - CI Contador de Instruções (em inglês: PC - Program Counter) - armazena o 

      endereço da próxima instrução a ser executada.

      Na UC - RI Registrador de Instrução (em inglês: (IR - Instruction Register) - armazena a 

      instrução a ser executada.

      Na UAL - ACC Acumulador - armazena os dados (de entrada e resultados) para as 

      operações na UAL; o acumulador é um dos principais elementos que definem o tamanho 

      da palavra do computador - o tamanho da palavra é igual ao tamanho do acumulador.




      O relógio (clock) é um dispositivo gerador de pulsos cuja duração é


      chamada de ciclo.
       A quantidade de vezes em que este pulso básico se repete em um


      segundo define a unidade de media do relógio denominada


      frequência, a qual também é utilizada para definir a velocidade da

      UCP.

       Servem para:

       Sincronizar, ou seja, permitir que duas ou mais ações

      ocorram no mesmo instante de tempo.

      Cadenciar as ações realizadas em um determinada positivo,


      ou seja, controlar a velocidade com que elas ocorrem.

       Pode ser entendido com um dispositivo de controle.

       Em geral o relógio é formado por um cristal de quartzo.