P. 1
Estrutura e Função Do Cpu

Estrutura e Função Do Cpu

5.0

|Views: 11.451|Likes:
Publicado porapi-3696124
Estrutura do Cpu; Registos; Ciclo de Instruções; Fluxo de dados; Pré-busca de Instruções
Estrutura do Cpu; Registos; Ciclo de Instruções; Fluxo de dados; Pré-busca de Instruções

More info:

Published by: api-3696124 on Oct 17, 2008
Direitos Autorais:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

03/18/2014

pdf

text

original

Tecnologias de Informação

Arquitectura de Computadores Estrutura e Função da CPU

Tópicos Estrutura da CPU Registos Ciclo de Instruções Fluxo de Dados Pré-Busca de Instruções

2

Estrutura e funções do CPU Arquitectura de Microprocessadores Virtualmente quase todos os computadores contemporâneos são baseados na arquitectura de Von Newman e são baseados em 3 conceitos: Os dados e as instruções são armazenados numa memória de leitura/escrita O conteúdo desta memória é endereçado por localização sem preocupação com o tipo de dados A execução ocorre de uma forma sequencial (a não ser que explicitamente modificada) de uma instrução para outra A CPU é quem vai exercer o controlo entre os vários registos da memória e calcular as operações tendo em conta os vários sinais de controlo. Estrutura e funções do CPU Arquitectura de Microprocessadores Fazem parte dos registos internos do CPU: O MAR (Memory Address Register) que especifica o endereço de memória para a próxima leitura e escrita O MBR (Memory Buffer Register) que contém os dados que vão ser escritos na memória ou então que detém os dados lidos da memória Do mesmo modo, os registos I/O AR e o I/O BR especificam o módulo de entradas e saídas usado para a troca de dados entre o módulo de entradas e saídas do CPU Organização Interna da CPU Para compreendermos a organização do CPU temos de considerar as suas funções básicas: Adquirir Instruções (Fetch Instructions): o CPU tem de ler as instruções a partir da memória Interpretar Instruções: as instruções têm de ser descodificadas por forma a determinar a acção a executar Adquirir dados (Fetch Data): a execução de uma instrução pode necessitar a leitura de dados da memória ou do módulo de entradas e saídas (I/O) Processar dados: a execução de uma instrução pode implicar operações lógicas ou aritméticas nos dados Escrever dados: os resultados de uma execução podem implicar escrever dados na memória ou num módulo de E/S. Organização Interna da CPU Tendo em conta estas operações, o computador tem de ter um sítio onde guardar os dados. É necessário saber qual o endereço físico da última instrução para que ele próprio consiga executar a próxima. É necessário que o computador guarde temporariamente os dados enquanto é executada uma instrução. Por outras palavras é necessário que o CPU tenha uma pequena memória interna.

3

Para além dos registos internos do processador, onde serão alocadas as instruções e os dados de memória temporariamente. O CPU é constituído por uma Unidade Lógica Aritmética e uma Unidade de Controlo Organização Interna da CPU A ALU (Unidade Lógica Aritmética) processa e calcula os dados. A Unidade de Controlo, controla o fluxo de dados e as instruções enviadas e recebidas do CPU e controla também as operações da ALU. Na figura seguinte podemos visualizar a constituição interna do CPU. Para além da ALU, dos registos e Unidade de Controlo, as interligações entre os vários componentes é feita pelo Bus do CPU Organização Interna da CPU CPU Bus Registos Controlo ALU Organização Interna da CPU Veja-se as grandes semelhanças entre as partes constituintes do CPU e a estrutura dos computadores. Computador= CPU, I/O, Memória CPU= Unidade de Controlo, ALU, Registos Organização Interna da CPU A ALU e todos os registos do CPU estão interligados através de um bus interno. As portas e os sinais de controlo servem para mover os dados de e para o bus em cada registo. Sinais de controlo adicionais controlam a transferência de e para o bus do sistema e operações da ALU. Quando estiverem envolvidas operações na ALU, é necessário envolver mais registos. Quando uma operação envolvendo dois operandos for executada, um pode ser obtido do bus interno, mas o outro tem de ser obtido de uma outra origem Organização Interna da CPU O AC (acumulator) poderia ser usado para o efeito mas iria limitar a flexibilidade do sistema e não iria funcionar com o CPU na situação em que se está a operar com vários registos. A ALU é um circuito combinacional sem capacidade de memória. Assim, quando os sinais de controlo activam as funções da ALU, os inputs da ALU são transferidos em output. Por esta razão, o output não pode ser ligado directamente ao bus porque senão entraria em feedback com o input. Organização Interna da CPU Para isto utilizaremos um registo (Z) que arquivará temporariamente o output. Com a utilização destes novos registos, uma operação para adicionar um valor ao AC desde memória compreenderia os seguintes passos: A1: MAR IR (Address)

4

A2: MBR Memory A3; Y MBR A4: Z (AC) + Y A5: AC Z Para além da utilização destes registos, são possíveis outras organizações. Organização Interna da CPU De uma maneira geral, são usados os bus internos ou conjuntos destes bus(es). A utilização de Paths comuns simplificam a ligação e o controlo do CPU. Uma outra razão para a utilização do bus interno é a poupança do espaço, especialmente em microprocessadores, onde o espaço ocupado por registos tem de ser minimizado Estrutura e funções da CPU Organização dos Registos A CPU tem de ter algum espaço para trabalhar (armazenamento temporário) Este espaço é constituído por registos O numero e funções dos registos varia de processador para processador Constitui uma das maiores decisões a tomar no desenho de um processador Constitui o topo da hierarquia da memória Estrutura e funções da CPU Organização dos Registos Os registos agrupam-se em dois grandes grupos: Registos visíveis ao utilizador Registos de controlo de estado. Os registos visíveis ao utilizador permitem ao programador minimizar as referências à memória principal e podem ser caracterizados nas seguintes categorias: Registos de Uso Geral Registos de Dados Registos de Endereço Códigos de condição Estrutura e funções da CPU Organização dos Registos Registos visíveis ao utilizador Registos de Uso Geral - podem ser atribuídos a uma variedade de funções pelo programador, normalmente podem conter operandos para qualquer código de operação Registos de Dados - só podem ser utilizados para guardar dados e não podem ser utilizados em operações de cálculo de endereços Registos de Endereço - podem ser de uso geral ou podem estar vocacionados para um modo de endereçamento particular (ex. Stack pointer) Códigos de condição - também chamados de flags, geralmente agrupados em um ou mais registos que são alterados apenas pelo CPU dependendo da última operação lógica ou aritmética Estrutura e funções da CPU Exemplo de Códigos de Condição Conjunto de bits individuais e.g. o resultado da ultima operação foi zero Podem ser lidos (implicitamente) por programas

5

e.g. Salta se zero Não pode (usualmente) ser estabelecido por programas Estrutura e funções da CPU Organização dos Registos Os Registos de Controlo de Estado são utilizados pela unidade de controlo para controlar a operação do CPU e por programas privilegiados (sistema operativo) para controlar a execução de outros programas Como exemplos destes registos temos os quatro registos essenciais à execução de instruções: Program Counter (PC) - contém o endereço de uma posição de memória; Instruction Register (IR) - contém a instrução adquirida mais recentemente Memory Access Register (MAR) - contém o endereço de uma posição de memória Memory Buffer Register (MBR) - contém uma palavra de dados a ser escrita em memória ou a palavra lida mais recentemente Estrutura e funções da CPU Organização dos Registos Todos os CPU(s) incluem um registo ou conjunto de registos normalmente chamado Program Status Word (PSW) que contem informação de estado: sign - contém o sinal da última operação aritmética zero - activo quando o resultado é zero carry - activo se uma comparação lógica for verdadeira overflow - indica overflow aritmético interrupt enable/disable - liga e desliga as interrupções supervisor - indica se o CPU está a executar em modo privilegiado Estrutura e funções da CPU Organização dos Registos Quantos de Registos? Entre 8 e 32 Menos = mais referencias a memória Tamanho dos Registos? Suficientemente grande para armazenar um endereço completo Suficientemente grande para armazenar um palavra E’ muitas vezes possível combinar dois registos de dados Programação em C double int a; long int a; Estrutura e funções da CPU Exemplo de Organização de Registos Estrutura e funções da CPU Ciclo de Instrução Um ciclo de instrução inclui os seguintes subciclos: Aquisição - lê a próxima instrução da memória para o CPU Execução - interpreta o opcode e executa a respectiva operação Interrupção - se as interrupções estiverem activas, e no caso de haver um interrupção, a informação é salvaguardada no estado em que se encontra Estrutura e funções da CPU

6

Ciclo de Instrução Estrutura e funções da CPU Ciclo de Instrução Estrutura e funções da CPU Fluxo de Dados A sequência exacta dos eventos durante um ciclo de instrução depende do desenho do CPU. Após o ciclo de aquisição a unidade de controlo examina o conteúdo de IR e, se este tiver um operando em endereçamento indirecto, executa um ciclo indirecto. Analogamente o ciclo de interrupção tem um comportamento simples e previsível. Estrutura e funções da CPU Ciclo de Aquisição Durante um ciclo de aquisição, uma instrução é lida da memória. O PC contem o endereço da próxima instrução a ser adquirida. Este endereço é copiado para o MAR e colocado no bus de endereços. A unidade de controlo faz um pedido de leitura de memória e o resultado é: Colocado no bus de dados Copiado para o MBR Movido para o IR. Entretanto o PC é incrementado, preparando-se o próximo ciclo de aquisição Estrutura e funções da CPU Ciclo de Aquisição Estrutura e funções da CPU Ciclo Indirecto A aquisição de um endereço indirecto introduz um novo subciclo de instrução que executa os acessos à memória suplementares. Nesta situação a principal linha de actividade consiste na alternância entre actividades de aquisição de instruções e actividades de instrução e execuções. Depois de uma instrução ser adquirida, é examinada com o intuito de se determinar se ocorreu algum endereçamento indirecto. Em caso afirmativo, os operandos são adquiridos usando o endereçamento indirecto. Logo depois e antes da aquisição da próxima instrução é verificado o estado das interrupções. Estrutura e funções da CPU Ciclo Indirecto Uma vez acabado o ciclo de aquisição, a unidade de controlo examina o conteúdo do IR para determinar se estes contem um operando de endereçamento indirecto. Neste caso é realizado um ciclo indirecto. Os n bits mais significativos do MBR que contêm o endereço de referência, são transferidos para o MAR. A unidade de controlo faz uma leitura à memória para obter o endereço desejado do operando para o MBR. Os ciclos indirectos podem envolver transferência de dados entre os registos, leitura ou escrita em memória ou I/O e/ou processamento na ALU.

7

Estrutura e funções da CPU Ciclo de Interrupção Tanto os ciclos de aquisição como os ciclos indirectos são simples e previsíveis. No caso dos ciclos de interrupção, sendo estes também simples e previsíveis, o valor do PC é salvaguardado, podendo o CPU retomar a actividade que estava a desenvolver logo após a interrupção. O valor do PC é transferido para o MBR e escrito em memória. O local reservado em memória para este efeito é carregado no MAR a partir da unidade de controlo. O PC é carregado com o endereço da rotina de interrupção, como resultado, o próximo ciclo de instrução irá começar na instrução apropriada. Estrutura e funções da CPU Ciclo de Interrupção Estrutura e funções da CPU Processamento Pipeline Para além dos componentes electrónicos, a eficiência dos processadores pode ser aumentada através da própria organização dos elementos constituintes do CPU. Podemos, por exemplo, utilizar vários registos e/ou utilizar memória cache. Uma técnica que vai permitir aumentar a eficiência do processador tem a ver com a utilização do processamento pipeline. A estratégia usada é semelhante a uma linha de produção de uma fábrica. Este processo consiste em trabalhar os produtos nas várias fases de fabrico, simultaneamente, permitindo a decomposição de instruções complexas em outras mais simples. Estrutura e funções da CPU Processamento Pipeline Se reconhecermos que as instruções são executadas por fases (por exemplo duas: aquisição e execução) podemos explicar o conceito pipeline em duas fases independentes. A primeira fase consiste em adquirir uma instrução, utilizando para tal os ciclos de memória deixados livres pela segunda fase, e colocá-la num buffer. A segunda fase, executar a instrução adquirida na 1ª fase disponível no buffer. Estrutura e funções da CPU Processamento Pipeline Em principio este processo permitirá diminuir o tempo de execução de uma instrução (após o enchimento do pipeline) no entanto este ganho de performance raramente é conseguido por duas razões: O tempo de execução geralmente será maior que o tempo de aquisição, desequilibrando o pipeline (a execução envolve leitura e escrita nos operandos). Os saltos condicionais tornam o endereço da próxima instrução a executar desconhecido, levando a que a fase de aquisição tenha de esperar até que o endereço seja conhecido. A perca de tempo provocada pela segunda razão pode ser minimizada tentando adivinhar a próxima instrução a executar (por exemplo o seguinte).

8

Estrutura e funções da CPU Processamento Pipeline De forma a aumentar a performance do sistema, o pipeline tem de ter mais estágios e de duração igual, assim as instruções podem ser decompostas em: Aquisição da instrução (F.I. – Fetch Instruction)-leitura da próxima instrução a colocar no buffer Descodificação da instrução (D.I. – Decode Instruction) Cálculo dos operandos (C.O. – Calculation Operand) Aquisição dos operandos (F.O. – Fetch Operand) Execução das Instruções (E.I. – Execute Instruction) Escrita dos Operandos (W.O. – Write Operand) Estrutura e funções da CPU Processamento Pipeline Estrutura e funções da CPU Processamento Pipeline Estrutura e funções da CPU Processamento Pipeline Estrutura e funções da CPU Processamento Pipeline Pode parecer que quantos mais estágios o pipeline tiver mais rapidamente as instruções são executadas, no entanto existem dois factores que frustam esta expectativa: Em cada estágio do pipeline existe um overhead resultante do movimento do buffer para buffer e da preparação das funções aprovado pela dependência lógica das instruções (acessos à memória e saltos) A lógica do controlo necessária para controlar as dependências da memória para optimizar o pipeline, aumenta consideravelmente com o n.º de estágios. Isto pode levar a uma situação em que a lógica do controlo é mais complexa que o número de estados a serem controlados. Estrutura e funções da CPU Processamento Pipeline - Tratamento de ramificações O problema principal no desenho de um pipeline de instruções é em assegurar um fluxo constante de instruções nos estágios iniciais. O impedimento principal é as instruções de salto condicional. Para tentar resolver este problema são utilizadas algumas aproximações. Prefetch Branch Target Quando um ramo condicional é reconhecido para além da instrução seguinte, também a instrução-alvo de salto é adquirida e salvaguardada até a condição ser resolvida. Seja o desvio tomado ou não, a próxima instrução a ser executada terá sido buscada anticipadatmante Estrutura e funções da CPU Processamento Pipeline - Tratamento de ramificações Multiple Stream Perante uma instrução de salto, é feita uma escolha de uma de duas instruções, podendo ser feita uma escolha errada Para resolver este problema, uma abordagem (do tipo ‘força bruta’) consiste em replicar os estágios iniciais do pipeline permitindo a aquisição de ambas as instruções, utilizando duas streams

9

Problemas: Atrasos de construção no acesso aos registos e a memória Instruções de salto adicionais podem entrar no pipeline antes da decisão ser tomada. Cada instrução necessita de uma stream adicional Exemplos: IBM 370/168 e 3033 Estrutura e funções da CPU Processamento Pipeline - Tratamento de ramificações Loop Buffer Este buffer é uma memória pequena de alta velocidade mantida pelo estágio de aquisição do pipeline que contem as n instruções mais recentemente adquiridas em sequência. Reduz o acesso a memória central Util quando existem pequenos ciclos num programa Está optimizado para a execução de ciclos e tem um funcionamento semelhante ao de uma memória cache. Delayed Branch Consiste em ajustar automaticamente as instruções do programa por forma a que as instruções de ramificação decorram mais tarde do que o desejado. Estrutura e funções da CPU Processamento Pipeline - Tratamento de ramificações Branch Prediction Algumas técnicas podem ser utilizadas para prever uma ramificação. Predict never taken Predict always taken (>50%) Predict by opcode taken (Taxas de >75% de sucesso) Taken/Not taken switch Branch history table. As 3 primeiras são estáticas e não dependem da execução (baseiam-se em estudos probabilísticos). As 2 últimas são dinâmicas e dependem da execução histórica do programa, quer através de bits associados às instruções, quer mantendo um tabela para as instruções executadas recentemente.

10

You're Reading a Free Preview

Descarregar
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->