estrutura e função do cpu

14
Tecnologias de Informação Arquitectura de Computadores Estrutura e Função da CPU

Upload: api-3696124

Post on 07-Jun-2015

11.476 views

Category:

Documents


31 download

DESCRIPTION

Estrutura do Cpu; Registos; Ciclo de Instruções; Fluxo de dados; Pré-busca de Instruções

TRANSCRIPT

Page 1: Estrutura e Função Do Cpu

Tecnologias de Informaccedilatildeo

Arquitectura de Computadores

Estrutura e Funccedilatildeo da CPU

Toacutepicos

1048707 Estrutura da CPU1048707 Registos1048707 Ciclo de Instruccedilotildees1048707 Fluxo de Dados1048707 Preacute-Busca de Instruccedilotildees

2

Estrutura e funccedilotildees do CPUArquitectura de Microprocessadores1048707 Virtualmente quase todos os computadores contemporacircneos satildeo baseados na arquitectura de Von Newman e satildeo baseados em 3 conceitos1048707 Os dados e as instruccedilotildees satildeo armazenados numa memoacuteria de leituraescrita1048707 O conteuacutedo desta memoacuteria eacute endereccedilado por localizaccedilatildeo sem preocupaccedilatildeo com o tipo de dados1048707 A execuccedilatildeo ocorre de uma forma sequencial (a natildeo ser que explicitamente modificada) de uma instruccedilatildeo para outra1048707 A CPU eacute quem vai exercer o controlo entre os vaacuterios registos da memoacuteria e calcular as operaccedilotildees tendo em conta os vaacuterios sinais de controlo

Estrutura e funccedilotildees do CPUArquitectura de Microprocessadores1048707 Fazem parte dos registos internos do CPU1048707 O MAR (Memory Address Register) que especifica o endereccedilo de memoacuteria para a proacutexima leitura e escrita1048707 O MBR (Memory Buffer Register) que conteacutem os dados que vatildeo ser escritos na memoacuteria ou entatildeo que deteacutem os dados lidos da memoacuteria1048707 Do mesmo modo os registos IO AR e o IO BR especificam o moacutedulo de entradas e saiacutedas usado para a troca de dados entre o moacutedulo de entradas e saiacutedas do CPU

Organizaccedilatildeo Interna da CPU1048707 Para compreendermos a organizaccedilatildeo do CPU temos de considerar as suas funccedilotildees baacutesicas1048707 Adquirir Instruccedilotildees (Fetch Instructions) o CPU tem de ler as instruccedilotildees a partir da memoacuteria1048707 Interpretar Instruccedilotildees as instruccedilotildees tecircm de ser descodificadas por forma a determinar a acccedilatildeo a executar1048707 Adquirir dados (Fetch Data) a execuccedilatildeo de uma instruccedilatildeo pode necessitar a leitura de dados da memoacuteria ou do moacutedulo de entradas e saiacutedas (IO)1048707 Processar dados a execuccedilatildeo de uma instruccedilatildeo pode implicar operaccedilotildees loacutegicas ou aritmeacuteticas nos dados1048707 Escrever dados os resultados de uma execuccedilatildeo podem implicar escrever dados na memoacuteria ou num moacutedulo de ES

Organizaccedilatildeo Interna da CPU1048707 Tendo em conta estas operaccedilotildees o computador tem de ter um siacutetio onde guardar os dados1048707 Eacute necessaacuterio saber qual o endereccedilo fiacutesico da uacuteltima instruccedilatildeo para que ele proacuteprio consiga executar a proacutexima

3

1048707 Eacute necessaacuterio que o computador guarde temporariamente os dados enquanto eacute executada uma instruccedilatildeo Por outras palavras eacute necessaacuterio que o CPU tenha uma pequena memoacuteria interna1048707 Para aleacutem dos registos internos do processador onde seratildeo alocadas as instruccedilotildees e os dados de memoacuteria temporariamente O CPU eacute constituiacutedo por uma Unidade Loacutegica Aritmeacutetica e umaUnidade de Controlo

Organizaccedilatildeo Interna da CPU1048707 A ALU (Unidade Loacutegica Aritmeacutetica) processa e calcula os dados1048707 A Unidade de Controlo controla o fluxo de dados e as instruccedilotildees enviadas e recebidas do CPU e controla tambeacutem as operaccedilotildees da ALU1048707 Na figura seguinte podemos visualizar a constituiccedilatildeo interna do CPU Para aleacutem da ALU dos registos eUnidade de Controlo as interligaccedilotildees entre os vaacuterios componentes eacute feita pelo Bus do CPU

Organizaccedilatildeo Interna da CPUCPU Bus RegistosControloALUOrganizaccedilatildeo Interna da CPU1048707 Veja-se as grandes semelhanccedilas entre as partes constituintes do CPU e a estrutura dos computadores1048707 Computador= CPU IO Memoacuteria1048707 CPU= Unidade de Controlo ALU RegistosOrganizaccedilatildeo Interna da CPU1048707 A ALU e todos os registos do CPU estatildeo interligados atraveacutes de um bus interno1048707 As portas e os sinais de controlo servem para mover os dados de e para o bus em cada registo1048707 Sinais de controlo adicionais controlam a transferecircncia de e para o bus do sistema e operaccedilotildees da ALU1048707 Quando estiverem envolvidas operaccedilotildees na ALU eacute necessaacuterio envolver mais registos1048707 Quando uma operaccedilatildeo envolvendo dois operandos for executada um pode ser obtido do bus interno mas o outro tem de ser obtido de uma outra origemOrganizaccedilatildeo Interna da CPU1048707 O AC (acumulator) poderia ser usado para o efeito mas iria limitar a flexibilidade do sistema e natildeo iria funcionar com o CPU na situaccedilatildeo em que se estaacute a operar com vaacuterios registos1048707 A ALU eacute um circuito combinacional sem capacidade de memoacuteria Assim quando os sinais de controlo activam as funccedilotildees da ALU os inputs da ALU satildeo transferidos em output1048707 Por esta razatildeo o output natildeo pode ser ligado directamente ao bus porque senatildeo entraria em feedback com o inputOrganizaccedilatildeo Interna da CPU1048707 Para isto utilizaremos um registo (Z) que arquivaraacute temporariamente o output

4

1048707 Com a utilizaccedilatildeo destes novos registos uma operaccedilatildeo para adicionar um valor ao AC desde memoacuteria compreenderia os seguintes passos1048707 A1 MAR 1048707 IR (Address)1048707 A2 MBR 1048707 Memory1048707 A3 Y 1048707 MBR1048707 A4 Z 1048707 (AC) + Y1048707 A5 AC 1048707Z1048707 Para aleacutem da utilizaccedilatildeo destes registos satildeo possiacuteveis outras organizaccedilotildeesOrganizaccedilatildeo Interna da CPU1048707 De uma maneira geral satildeo usados os bus internos ou conjuntos destes bus(es)1048707 A utilizaccedilatildeo de Paths comuns simplificam a ligaccedilatildeo e o controlo do CPU1048707 Uma outra razatildeo para a utilizaccedilatildeo do bus interno eacute a poupanccedila do espaccedilo especialmente em microprocessadores onde o espaccedilo ocupado por registos tem de ser minimizadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 A CPU tem de ter algum espaccedilo para trabalhar(armazenamento temporaacuterio)1048707 Este espaccedilo eacute constituiacutedo por registos1048707 O numero e funccedilotildees dos registos varia de processador para processador1048707 Constitui uma das maiores decisotildees a tomar no desenho de um processador1048707 Constitui o topo da hierarquia da memoacuteriaEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os registos agrupam-se em dois grandes grupos1048707 Registos visiacuteveis ao utilizador1048707 Registos de controlo de estado1048707 Os registos visiacuteveis ao utilizador permitem ao programador minimizar as referecircncias agrave memoacuteria principal e podem ser caracterizados nas seguintes categorias1048707 Registos de Uso Geral1048707 Registos de Dados1048707 Registos de Endereccedilo1048707 Coacutedigos de condiccedilatildeoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Registos visiacuteveis ao utilizador1048707 Registos de Uso Geral - podem ser atribuiacutedos a uma variedade de funccedilotildees pelo programador normalmente podem conter operandos para qualquer coacutedigo de operaccedilatildeo1048707 Registos de Dados - soacute podem ser utilizados para guardar dados e natildeo podem ser utilizados em operaccedilotildees de caacutelculo de endereccedilos1048707 Registos de Endereccedilo - podem ser de uso geral ou podem estar vocacionados para um modo de endereccedilamento particular (ex Stack pointer)1048707 Coacutedigos de condiccedilatildeo - tambeacutem chamados de flags geralmente agrupados em um ou mais registos que satildeo alterados apenas pelo CPU dependendo da uacuteltima operaccedilatildeo loacutegica ou aritmeacuteticaEstrutura e funccedilotildees da CPUExemplo de Coacutedigos de Condiccedilatildeo

5

1048707 Conjunto de bits individuais1048707 eg o resultado da ultima operaccedilatildeo foi zero1048707 Podem ser lidos (implicitamente) por programas1048707 eg Salta se zero1048707 Natildeo pode (usualmente) ser estabelecido por programasEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os Registos de Controlo de Estado satildeo utilizados pela unidade de controlo para controlar a operaccedilatildeo doCPU e por programas privilegiados (sistema operativo) para controlar a execuccedilatildeo de outros programas1048707 Como exemplos destes registos temos os quatro registos essenciais agrave execuccedilatildeo de instruccedilotildees1048707 Program Counter (PC) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Instruction Register (IR) - conteacutem a instruccedilatildeo adquirida mais recentemente1048707 Memory Access Register (MAR) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Memory Buffer Register (MBR) - conteacutem uma palavra de dadosa ser escrita em memoacuteria ou a palavra lida mais recentementeEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Todos os CPU(s) incluem um registo ou conjunto de registos normalmente chamado Program Status Word(PSW) que contem informaccedilatildeo de estado1048707 sign - conteacutem o sinal da uacuteltima operaccedilatildeo aritmeacutetica1048707 zero - activo quando o resultado eacute zero1048707 carry - activo se uma comparaccedilatildeo loacutegica for verdadeira1048707 overflow - indica overflow aritmeacutetico1048707 interrupt enabledisable - liga e desliga as interrupccedilotildees1048707 supervisor - indica se o CPU estaacute a executar em modo privilegiadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Quantos de Registos1048707 Entre 8 e 321048707 Menos = mais referencias a memoacuteria1048707 Tamanho dos Registos1048707 Suficientemente grande para armazenar um endereccedilo completo1048707 Suficientemente grande para armazenar um palavra1048707 Ersquo muitas vezes possiacutevel combinar dois registos de dados1048707 Programaccedilatildeo em C1048707 double int a1048707 long int aEstrutura e funccedilotildees da CPUExemplo de Organizaccedilatildeo de RegistosEstrutura e funccedilotildees da CPUCiclo de Instruccedilatildeo1048707 Um ciclo de instruccedilatildeo inclui os seguintes subciclos1048707 Aquisiccedilatildeo - lecirc a proacutexima instruccedilatildeo da memoacuteria para oCPU1048707 Execuccedilatildeo - interpreta o opcode e executa a respectiva operaccedilatildeo

6

1048707 Interrupccedilatildeo - se as interrupccedilotildees estiverem activas e no caso de haver um interrupccedilatildeo a informaccedilatildeo eacute salvaguardada no estado em que se encontraEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUFluxo de Dados1048707 A sequecircncia exacta dos eventos durante um ciclo de instruccedilatildeo depende do desenho do CPU1048707 Apoacutes o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo de IR e se este tiver um operando em endereccedilamento indirecto executaum ciclo indirecto1048707 Analogamente o ciclo de interrupccedilatildeo tem um comportamento simples e previsiacutevelEstrutura e funccedilotildees da CPUCiclo de Aquisiccedilatildeo1048707 Durante um ciclo de aquisiccedilatildeo uma instruccedilatildeo eacute lida da memoacuteria1048707 O PC contem o endereccedilo da proacutexima instruccedilatildeo a ser adquirida1048707 Este endereccedilo eacute copiado para o MAR e colocado no bus de endereccedilos1048707 A unidade de controlo faz um pedido de leitura de memoacuteria e o resultado eacute1048707 Colocado no bus de dados1048707 Copiado para o MBR1048707 Movido para o IR1048707 Entretanto o PC eacute incrementado preparando-se o proacuteximo ciclo de aquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo de AquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo Indirecto1048707 A aquisiccedilatildeo de um endereccedilo indirecto introduz um novo subciclo de instruccedilatildeo que executa os acessos agrave memoacuteria suplementares1048707 Nesta situaccedilatildeo a principal linha de actividade consiste na alternacircncia entre actividades de aquisiccedilatildeo de instruccedilotildees e actividades de instruccedilatildeo e execuccedilotildees1048707 Depois de uma instruccedilatildeo ser adquirida eacute examinada com o intuito de se determinar se ocorreu algum endereccedilamento indirecto1048707 Em caso afirmativo os operandos satildeo adquiridos usando o endereccedilamento indirecto1048707 Logo depois e antes da aquisiccedilatildeo da proacutexima instruccedilatildeo eacute verificado o estado das interrupccedilotildees

Estrutura e funccedilotildees da CPUCiclo Indirecto1048707 Uma vez acabado o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo do IR para determinar se estes contem um operando de endereccedilamento indirecto1048707 Neste caso eacute realizado um ciclo indirecto1048707 Os n bits mais significativos do MBR que contecircm o endereccedilo de referecircncia satildeo transferidos para o MAR

7

1048707 A unidade de controlo faz uma leitura agrave memoacuteria para obter o endereccedilo desejado do operando para o MBR1048707 Os ciclos indirectos podem envolver transferecircncia de dados entre os registos leitura ou escrita em memoacuteria ou IO eou processamento na ALUEstrutura e funccedilotildees da CPUCiclo de Interrupccedilatildeo1048707 Tanto os ciclos de aquisiccedilatildeo como os ciclos indirectos satildeo simples e previsiacuteveis1048707 No caso dos ciclos de interrupccedilatildeo sendo estes tambeacutem simples e previsiacuteveis o valor do PC eacute salvaguardado podendo o CPU retomar a actividade que estava a desenvolver logo apoacutes a interrupccedilatildeo1048707 O valor do PC eacute transferido para o MBR e escrito em memoacuteria1048707 O local reservado em memoacuteria para este efeito eacute carregado noMAR a partir da unidade de controlo1048707 O PC eacute carregado com o endereccedilo da rotina de interrupccedilatildeo como resultado o proacuteximo ciclo de instruccedilatildeo iraacute comeccedilar na instruccedilatildeo apropriadaEstrutura e funccedilotildees da CPUCiclo de InterrupccedilatildeoEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Para aleacutem dos componentes electroacutenicos a eficiecircncia dos processadores pode ser aumentada atraveacutes da proacutepria organizaccedilatildeo dos elementos constituintes do CPU1048707 Podemos por exemplo utilizar vaacuterios registos eou utilizar memoacuteria cache1048707 Uma teacutecnica que vai permitir aumentar a eficiecircncia do processador tem a ver com a utilizaccedilatildeo do processamento pipeline1048707 A estrateacutegia usada eacute semelhante a uma linha de produccedilatildeo de uma faacutebrica1048707 Este processo consiste em trabalhar os produtos nas vaacuterias fases de fabrico simultaneamente permitindo a decomposiccedilatildeo de instruccedilotildees complexas em outras mais simplesEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Se reconhecermos que as instruccedilotildees satildeo executadas por fases (por exemplo duas aquisiccedilatildeo e execuccedilatildeo) podemos explicar o conceito pipelineem duas fases independentes1048707 A primeira fase consiste em adquirir uma instruccedilatildeo utilizando para tal os ciclos de memoacuteria deixados livres pela segunda fase e colocaacute-la num buffer1048707 A segunda fase executar a instruccedilatildeo adquirida na 1ordf fase disponiacutevel no bufferEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Em principio este processo permitiraacute diminuir o tempo de execuccedilatildeo de uma instruccedilatildeo (apoacutes o enchimento do pipeline) no entanto este ganho de performance raramente eacute conseguido por duas razotildees1048707 O tempo de execuccedilatildeo geralmente seraacute maior que o tempo de aquisiccedilatildeo desequilibrando o pipeline (a execuccedilatildeo envolve leitura e escrita nos operandos)1048707 Os saltos condicionais tornam o endereccedilo da proacutexima instruccedilatildeo a executar desconhecido levando a que a fase de aquisiccedilatildeo tenha de esperar ateacute que o endereccedilo seja conhecido

8

1048707 A perca de tempo provocada pela segunda razatildeo pode ser minimizada tentando adivinhar a proacutexima instruccedilatildeo a executar (por exemplo o seguinte)

Estrutura e funccedilotildees da CPUProcessamento Pipeline1048707 De forma a aumentar a performance do sistema o pipeline tem de ter mais estaacutegios e de duraccedilatildeo igual assim as instruccedilotildees podem ser decompostas em1048707 Aquisiccedilatildeo da instruccedilatildeo (FI ndash Fetch Instruction)-leitura da proacutexima instruccedilatildeo a colocar no buffer1048707 Descodificaccedilatildeo da instruccedilatildeo (DI ndash Decode Instruction)1048707 Caacutelculo dos operandos (CO ndash Calculation Operand)1048707 Aquisiccedilatildeo dos operandos (FO ndash Fetch Operand)1048707 Execuccedilatildeo das Instruccedilotildees (EI ndash Execute Instruction)1048707 Escrita dos Operandos (WO ndash Write Operand)Estrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Pode parecer que quantos mais estaacutegios o pipeline tiver mais rapidamente as instruccedilotildees satildeo executadas no entanto existem dois factores que frustam esta expectativa1048707 Em cada estaacutegio do pipeline existe um overhead resultante do movimento do buffer para buffer e da preparaccedilatildeo das funccedilotildees aprovado pela dependecircncia loacutegica das instruccedilotildees (acessos agrave memoacuteria e saltos)1048707 A loacutegica do controlo necessaacuteria para controlar as dependecircncias da memoacuteria para optimizar o pipeline aumenta consideravelmente com o nordm de estaacutegios Isto pode levar a uma situaccedilatildeo em que a loacutegica do controlo eacute mais complexa que o nuacutemero de estados a serem controladosEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 O problema principal no desenho de um pipeline de instruccedilotildees eacute em assegurar um fluxo constante de instruccedilotildees nos estaacutegios iniciais1048707 O impedimento principal eacute as instruccedilotildees de salto condicional1048707 Para tentar resolver este problema satildeo utilizadas algumas aproximaccedilotildees1048707 Prefetch Branch Target1048707 Quando um ramo condicional eacute reconhecido para aleacutem da instruccedilatildeo seguinte tambeacutem a instruccedilatildeo-alvo de salto eacute adquirida e salvaguardada ateacute a condiccedilatildeo ser resolvida1048707 Seja o desvio tomado ou natildeo a proacutexima instruccedilatildeo a ser executada teraacute sido buscada anticipadatmanteEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Multiple Stream1048707 Perante uma instruccedilatildeo de salto eacute feita uma escolha de uma de duas instruccedilotildees podendo ser feita uma escolha errada

9

1048707 Para resolver este problema uma abordagem (do tipo lsquoforccedila brutarsquo) consiste em replicar os estaacutegios iniciais do pipeline permitindo a aquisiccedilatildeo de ambas as instruccedilotildees utilizando duas streams

1048707 Problemas1048707 Atrasos de construccedilatildeo no acesso aos registos e a memoacuteria1048707 Instruccedilotildees de salto adicionais podem entrar no pipeline antes da decisatildeo ser tomada Cada instruccedilatildeo necessita de uma stream adicional1048707 Exemplos1048707 IBM 370168 e 3033Estrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Loop Buffer1048707 Este buffer eacute uma memoacuteria pequena de alta velocidade mantida pelo estaacutegio de aquisiccedilatildeo do pipeline que contem as n instruccedilotildees mais recentemente adquiridas em sequecircncia1048707 Reduz o acesso a memoacuteria central1048707 Util quando existem pequenos ciclos num programa1048707 Estaacute optimizado para a execuccedilatildeo de ciclos e tem um funcionamento semelhante ao de uma memoacuteria cache1048707 Delayed Branch1048707 Consiste em ajustar automaticamente as instruccedilotildees do programapor forma a que as instruccedilotildees de ramificaccedilatildeo decorram mais tarde do que o desejadoEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Branch Prediction1048707 Algumas teacutecnicas podem ser utilizadas para prever umaramificaccedilatildeo1048707 Predict never taken1048707 Predict always taken (gt50)1048707 Predict by opcode taken (Taxas de gt75 de sucesso)1048707 TakenNot taken switch1048707 Branch history table1048707 As 3 primeiras satildeo estaacuteticas e natildeo dependem da execuccedilatildeo (baseiam-se em estudos probabiliacutesticos)1048707 As 2 uacuteltimas satildeo dinacircmicas e dependem da execuccedilatildeo histoacuterica do programa quer atraveacutes de bits associados agraves instruccedilotildees quer mantendo um tabela para as instruccedilotildees executadas recentemente

10

Page 2: Estrutura e Função Do Cpu

Toacutepicos

1048707 Estrutura da CPU1048707 Registos1048707 Ciclo de Instruccedilotildees1048707 Fluxo de Dados1048707 Preacute-Busca de Instruccedilotildees

2

Estrutura e funccedilotildees do CPUArquitectura de Microprocessadores1048707 Virtualmente quase todos os computadores contemporacircneos satildeo baseados na arquitectura de Von Newman e satildeo baseados em 3 conceitos1048707 Os dados e as instruccedilotildees satildeo armazenados numa memoacuteria de leituraescrita1048707 O conteuacutedo desta memoacuteria eacute endereccedilado por localizaccedilatildeo sem preocupaccedilatildeo com o tipo de dados1048707 A execuccedilatildeo ocorre de uma forma sequencial (a natildeo ser que explicitamente modificada) de uma instruccedilatildeo para outra1048707 A CPU eacute quem vai exercer o controlo entre os vaacuterios registos da memoacuteria e calcular as operaccedilotildees tendo em conta os vaacuterios sinais de controlo

Estrutura e funccedilotildees do CPUArquitectura de Microprocessadores1048707 Fazem parte dos registos internos do CPU1048707 O MAR (Memory Address Register) que especifica o endereccedilo de memoacuteria para a proacutexima leitura e escrita1048707 O MBR (Memory Buffer Register) que conteacutem os dados que vatildeo ser escritos na memoacuteria ou entatildeo que deteacutem os dados lidos da memoacuteria1048707 Do mesmo modo os registos IO AR e o IO BR especificam o moacutedulo de entradas e saiacutedas usado para a troca de dados entre o moacutedulo de entradas e saiacutedas do CPU

Organizaccedilatildeo Interna da CPU1048707 Para compreendermos a organizaccedilatildeo do CPU temos de considerar as suas funccedilotildees baacutesicas1048707 Adquirir Instruccedilotildees (Fetch Instructions) o CPU tem de ler as instruccedilotildees a partir da memoacuteria1048707 Interpretar Instruccedilotildees as instruccedilotildees tecircm de ser descodificadas por forma a determinar a acccedilatildeo a executar1048707 Adquirir dados (Fetch Data) a execuccedilatildeo de uma instruccedilatildeo pode necessitar a leitura de dados da memoacuteria ou do moacutedulo de entradas e saiacutedas (IO)1048707 Processar dados a execuccedilatildeo de uma instruccedilatildeo pode implicar operaccedilotildees loacutegicas ou aritmeacuteticas nos dados1048707 Escrever dados os resultados de uma execuccedilatildeo podem implicar escrever dados na memoacuteria ou num moacutedulo de ES

Organizaccedilatildeo Interna da CPU1048707 Tendo em conta estas operaccedilotildees o computador tem de ter um siacutetio onde guardar os dados1048707 Eacute necessaacuterio saber qual o endereccedilo fiacutesico da uacuteltima instruccedilatildeo para que ele proacuteprio consiga executar a proacutexima

3

1048707 Eacute necessaacuterio que o computador guarde temporariamente os dados enquanto eacute executada uma instruccedilatildeo Por outras palavras eacute necessaacuterio que o CPU tenha uma pequena memoacuteria interna1048707 Para aleacutem dos registos internos do processador onde seratildeo alocadas as instruccedilotildees e os dados de memoacuteria temporariamente O CPU eacute constituiacutedo por uma Unidade Loacutegica Aritmeacutetica e umaUnidade de Controlo

Organizaccedilatildeo Interna da CPU1048707 A ALU (Unidade Loacutegica Aritmeacutetica) processa e calcula os dados1048707 A Unidade de Controlo controla o fluxo de dados e as instruccedilotildees enviadas e recebidas do CPU e controla tambeacutem as operaccedilotildees da ALU1048707 Na figura seguinte podemos visualizar a constituiccedilatildeo interna do CPU Para aleacutem da ALU dos registos eUnidade de Controlo as interligaccedilotildees entre os vaacuterios componentes eacute feita pelo Bus do CPU

Organizaccedilatildeo Interna da CPUCPU Bus RegistosControloALUOrganizaccedilatildeo Interna da CPU1048707 Veja-se as grandes semelhanccedilas entre as partes constituintes do CPU e a estrutura dos computadores1048707 Computador= CPU IO Memoacuteria1048707 CPU= Unidade de Controlo ALU RegistosOrganizaccedilatildeo Interna da CPU1048707 A ALU e todos os registos do CPU estatildeo interligados atraveacutes de um bus interno1048707 As portas e os sinais de controlo servem para mover os dados de e para o bus em cada registo1048707 Sinais de controlo adicionais controlam a transferecircncia de e para o bus do sistema e operaccedilotildees da ALU1048707 Quando estiverem envolvidas operaccedilotildees na ALU eacute necessaacuterio envolver mais registos1048707 Quando uma operaccedilatildeo envolvendo dois operandos for executada um pode ser obtido do bus interno mas o outro tem de ser obtido de uma outra origemOrganizaccedilatildeo Interna da CPU1048707 O AC (acumulator) poderia ser usado para o efeito mas iria limitar a flexibilidade do sistema e natildeo iria funcionar com o CPU na situaccedilatildeo em que se estaacute a operar com vaacuterios registos1048707 A ALU eacute um circuito combinacional sem capacidade de memoacuteria Assim quando os sinais de controlo activam as funccedilotildees da ALU os inputs da ALU satildeo transferidos em output1048707 Por esta razatildeo o output natildeo pode ser ligado directamente ao bus porque senatildeo entraria em feedback com o inputOrganizaccedilatildeo Interna da CPU1048707 Para isto utilizaremos um registo (Z) que arquivaraacute temporariamente o output

4

1048707 Com a utilizaccedilatildeo destes novos registos uma operaccedilatildeo para adicionar um valor ao AC desde memoacuteria compreenderia os seguintes passos1048707 A1 MAR 1048707 IR (Address)1048707 A2 MBR 1048707 Memory1048707 A3 Y 1048707 MBR1048707 A4 Z 1048707 (AC) + Y1048707 A5 AC 1048707Z1048707 Para aleacutem da utilizaccedilatildeo destes registos satildeo possiacuteveis outras organizaccedilotildeesOrganizaccedilatildeo Interna da CPU1048707 De uma maneira geral satildeo usados os bus internos ou conjuntos destes bus(es)1048707 A utilizaccedilatildeo de Paths comuns simplificam a ligaccedilatildeo e o controlo do CPU1048707 Uma outra razatildeo para a utilizaccedilatildeo do bus interno eacute a poupanccedila do espaccedilo especialmente em microprocessadores onde o espaccedilo ocupado por registos tem de ser minimizadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 A CPU tem de ter algum espaccedilo para trabalhar(armazenamento temporaacuterio)1048707 Este espaccedilo eacute constituiacutedo por registos1048707 O numero e funccedilotildees dos registos varia de processador para processador1048707 Constitui uma das maiores decisotildees a tomar no desenho de um processador1048707 Constitui o topo da hierarquia da memoacuteriaEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os registos agrupam-se em dois grandes grupos1048707 Registos visiacuteveis ao utilizador1048707 Registos de controlo de estado1048707 Os registos visiacuteveis ao utilizador permitem ao programador minimizar as referecircncias agrave memoacuteria principal e podem ser caracterizados nas seguintes categorias1048707 Registos de Uso Geral1048707 Registos de Dados1048707 Registos de Endereccedilo1048707 Coacutedigos de condiccedilatildeoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Registos visiacuteveis ao utilizador1048707 Registos de Uso Geral - podem ser atribuiacutedos a uma variedade de funccedilotildees pelo programador normalmente podem conter operandos para qualquer coacutedigo de operaccedilatildeo1048707 Registos de Dados - soacute podem ser utilizados para guardar dados e natildeo podem ser utilizados em operaccedilotildees de caacutelculo de endereccedilos1048707 Registos de Endereccedilo - podem ser de uso geral ou podem estar vocacionados para um modo de endereccedilamento particular (ex Stack pointer)1048707 Coacutedigos de condiccedilatildeo - tambeacutem chamados de flags geralmente agrupados em um ou mais registos que satildeo alterados apenas pelo CPU dependendo da uacuteltima operaccedilatildeo loacutegica ou aritmeacuteticaEstrutura e funccedilotildees da CPUExemplo de Coacutedigos de Condiccedilatildeo

5

1048707 Conjunto de bits individuais1048707 eg o resultado da ultima operaccedilatildeo foi zero1048707 Podem ser lidos (implicitamente) por programas1048707 eg Salta se zero1048707 Natildeo pode (usualmente) ser estabelecido por programasEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os Registos de Controlo de Estado satildeo utilizados pela unidade de controlo para controlar a operaccedilatildeo doCPU e por programas privilegiados (sistema operativo) para controlar a execuccedilatildeo de outros programas1048707 Como exemplos destes registos temos os quatro registos essenciais agrave execuccedilatildeo de instruccedilotildees1048707 Program Counter (PC) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Instruction Register (IR) - conteacutem a instruccedilatildeo adquirida mais recentemente1048707 Memory Access Register (MAR) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Memory Buffer Register (MBR) - conteacutem uma palavra de dadosa ser escrita em memoacuteria ou a palavra lida mais recentementeEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Todos os CPU(s) incluem um registo ou conjunto de registos normalmente chamado Program Status Word(PSW) que contem informaccedilatildeo de estado1048707 sign - conteacutem o sinal da uacuteltima operaccedilatildeo aritmeacutetica1048707 zero - activo quando o resultado eacute zero1048707 carry - activo se uma comparaccedilatildeo loacutegica for verdadeira1048707 overflow - indica overflow aritmeacutetico1048707 interrupt enabledisable - liga e desliga as interrupccedilotildees1048707 supervisor - indica se o CPU estaacute a executar em modo privilegiadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Quantos de Registos1048707 Entre 8 e 321048707 Menos = mais referencias a memoacuteria1048707 Tamanho dos Registos1048707 Suficientemente grande para armazenar um endereccedilo completo1048707 Suficientemente grande para armazenar um palavra1048707 Ersquo muitas vezes possiacutevel combinar dois registos de dados1048707 Programaccedilatildeo em C1048707 double int a1048707 long int aEstrutura e funccedilotildees da CPUExemplo de Organizaccedilatildeo de RegistosEstrutura e funccedilotildees da CPUCiclo de Instruccedilatildeo1048707 Um ciclo de instruccedilatildeo inclui os seguintes subciclos1048707 Aquisiccedilatildeo - lecirc a proacutexima instruccedilatildeo da memoacuteria para oCPU1048707 Execuccedilatildeo - interpreta o opcode e executa a respectiva operaccedilatildeo

6

1048707 Interrupccedilatildeo - se as interrupccedilotildees estiverem activas e no caso de haver um interrupccedilatildeo a informaccedilatildeo eacute salvaguardada no estado em que se encontraEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUFluxo de Dados1048707 A sequecircncia exacta dos eventos durante um ciclo de instruccedilatildeo depende do desenho do CPU1048707 Apoacutes o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo de IR e se este tiver um operando em endereccedilamento indirecto executaum ciclo indirecto1048707 Analogamente o ciclo de interrupccedilatildeo tem um comportamento simples e previsiacutevelEstrutura e funccedilotildees da CPUCiclo de Aquisiccedilatildeo1048707 Durante um ciclo de aquisiccedilatildeo uma instruccedilatildeo eacute lida da memoacuteria1048707 O PC contem o endereccedilo da proacutexima instruccedilatildeo a ser adquirida1048707 Este endereccedilo eacute copiado para o MAR e colocado no bus de endereccedilos1048707 A unidade de controlo faz um pedido de leitura de memoacuteria e o resultado eacute1048707 Colocado no bus de dados1048707 Copiado para o MBR1048707 Movido para o IR1048707 Entretanto o PC eacute incrementado preparando-se o proacuteximo ciclo de aquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo de AquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo Indirecto1048707 A aquisiccedilatildeo de um endereccedilo indirecto introduz um novo subciclo de instruccedilatildeo que executa os acessos agrave memoacuteria suplementares1048707 Nesta situaccedilatildeo a principal linha de actividade consiste na alternacircncia entre actividades de aquisiccedilatildeo de instruccedilotildees e actividades de instruccedilatildeo e execuccedilotildees1048707 Depois de uma instruccedilatildeo ser adquirida eacute examinada com o intuito de se determinar se ocorreu algum endereccedilamento indirecto1048707 Em caso afirmativo os operandos satildeo adquiridos usando o endereccedilamento indirecto1048707 Logo depois e antes da aquisiccedilatildeo da proacutexima instruccedilatildeo eacute verificado o estado das interrupccedilotildees

Estrutura e funccedilotildees da CPUCiclo Indirecto1048707 Uma vez acabado o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo do IR para determinar se estes contem um operando de endereccedilamento indirecto1048707 Neste caso eacute realizado um ciclo indirecto1048707 Os n bits mais significativos do MBR que contecircm o endereccedilo de referecircncia satildeo transferidos para o MAR

7

1048707 A unidade de controlo faz uma leitura agrave memoacuteria para obter o endereccedilo desejado do operando para o MBR1048707 Os ciclos indirectos podem envolver transferecircncia de dados entre os registos leitura ou escrita em memoacuteria ou IO eou processamento na ALUEstrutura e funccedilotildees da CPUCiclo de Interrupccedilatildeo1048707 Tanto os ciclos de aquisiccedilatildeo como os ciclos indirectos satildeo simples e previsiacuteveis1048707 No caso dos ciclos de interrupccedilatildeo sendo estes tambeacutem simples e previsiacuteveis o valor do PC eacute salvaguardado podendo o CPU retomar a actividade que estava a desenvolver logo apoacutes a interrupccedilatildeo1048707 O valor do PC eacute transferido para o MBR e escrito em memoacuteria1048707 O local reservado em memoacuteria para este efeito eacute carregado noMAR a partir da unidade de controlo1048707 O PC eacute carregado com o endereccedilo da rotina de interrupccedilatildeo como resultado o proacuteximo ciclo de instruccedilatildeo iraacute comeccedilar na instruccedilatildeo apropriadaEstrutura e funccedilotildees da CPUCiclo de InterrupccedilatildeoEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Para aleacutem dos componentes electroacutenicos a eficiecircncia dos processadores pode ser aumentada atraveacutes da proacutepria organizaccedilatildeo dos elementos constituintes do CPU1048707 Podemos por exemplo utilizar vaacuterios registos eou utilizar memoacuteria cache1048707 Uma teacutecnica que vai permitir aumentar a eficiecircncia do processador tem a ver com a utilizaccedilatildeo do processamento pipeline1048707 A estrateacutegia usada eacute semelhante a uma linha de produccedilatildeo de uma faacutebrica1048707 Este processo consiste em trabalhar os produtos nas vaacuterias fases de fabrico simultaneamente permitindo a decomposiccedilatildeo de instruccedilotildees complexas em outras mais simplesEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Se reconhecermos que as instruccedilotildees satildeo executadas por fases (por exemplo duas aquisiccedilatildeo e execuccedilatildeo) podemos explicar o conceito pipelineem duas fases independentes1048707 A primeira fase consiste em adquirir uma instruccedilatildeo utilizando para tal os ciclos de memoacuteria deixados livres pela segunda fase e colocaacute-la num buffer1048707 A segunda fase executar a instruccedilatildeo adquirida na 1ordf fase disponiacutevel no bufferEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Em principio este processo permitiraacute diminuir o tempo de execuccedilatildeo de uma instruccedilatildeo (apoacutes o enchimento do pipeline) no entanto este ganho de performance raramente eacute conseguido por duas razotildees1048707 O tempo de execuccedilatildeo geralmente seraacute maior que o tempo de aquisiccedilatildeo desequilibrando o pipeline (a execuccedilatildeo envolve leitura e escrita nos operandos)1048707 Os saltos condicionais tornam o endereccedilo da proacutexima instruccedilatildeo a executar desconhecido levando a que a fase de aquisiccedilatildeo tenha de esperar ateacute que o endereccedilo seja conhecido

8

1048707 A perca de tempo provocada pela segunda razatildeo pode ser minimizada tentando adivinhar a proacutexima instruccedilatildeo a executar (por exemplo o seguinte)

Estrutura e funccedilotildees da CPUProcessamento Pipeline1048707 De forma a aumentar a performance do sistema o pipeline tem de ter mais estaacutegios e de duraccedilatildeo igual assim as instruccedilotildees podem ser decompostas em1048707 Aquisiccedilatildeo da instruccedilatildeo (FI ndash Fetch Instruction)-leitura da proacutexima instruccedilatildeo a colocar no buffer1048707 Descodificaccedilatildeo da instruccedilatildeo (DI ndash Decode Instruction)1048707 Caacutelculo dos operandos (CO ndash Calculation Operand)1048707 Aquisiccedilatildeo dos operandos (FO ndash Fetch Operand)1048707 Execuccedilatildeo das Instruccedilotildees (EI ndash Execute Instruction)1048707 Escrita dos Operandos (WO ndash Write Operand)Estrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Pode parecer que quantos mais estaacutegios o pipeline tiver mais rapidamente as instruccedilotildees satildeo executadas no entanto existem dois factores que frustam esta expectativa1048707 Em cada estaacutegio do pipeline existe um overhead resultante do movimento do buffer para buffer e da preparaccedilatildeo das funccedilotildees aprovado pela dependecircncia loacutegica das instruccedilotildees (acessos agrave memoacuteria e saltos)1048707 A loacutegica do controlo necessaacuteria para controlar as dependecircncias da memoacuteria para optimizar o pipeline aumenta consideravelmente com o nordm de estaacutegios Isto pode levar a uma situaccedilatildeo em que a loacutegica do controlo eacute mais complexa que o nuacutemero de estados a serem controladosEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 O problema principal no desenho de um pipeline de instruccedilotildees eacute em assegurar um fluxo constante de instruccedilotildees nos estaacutegios iniciais1048707 O impedimento principal eacute as instruccedilotildees de salto condicional1048707 Para tentar resolver este problema satildeo utilizadas algumas aproximaccedilotildees1048707 Prefetch Branch Target1048707 Quando um ramo condicional eacute reconhecido para aleacutem da instruccedilatildeo seguinte tambeacutem a instruccedilatildeo-alvo de salto eacute adquirida e salvaguardada ateacute a condiccedilatildeo ser resolvida1048707 Seja o desvio tomado ou natildeo a proacutexima instruccedilatildeo a ser executada teraacute sido buscada anticipadatmanteEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Multiple Stream1048707 Perante uma instruccedilatildeo de salto eacute feita uma escolha de uma de duas instruccedilotildees podendo ser feita uma escolha errada

9

1048707 Para resolver este problema uma abordagem (do tipo lsquoforccedila brutarsquo) consiste em replicar os estaacutegios iniciais do pipeline permitindo a aquisiccedilatildeo de ambas as instruccedilotildees utilizando duas streams

1048707 Problemas1048707 Atrasos de construccedilatildeo no acesso aos registos e a memoacuteria1048707 Instruccedilotildees de salto adicionais podem entrar no pipeline antes da decisatildeo ser tomada Cada instruccedilatildeo necessita de uma stream adicional1048707 Exemplos1048707 IBM 370168 e 3033Estrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Loop Buffer1048707 Este buffer eacute uma memoacuteria pequena de alta velocidade mantida pelo estaacutegio de aquisiccedilatildeo do pipeline que contem as n instruccedilotildees mais recentemente adquiridas em sequecircncia1048707 Reduz o acesso a memoacuteria central1048707 Util quando existem pequenos ciclos num programa1048707 Estaacute optimizado para a execuccedilatildeo de ciclos e tem um funcionamento semelhante ao de uma memoacuteria cache1048707 Delayed Branch1048707 Consiste em ajustar automaticamente as instruccedilotildees do programapor forma a que as instruccedilotildees de ramificaccedilatildeo decorram mais tarde do que o desejadoEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Branch Prediction1048707 Algumas teacutecnicas podem ser utilizadas para prever umaramificaccedilatildeo1048707 Predict never taken1048707 Predict always taken (gt50)1048707 Predict by opcode taken (Taxas de gt75 de sucesso)1048707 TakenNot taken switch1048707 Branch history table1048707 As 3 primeiras satildeo estaacuteticas e natildeo dependem da execuccedilatildeo (baseiam-se em estudos probabiliacutesticos)1048707 As 2 uacuteltimas satildeo dinacircmicas e dependem da execuccedilatildeo histoacuterica do programa quer atraveacutes de bits associados agraves instruccedilotildees quer mantendo um tabela para as instruccedilotildees executadas recentemente

10

Page 3: Estrutura e Função Do Cpu

Estrutura e funccedilotildees do CPUArquitectura de Microprocessadores1048707 Virtualmente quase todos os computadores contemporacircneos satildeo baseados na arquitectura de Von Newman e satildeo baseados em 3 conceitos1048707 Os dados e as instruccedilotildees satildeo armazenados numa memoacuteria de leituraescrita1048707 O conteuacutedo desta memoacuteria eacute endereccedilado por localizaccedilatildeo sem preocupaccedilatildeo com o tipo de dados1048707 A execuccedilatildeo ocorre de uma forma sequencial (a natildeo ser que explicitamente modificada) de uma instruccedilatildeo para outra1048707 A CPU eacute quem vai exercer o controlo entre os vaacuterios registos da memoacuteria e calcular as operaccedilotildees tendo em conta os vaacuterios sinais de controlo

Estrutura e funccedilotildees do CPUArquitectura de Microprocessadores1048707 Fazem parte dos registos internos do CPU1048707 O MAR (Memory Address Register) que especifica o endereccedilo de memoacuteria para a proacutexima leitura e escrita1048707 O MBR (Memory Buffer Register) que conteacutem os dados que vatildeo ser escritos na memoacuteria ou entatildeo que deteacutem os dados lidos da memoacuteria1048707 Do mesmo modo os registos IO AR e o IO BR especificam o moacutedulo de entradas e saiacutedas usado para a troca de dados entre o moacutedulo de entradas e saiacutedas do CPU

Organizaccedilatildeo Interna da CPU1048707 Para compreendermos a organizaccedilatildeo do CPU temos de considerar as suas funccedilotildees baacutesicas1048707 Adquirir Instruccedilotildees (Fetch Instructions) o CPU tem de ler as instruccedilotildees a partir da memoacuteria1048707 Interpretar Instruccedilotildees as instruccedilotildees tecircm de ser descodificadas por forma a determinar a acccedilatildeo a executar1048707 Adquirir dados (Fetch Data) a execuccedilatildeo de uma instruccedilatildeo pode necessitar a leitura de dados da memoacuteria ou do moacutedulo de entradas e saiacutedas (IO)1048707 Processar dados a execuccedilatildeo de uma instruccedilatildeo pode implicar operaccedilotildees loacutegicas ou aritmeacuteticas nos dados1048707 Escrever dados os resultados de uma execuccedilatildeo podem implicar escrever dados na memoacuteria ou num moacutedulo de ES

Organizaccedilatildeo Interna da CPU1048707 Tendo em conta estas operaccedilotildees o computador tem de ter um siacutetio onde guardar os dados1048707 Eacute necessaacuterio saber qual o endereccedilo fiacutesico da uacuteltima instruccedilatildeo para que ele proacuteprio consiga executar a proacutexima

3

1048707 Eacute necessaacuterio que o computador guarde temporariamente os dados enquanto eacute executada uma instruccedilatildeo Por outras palavras eacute necessaacuterio que o CPU tenha uma pequena memoacuteria interna1048707 Para aleacutem dos registos internos do processador onde seratildeo alocadas as instruccedilotildees e os dados de memoacuteria temporariamente O CPU eacute constituiacutedo por uma Unidade Loacutegica Aritmeacutetica e umaUnidade de Controlo

Organizaccedilatildeo Interna da CPU1048707 A ALU (Unidade Loacutegica Aritmeacutetica) processa e calcula os dados1048707 A Unidade de Controlo controla o fluxo de dados e as instruccedilotildees enviadas e recebidas do CPU e controla tambeacutem as operaccedilotildees da ALU1048707 Na figura seguinte podemos visualizar a constituiccedilatildeo interna do CPU Para aleacutem da ALU dos registos eUnidade de Controlo as interligaccedilotildees entre os vaacuterios componentes eacute feita pelo Bus do CPU

Organizaccedilatildeo Interna da CPUCPU Bus RegistosControloALUOrganizaccedilatildeo Interna da CPU1048707 Veja-se as grandes semelhanccedilas entre as partes constituintes do CPU e a estrutura dos computadores1048707 Computador= CPU IO Memoacuteria1048707 CPU= Unidade de Controlo ALU RegistosOrganizaccedilatildeo Interna da CPU1048707 A ALU e todos os registos do CPU estatildeo interligados atraveacutes de um bus interno1048707 As portas e os sinais de controlo servem para mover os dados de e para o bus em cada registo1048707 Sinais de controlo adicionais controlam a transferecircncia de e para o bus do sistema e operaccedilotildees da ALU1048707 Quando estiverem envolvidas operaccedilotildees na ALU eacute necessaacuterio envolver mais registos1048707 Quando uma operaccedilatildeo envolvendo dois operandos for executada um pode ser obtido do bus interno mas o outro tem de ser obtido de uma outra origemOrganizaccedilatildeo Interna da CPU1048707 O AC (acumulator) poderia ser usado para o efeito mas iria limitar a flexibilidade do sistema e natildeo iria funcionar com o CPU na situaccedilatildeo em que se estaacute a operar com vaacuterios registos1048707 A ALU eacute um circuito combinacional sem capacidade de memoacuteria Assim quando os sinais de controlo activam as funccedilotildees da ALU os inputs da ALU satildeo transferidos em output1048707 Por esta razatildeo o output natildeo pode ser ligado directamente ao bus porque senatildeo entraria em feedback com o inputOrganizaccedilatildeo Interna da CPU1048707 Para isto utilizaremos um registo (Z) que arquivaraacute temporariamente o output

4

1048707 Com a utilizaccedilatildeo destes novos registos uma operaccedilatildeo para adicionar um valor ao AC desde memoacuteria compreenderia os seguintes passos1048707 A1 MAR 1048707 IR (Address)1048707 A2 MBR 1048707 Memory1048707 A3 Y 1048707 MBR1048707 A4 Z 1048707 (AC) + Y1048707 A5 AC 1048707Z1048707 Para aleacutem da utilizaccedilatildeo destes registos satildeo possiacuteveis outras organizaccedilotildeesOrganizaccedilatildeo Interna da CPU1048707 De uma maneira geral satildeo usados os bus internos ou conjuntos destes bus(es)1048707 A utilizaccedilatildeo de Paths comuns simplificam a ligaccedilatildeo e o controlo do CPU1048707 Uma outra razatildeo para a utilizaccedilatildeo do bus interno eacute a poupanccedila do espaccedilo especialmente em microprocessadores onde o espaccedilo ocupado por registos tem de ser minimizadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 A CPU tem de ter algum espaccedilo para trabalhar(armazenamento temporaacuterio)1048707 Este espaccedilo eacute constituiacutedo por registos1048707 O numero e funccedilotildees dos registos varia de processador para processador1048707 Constitui uma das maiores decisotildees a tomar no desenho de um processador1048707 Constitui o topo da hierarquia da memoacuteriaEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os registos agrupam-se em dois grandes grupos1048707 Registos visiacuteveis ao utilizador1048707 Registos de controlo de estado1048707 Os registos visiacuteveis ao utilizador permitem ao programador minimizar as referecircncias agrave memoacuteria principal e podem ser caracterizados nas seguintes categorias1048707 Registos de Uso Geral1048707 Registos de Dados1048707 Registos de Endereccedilo1048707 Coacutedigos de condiccedilatildeoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Registos visiacuteveis ao utilizador1048707 Registos de Uso Geral - podem ser atribuiacutedos a uma variedade de funccedilotildees pelo programador normalmente podem conter operandos para qualquer coacutedigo de operaccedilatildeo1048707 Registos de Dados - soacute podem ser utilizados para guardar dados e natildeo podem ser utilizados em operaccedilotildees de caacutelculo de endereccedilos1048707 Registos de Endereccedilo - podem ser de uso geral ou podem estar vocacionados para um modo de endereccedilamento particular (ex Stack pointer)1048707 Coacutedigos de condiccedilatildeo - tambeacutem chamados de flags geralmente agrupados em um ou mais registos que satildeo alterados apenas pelo CPU dependendo da uacuteltima operaccedilatildeo loacutegica ou aritmeacuteticaEstrutura e funccedilotildees da CPUExemplo de Coacutedigos de Condiccedilatildeo

5

1048707 Conjunto de bits individuais1048707 eg o resultado da ultima operaccedilatildeo foi zero1048707 Podem ser lidos (implicitamente) por programas1048707 eg Salta se zero1048707 Natildeo pode (usualmente) ser estabelecido por programasEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os Registos de Controlo de Estado satildeo utilizados pela unidade de controlo para controlar a operaccedilatildeo doCPU e por programas privilegiados (sistema operativo) para controlar a execuccedilatildeo de outros programas1048707 Como exemplos destes registos temos os quatro registos essenciais agrave execuccedilatildeo de instruccedilotildees1048707 Program Counter (PC) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Instruction Register (IR) - conteacutem a instruccedilatildeo adquirida mais recentemente1048707 Memory Access Register (MAR) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Memory Buffer Register (MBR) - conteacutem uma palavra de dadosa ser escrita em memoacuteria ou a palavra lida mais recentementeEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Todos os CPU(s) incluem um registo ou conjunto de registos normalmente chamado Program Status Word(PSW) que contem informaccedilatildeo de estado1048707 sign - conteacutem o sinal da uacuteltima operaccedilatildeo aritmeacutetica1048707 zero - activo quando o resultado eacute zero1048707 carry - activo se uma comparaccedilatildeo loacutegica for verdadeira1048707 overflow - indica overflow aritmeacutetico1048707 interrupt enabledisable - liga e desliga as interrupccedilotildees1048707 supervisor - indica se o CPU estaacute a executar em modo privilegiadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Quantos de Registos1048707 Entre 8 e 321048707 Menos = mais referencias a memoacuteria1048707 Tamanho dos Registos1048707 Suficientemente grande para armazenar um endereccedilo completo1048707 Suficientemente grande para armazenar um palavra1048707 Ersquo muitas vezes possiacutevel combinar dois registos de dados1048707 Programaccedilatildeo em C1048707 double int a1048707 long int aEstrutura e funccedilotildees da CPUExemplo de Organizaccedilatildeo de RegistosEstrutura e funccedilotildees da CPUCiclo de Instruccedilatildeo1048707 Um ciclo de instruccedilatildeo inclui os seguintes subciclos1048707 Aquisiccedilatildeo - lecirc a proacutexima instruccedilatildeo da memoacuteria para oCPU1048707 Execuccedilatildeo - interpreta o opcode e executa a respectiva operaccedilatildeo

6

1048707 Interrupccedilatildeo - se as interrupccedilotildees estiverem activas e no caso de haver um interrupccedilatildeo a informaccedilatildeo eacute salvaguardada no estado em que se encontraEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUFluxo de Dados1048707 A sequecircncia exacta dos eventos durante um ciclo de instruccedilatildeo depende do desenho do CPU1048707 Apoacutes o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo de IR e se este tiver um operando em endereccedilamento indirecto executaum ciclo indirecto1048707 Analogamente o ciclo de interrupccedilatildeo tem um comportamento simples e previsiacutevelEstrutura e funccedilotildees da CPUCiclo de Aquisiccedilatildeo1048707 Durante um ciclo de aquisiccedilatildeo uma instruccedilatildeo eacute lida da memoacuteria1048707 O PC contem o endereccedilo da proacutexima instruccedilatildeo a ser adquirida1048707 Este endereccedilo eacute copiado para o MAR e colocado no bus de endereccedilos1048707 A unidade de controlo faz um pedido de leitura de memoacuteria e o resultado eacute1048707 Colocado no bus de dados1048707 Copiado para o MBR1048707 Movido para o IR1048707 Entretanto o PC eacute incrementado preparando-se o proacuteximo ciclo de aquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo de AquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo Indirecto1048707 A aquisiccedilatildeo de um endereccedilo indirecto introduz um novo subciclo de instruccedilatildeo que executa os acessos agrave memoacuteria suplementares1048707 Nesta situaccedilatildeo a principal linha de actividade consiste na alternacircncia entre actividades de aquisiccedilatildeo de instruccedilotildees e actividades de instruccedilatildeo e execuccedilotildees1048707 Depois de uma instruccedilatildeo ser adquirida eacute examinada com o intuito de se determinar se ocorreu algum endereccedilamento indirecto1048707 Em caso afirmativo os operandos satildeo adquiridos usando o endereccedilamento indirecto1048707 Logo depois e antes da aquisiccedilatildeo da proacutexima instruccedilatildeo eacute verificado o estado das interrupccedilotildees

Estrutura e funccedilotildees da CPUCiclo Indirecto1048707 Uma vez acabado o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo do IR para determinar se estes contem um operando de endereccedilamento indirecto1048707 Neste caso eacute realizado um ciclo indirecto1048707 Os n bits mais significativos do MBR que contecircm o endereccedilo de referecircncia satildeo transferidos para o MAR

7

1048707 A unidade de controlo faz uma leitura agrave memoacuteria para obter o endereccedilo desejado do operando para o MBR1048707 Os ciclos indirectos podem envolver transferecircncia de dados entre os registos leitura ou escrita em memoacuteria ou IO eou processamento na ALUEstrutura e funccedilotildees da CPUCiclo de Interrupccedilatildeo1048707 Tanto os ciclos de aquisiccedilatildeo como os ciclos indirectos satildeo simples e previsiacuteveis1048707 No caso dos ciclos de interrupccedilatildeo sendo estes tambeacutem simples e previsiacuteveis o valor do PC eacute salvaguardado podendo o CPU retomar a actividade que estava a desenvolver logo apoacutes a interrupccedilatildeo1048707 O valor do PC eacute transferido para o MBR e escrito em memoacuteria1048707 O local reservado em memoacuteria para este efeito eacute carregado noMAR a partir da unidade de controlo1048707 O PC eacute carregado com o endereccedilo da rotina de interrupccedilatildeo como resultado o proacuteximo ciclo de instruccedilatildeo iraacute comeccedilar na instruccedilatildeo apropriadaEstrutura e funccedilotildees da CPUCiclo de InterrupccedilatildeoEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Para aleacutem dos componentes electroacutenicos a eficiecircncia dos processadores pode ser aumentada atraveacutes da proacutepria organizaccedilatildeo dos elementos constituintes do CPU1048707 Podemos por exemplo utilizar vaacuterios registos eou utilizar memoacuteria cache1048707 Uma teacutecnica que vai permitir aumentar a eficiecircncia do processador tem a ver com a utilizaccedilatildeo do processamento pipeline1048707 A estrateacutegia usada eacute semelhante a uma linha de produccedilatildeo de uma faacutebrica1048707 Este processo consiste em trabalhar os produtos nas vaacuterias fases de fabrico simultaneamente permitindo a decomposiccedilatildeo de instruccedilotildees complexas em outras mais simplesEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Se reconhecermos que as instruccedilotildees satildeo executadas por fases (por exemplo duas aquisiccedilatildeo e execuccedilatildeo) podemos explicar o conceito pipelineem duas fases independentes1048707 A primeira fase consiste em adquirir uma instruccedilatildeo utilizando para tal os ciclos de memoacuteria deixados livres pela segunda fase e colocaacute-la num buffer1048707 A segunda fase executar a instruccedilatildeo adquirida na 1ordf fase disponiacutevel no bufferEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Em principio este processo permitiraacute diminuir o tempo de execuccedilatildeo de uma instruccedilatildeo (apoacutes o enchimento do pipeline) no entanto este ganho de performance raramente eacute conseguido por duas razotildees1048707 O tempo de execuccedilatildeo geralmente seraacute maior que o tempo de aquisiccedilatildeo desequilibrando o pipeline (a execuccedilatildeo envolve leitura e escrita nos operandos)1048707 Os saltos condicionais tornam o endereccedilo da proacutexima instruccedilatildeo a executar desconhecido levando a que a fase de aquisiccedilatildeo tenha de esperar ateacute que o endereccedilo seja conhecido

8

1048707 A perca de tempo provocada pela segunda razatildeo pode ser minimizada tentando adivinhar a proacutexima instruccedilatildeo a executar (por exemplo o seguinte)

Estrutura e funccedilotildees da CPUProcessamento Pipeline1048707 De forma a aumentar a performance do sistema o pipeline tem de ter mais estaacutegios e de duraccedilatildeo igual assim as instruccedilotildees podem ser decompostas em1048707 Aquisiccedilatildeo da instruccedilatildeo (FI ndash Fetch Instruction)-leitura da proacutexima instruccedilatildeo a colocar no buffer1048707 Descodificaccedilatildeo da instruccedilatildeo (DI ndash Decode Instruction)1048707 Caacutelculo dos operandos (CO ndash Calculation Operand)1048707 Aquisiccedilatildeo dos operandos (FO ndash Fetch Operand)1048707 Execuccedilatildeo das Instruccedilotildees (EI ndash Execute Instruction)1048707 Escrita dos Operandos (WO ndash Write Operand)Estrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Pode parecer que quantos mais estaacutegios o pipeline tiver mais rapidamente as instruccedilotildees satildeo executadas no entanto existem dois factores que frustam esta expectativa1048707 Em cada estaacutegio do pipeline existe um overhead resultante do movimento do buffer para buffer e da preparaccedilatildeo das funccedilotildees aprovado pela dependecircncia loacutegica das instruccedilotildees (acessos agrave memoacuteria e saltos)1048707 A loacutegica do controlo necessaacuteria para controlar as dependecircncias da memoacuteria para optimizar o pipeline aumenta consideravelmente com o nordm de estaacutegios Isto pode levar a uma situaccedilatildeo em que a loacutegica do controlo eacute mais complexa que o nuacutemero de estados a serem controladosEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 O problema principal no desenho de um pipeline de instruccedilotildees eacute em assegurar um fluxo constante de instruccedilotildees nos estaacutegios iniciais1048707 O impedimento principal eacute as instruccedilotildees de salto condicional1048707 Para tentar resolver este problema satildeo utilizadas algumas aproximaccedilotildees1048707 Prefetch Branch Target1048707 Quando um ramo condicional eacute reconhecido para aleacutem da instruccedilatildeo seguinte tambeacutem a instruccedilatildeo-alvo de salto eacute adquirida e salvaguardada ateacute a condiccedilatildeo ser resolvida1048707 Seja o desvio tomado ou natildeo a proacutexima instruccedilatildeo a ser executada teraacute sido buscada anticipadatmanteEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Multiple Stream1048707 Perante uma instruccedilatildeo de salto eacute feita uma escolha de uma de duas instruccedilotildees podendo ser feita uma escolha errada

9

1048707 Para resolver este problema uma abordagem (do tipo lsquoforccedila brutarsquo) consiste em replicar os estaacutegios iniciais do pipeline permitindo a aquisiccedilatildeo de ambas as instruccedilotildees utilizando duas streams

1048707 Problemas1048707 Atrasos de construccedilatildeo no acesso aos registos e a memoacuteria1048707 Instruccedilotildees de salto adicionais podem entrar no pipeline antes da decisatildeo ser tomada Cada instruccedilatildeo necessita de uma stream adicional1048707 Exemplos1048707 IBM 370168 e 3033Estrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Loop Buffer1048707 Este buffer eacute uma memoacuteria pequena de alta velocidade mantida pelo estaacutegio de aquisiccedilatildeo do pipeline que contem as n instruccedilotildees mais recentemente adquiridas em sequecircncia1048707 Reduz o acesso a memoacuteria central1048707 Util quando existem pequenos ciclos num programa1048707 Estaacute optimizado para a execuccedilatildeo de ciclos e tem um funcionamento semelhante ao de uma memoacuteria cache1048707 Delayed Branch1048707 Consiste em ajustar automaticamente as instruccedilotildees do programapor forma a que as instruccedilotildees de ramificaccedilatildeo decorram mais tarde do que o desejadoEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Branch Prediction1048707 Algumas teacutecnicas podem ser utilizadas para prever umaramificaccedilatildeo1048707 Predict never taken1048707 Predict always taken (gt50)1048707 Predict by opcode taken (Taxas de gt75 de sucesso)1048707 TakenNot taken switch1048707 Branch history table1048707 As 3 primeiras satildeo estaacuteticas e natildeo dependem da execuccedilatildeo (baseiam-se em estudos probabiliacutesticos)1048707 As 2 uacuteltimas satildeo dinacircmicas e dependem da execuccedilatildeo histoacuterica do programa quer atraveacutes de bits associados agraves instruccedilotildees quer mantendo um tabela para as instruccedilotildees executadas recentemente

10

Page 4: Estrutura e Função Do Cpu

1048707 Eacute necessaacuterio que o computador guarde temporariamente os dados enquanto eacute executada uma instruccedilatildeo Por outras palavras eacute necessaacuterio que o CPU tenha uma pequena memoacuteria interna1048707 Para aleacutem dos registos internos do processador onde seratildeo alocadas as instruccedilotildees e os dados de memoacuteria temporariamente O CPU eacute constituiacutedo por uma Unidade Loacutegica Aritmeacutetica e umaUnidade de Controlo

Organizaccedilatildeo Interna da CPU1048707 A ALU (Unidade Loacutegica Aritmeacutetica) processa e calcula os dados1048707 A Unidade de Controlo controla o fluxo de dados e as instruccedilotildees enviadas e recebidas do CPU e controla tambeacutem as operaccedilotildees da ALU1048707 Na figura seguinte podemos visualizar a constituiccedilatildeo interna do CPU Para aleacutem da ALU dos registos eUnidade de Controlo as interligaccedilotildees entre os vaacuterios componentes eacute feita pelo Bus do CPU

Organizaccedilatildeo Interna da CPUCPU Bus RegistosControloALUOrganizaccedilatildeo Interna da CPU1048707 Veja-se as grandes semelhanccedilas entre as partes constituintes do CPU e a estrutura dos computadores1048707 Computador= CPU IO Memoacuteria1048707 CPU= Unidade de Controlo ALU RegistosOrganizaccedilatildeo Interna da CPU1048707 A ALU e todos os registos do CPU estatildeo interligados atraveacutes de um bus interno1048707 As portas e os sinais de controlo servem para mover os dados de e para o bus em cada registo1048707 Sinais de controlo adicionais controlam a transferecircncia de e para o bus do sistema e operaccedilotildees da ALU1048707 Quando estiverem envolvidas operaccedilotildees na ALU eacute necessaacuterio envolver mais registos1048707 Quando uma operaccedilatildeo envolvendo dois operandos for executada um pode ser obtido do bus interno mas o outro tem de ser obtido de uma outra origemOrganizaccedilatildeo Interna da CPU1048707 O AC (acumulator) poderia ser usado para o efeito mas iria limitar a flexibilidade do sistema e natildeo iria funcionar com o CPU na situaccedilatildeo em que se estaacute a operar com vaacuterios registos1048707 A ALU eacute um circuito combinacional sem capacidade de memoacuteria Assim quando os sinais de controlo activam as funccedilotildees da ALU os inputs da ALU satildeo transferidos em output1048707 Por esta razatildeo o output natildeo pode ser ligado directamente ao bus porque senatildeo entraria em feedback com o inputOrganizaccedilatildeo Interna da CPU1048707 Para isto utilizaremos um registo (Z) que arquivaraacute temporariamente o output

4

1048707 Com a utilizaccedilatildeo destes novos registos uma operaccedilatildeo para adicionar um valor ao AC desde memoacuteria compreenderia os seguintes passos1048707 A1 MAR 1048707 IR (Address)1048707 A2 MBR 1048707 Memory1048707 A3 Y 1048707 MBR1048707 A4 Z 1048707 (AC) + Y1048707 A5 AC 1048707Z1048707 Para aleacutem da utilizaccedilatildeo destes registos satildeo possiacuteveis outras organizaccedilotildeesOrganizaccedilatildeo Interna da CPU1048707 De uma maneira geral satildeo usados os bus internos ou conjuntos destes bus(es)1048707 A utilizaccedilatildeo de Paths comuns simplificam a ligaccedilatildeo e o controlo do CPU1048707 Uma outra razatildeo para a utilizaccedilatildeo do bus interno eacute a poupanccedila do espaccedilo especialmente em microprocessadores onde o espaccedilo ocupado por registos tem de ser minimizadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 A CPU tem de ter algum espaccedilo para trabalhar(armazenamento temporaacuterio)1048707 Este espaccedilo eacute constituiacutedo por registos1048707 O numero e funccedilotildees dos registos varia de processador para processador1048707 Constitui uma das maiores decisotildees a tomar no desenho de um processador1048707 Constitui o topo da hierarquia da memoacuteriaEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os registos agrupam-se em dois grandes grupos1048707 Registos visiacuteveis ao utilizador1048707 Registos de controlo de estado1048707 Os registos visiacuteveis ao utilizador permitem ao programador minimizar as referecircncias agrave memoacuteria principal e podem ser caracterizados nas seguintes categorias1048707 Registos de Uso Geral1048707 Registos de Dados1048707 Registos de Endereccedilo1048707 Coacutedigos de condiccedilatildeoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Registos visiacuteveis ao utilizador1048707 Registos de Uso Geral - podem ser atribuiacutedos a uma variedade de funccedilotildees pelo programador normalmente podem conter operandos para qualquer coacutedigo de operaccedilatildeo1048707 Registos de Dados - soacute podem ser utilizados para guardar dados e natildeo podem ser utilizados em operaccedilotildees de caacutelculo de endereccedilos1048707 Registos de Endereccedilo - podem ser de uso geral ou podem estar vocacionados para um modo de endereccedilamento particular (ex Stack pointer)1048707 Coacutedigos de condiccedilatildeo - tambeacutem chamados de flags geralmente agrupados em um ou mais registos que satildeo alterados apenas pelo CPU dependendo da uacuteltima operaccedilatildeo loacutegica ou aritmeacuteticaEstrutura e funccedilotildees da CPUExemplo de Coacutedigos de Condiccedilatildeo

5

1048707 Conjunto de bits individuais1048707 eg o resultado da ultima operaccedilatildeo foi zero1048707 Podem ser lidos (implicitamente) por programas1048707 eg Salta se zero1048707 Natildeo pode (usualmente) ser estabelecido por programasEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os Registos de Controlo de Estado satildeo utilizados pela unidade de controlo para controlar a operaccedilatildeo doCPU e por programas privilegiados (sistema operativo) para controlar a execuccedilatildeo de outros programas1048707 Como exemplos destes registos temos os quatro registos essenciais agrave execuccedilatildeo de instruccedilotildees1048707 Program Counter (PC) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Instruction Register (IR) - conteacutem a instruccedilatildeo adquirida mais recentemente1048707 Memory Access Register (MAR) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Memory Buffer Register (MBR) - conteacutem uma palavra de dadosa ser escrita em memoacuteria ou a palavra lida mais recentementeEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Todos os CPU(s) incluem um registo ou conjunto de registos normalmente chamado Program Status Word(PSW) que contem informaccedilatildeo de estado1048707 sign - conteacutem o sinal da uacuteltima operaccedilatildeo aritmeacutetica1048707 zero - activo quando o resultado eacute zero1048707 carry - activo se uma comparaccedilatildeo loacutegica for verdadeira1048707 overflow - indica overflow aritmeacutetico1048707 interrupt enabledisable - liga e desliga as interrupccedilotildees1048707 supervisor - indica se o CPU estaacute a executar em modo privilegiadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Quantos de Registos1048707 Entre 8 e 321048707 Menos = mais referencias a memoacuteria1048707 Tamanho dos Registos1048707 Suficientemente grande para armazenar um endereccedilo completo1048707 Suficientemente grande para armazenar um palavra1048707 Ersquo muitas vezes possiacutevel combinar dois registos de dados1048707 Programaccedilatildeo em C1048707 double int a1048707 long int aEstrutura e funccedilotildees da CPUExemplo de Organizaccedilatildeo de RegistosEstrutura e funccedilotildees da CPUCiclo de Instruccedilatildeo1048707 Um ciclo de instruccedilatildeo inclui os seguintes subciclos1048707 Aquisiccedilatildeo - lecirc a proacutexima instruccedilatildeo da memoacuteria para oCPU1048707 Execuccedilatildeo - interpreta o opcode e executa a respectiva operaccedilatildeo

6

1048707 Interrupccedilatildeo - se as interrupccedilotildees estiverem activas e no caso de haver um interrupccedilatildeo a informaccedilatildeo eacute salvaguardada no estado em que se encontraEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUFluxo de Dados1048707 A sequecircncia exacta dos eventos durante um ciclo de instruccedilatildeo depende do desenho do CPU1048707 Apoacutes o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo de IR e se este tiver um operando em endereccedilamento indirecto executaum ciclo indirecto1048707 Analogamente o ciclo de interrupccedilatildeo tem um comportamento simples e previsiacutevelEstrutura e funccedilotildees da CPUCiclo de Aquisiccedilatildeo1048707 Durante um ciclo de aquisiccedilatildeo uma instruccedilatildeo eacute lida da memoacuteria1048707 O PC contem o endereccedilo da proacutexima instruccedilatildeo a ser adquirida1048707 Este endereccedilo eacute copiado para o MAR e colocado no bus de endereccedilos1048707 A unidade de controlo faz um pedido de leitura de memoacuteria e o resultado eacute1048707 Colocado no bus de dados1048707 Copiado para o MBR1048707 Movido para o IR1048707 Entretanto o PC eacute incrementado preparando-se o proacuteximo ciclo de aquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo de AquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo Indirecto1048707 A aquisiccedilatildeo de um endereccedilo indirecto introduz um novo subciclo de instruccedilatildeo que executa os acessos agrave memoacuteria suplementares1048707 Nesta situaccedilatildeo a principal linha de actividade consiste na alternacircncia entre actividades de aquisiccedilatildeo de instruccedilotildees e actividades de instruccedilatildeo e execuccedilotildees1048707 Depois de uma instruccedilatildeo ser adquirida eacute examinada com o intuito de se determinar se ocorreu algum endereccedilamento indirecto1048707 Em caso afirmativo os operandos satildeo adquiridos usando o endereccedilamento indirecto1048707 Logo depois e antes da aquisiccedilatildeo da proacutexima instruccedilatildeo eacute verificado o estado das interrupccedilotildees

Estrutura e funccedilotildees da CPUCiclo Indirecto1048707 Uma vez acabado o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo do IR para determinar se estes contem um operando de endereccedilamento indirecto1048707 Neste caso eacute realizado um ciclo indirecto1048707 Os n bits mais significativos do MBR que contecircm o endereccedilo de referecircncia satildeo transferidos para o MAR

7

1048707 A unidade de controlo faz uma leitura agrave memoacuteria para obter o endereccedilo desejado do operando para o MBR1048707 Os ciclos indirectos podem envolver transferecircncia de dados entre os registos leitura ou escrita em memoacuteria ou IO eou processamento na ALUEstrutura e funccedilotildees da CPUCiclo de Interrupccedilatildeo1048707 Tanto os ciclos de aquisiccedilatildeo como os ciclos indirectos satildeo simples e previsiacuteveis1048707 No caso dos ciclos de interrupccedilatildeo sendo estes tambeacutem simples e previsiacuteveis o valor do PC eacute salvaguardado podendo o CPU retomar a actividade que estava a desenvolver logo apoacutes a interrupccedilatildeo1048707 O valor do PC eacute transferido para o MBR e escrito em memoacuteria1048707 O local reservado em memoacuteria para este efeito eacute carregado noMAR a partir da unidade de controlo1048707 O PC eacute carregado com o endereccedilo da rotina de interrupccedilatildeo como resultado o proacuteximo ciclo de instruccedilatildeo iraacute comeccedilar na instruccedilatildeo apropriadaEstrutura e funccedilotildees da CPUCiclo de InterrupccedilatildeoEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Para aleacutem dos componentes electroacutenicos a eficiecircncia dos processadores pode ser aumentada atraveacutes da proacutepria organizaccedilatildeo dos elementos constituintes do CPU1048707 Podemos por exemplo utilizar vaacuterios registos eou utilizar memoacuteria cache1048707 Uma teacutecnica que vai permitir aumentar a eficiecircncia do processador tem a ver com a utilizaccedilatildeo do processamento pipeline1048707 A estrateacutegia usada eacute semelhante a uma linha de produccedilatildeo de uma faacutebrica1048707 Este processo consiste em trabalhar os produtos nas vaacuterias fases de fabrico simultaneamente permitindo a decomposiccedilatildeo de instruccedilotildees complexas em outras mais simplesEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Se reconhecermos que as instruccedilotildees satildeo executadas por fases (por exemplo duas aquisiccedilatildeo e execuccedilatildeo) podemos explicar o conceito pipelineem duas fases independentes1048707 A primeira fase consiste em adquirir uma instruccedilatildeo utilizando para tal os ciclos de memoacuteria deixados livres pela segunda fase e colocaacute-la num buffer1048707 A segunda fase executar a instruccedilatildeo adquirida na 1ordf fase disponiacutevel no bufferEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Em principio este processo permitiraacute diminuir o tempo de execuccedilatildeo de uma instruccedilatildeo (apoacutes o enchimento do pipeline) no entanto este ganho de performance raramente eacute conseguido por duas razotildees1048707 O tempo de execuccedilatildeo geralmente seraacute maior que o tempo de aquisiccedilatildeo desequilibrando o pipeline (a execuccedilatildeo envolve leitura e escrita nos operandos)1048707 Os saltos condicionais tornam o endereccedilo da proacutexima instruccedilatildeo a executar desconhecido levando a que a fase de aquisiccedilatildeo tenha de esperar ateacute que o endereccedilo seja conhecido

8

1048707 A perca de tempo provocada pela segunda razatildeo pode ser minimizada tentando adivinhar a proacutexima instruccedilatildeo a executar (por exemplo o seguinte)

Estrutura e funccedilotildees da CPUProcessamento Pipeline1048707 De forma a aumentar a performance do sistema o pipeline tem de ter mais estaacutegios e de duraccedilatildeo igual assim as instruccedilotildees podem ser decompostas em1048707 Aquisiccedilatildeo da instruccedilatildeo (FI ndash Fetch Instruction)-leitura da proacutexima instruccedilatildeo a colocar no buffer1048707 Descodificaccedilatildeo da instruccedilatildeo (DI ndash Decode Instruction)1048707 Caacutelculo dos operandos (CO ndash Calculation Operand)1048707 Aquisiccedilatildeo dos operandos (FO ndash Fetch Operand)1048707 Execuccedilatildeo das Instruccedilotildees (EI ndash Execute Instruction)1048707 Escrita dos Operandos (WO ndash Write Operand)Estrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Pode parecer que quantos mais estaacutegios o pipeline tiver mais rapidamente as instruccedilotildees satildeo executadas no entanto existem dois factores que frustam esta expectativa1048707 Em cada estaacutegio do pipeline existe um overhead resultante do movimento do buffer para buffer e da preparaccedilatildeo das funccedilotildees aprovado pela dependecircncia loacutegica das instruccedilotildees (acessos agrave memoacuteria e saltos)1048707 A loacutegica do controlo necessaacuteria para controlar as dependecircncias da memoacuteria para optimizar o pipeline aumenta consideravelmente com o nordm de estaacutegios Isto pode levar a uma situaccedilatildeo em que a loacutegica do controlo eacute mais complexa que o nuacutemero de estados a serem controladosEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 O problema principal no desenho de um pipeline de instruccedilotildees eacute em assegurar um fluxo constante de instruccedilotildees nos estaacutegios iniciais1048707 O impedimento principal eacute as instruccedilotildees de salto condicional1048707 Para tentar resolver este problema satildeo utilizadas algumas aproximaccedilotildees1048707 Prefetch Branch Target1048707 Quando um ramo condicional eacute reconhecido para aleacutem da instruccedilatildeo seguinte tambeacutem a instruccedilatildeo-alvo de salto eacute adquirida e salvaguardada ateacute a condiccedilatildeo ser resolvida1048707 Seja o desvio tomado ou natildeo a proacutexima instruccedilatildeo a ser executada teraacute sido buscada anticipadatmanteEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Multiple Stream1048707 Perante uma instruccedilatildeo de salto eacute feita uma escolha de uma de duas instruccedilotildees podendo ser feita uma escolha errada

9

1048707 Para resolver este problema uma abordagem (do tipo lsquoforccedila brutarsquo) consiste em replicar os estaacutegios iniciais do pipeline permitindo a aquisiccedilatildeo de ambas as instruccedilotildees utilizando duas streams

1048707 Problemas1048707 Atrasos de construccedilatildeo no acesso aos registos e a memoacuteria1048707 Instruccedilotildees de salto adicionais podem entrar no pipeline antes da decisatildeo ser tomada Cada instruccedilatildeo necessita de uma stream adicional1048707 Exemplos1048707 IBM 370168 e 3033Estrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Loop Buffer1048707 Este buffer eacute uma memoacuteria pequena de alta velocidade mantida pelo estaacutegio de aquisiccedilatildeo do pipeline que contem as n instruccedilotildees mais recentemente adquiridas em sequecircncia1048707 Reduz o acesso a memoacuteria central1048707 Util quando existem pequenos ciclos num programa1048707 Estaacute optimizado para a execuccedilatildeo de ciclos e tem um funcionamento semelhante ao de uma memoacuteria cache1048707 Delayed Branch1048707 Consiste em ajustar automaticamente as instruccedilotildees do programapor forma a que as instruccedilotildees de ramificaccedilatildeo decorram mais tarde do que o desejadoEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Branch Prediction1048707 Algumas teacutecnicas podem ser utilizadas para prever umaramificaccedilatildeo1048707 Predict never taken1048707 Predict always taken (gt50)1048707 Predict by opcode taken (Taxas de gt75 de sucesso)1048707 TakenNot taken switch1048707 Branch history table1048707 As 3 primeiras satildeo estaacuteticas e natildeo dependem da execuccedilatildeo (baseiam-se em estudos probabiliacutesticos)1048707 As 2 uacuteltimas satildeo dinacircmicas e dependem da execuccedilatildeo histoacuterica do programa quer atraveacutes de bits associados agraves instruccedilotildees quer mantendo um tabela para as instruccedilotildees executadas recentemente

10

Page 5: Estrutura e Função Do Cpu

1048707 Com a utilizaccedilatildeo destes novos registos uma operaccedilatildeo para adicionar um valor ao AC desde memoacuteria compreenderia os seguintes passos1048707 A1 MAR 1048707 IR (Address)1048707 A2 MBR 1048707 Memory1048707 A3 Y 1048707 MBR1048707 A4 Z 1048707 (AC) + Y1048707 A5 AC 1048707Z1048707 Para aleacutem da utilizaccedilatildeo destes registos satildeo possiacuteveis outras organizaccedilotildeesOrganizaccedilatildeo Interna da CPU1048707 De uma maneira geral satildeo usados os bus internos ou conjuntos destes bus(es)1048707 A utilizaccedilatildeo de Paths comuns simplificam a ligaccedilatildeo e o controlo do CPU1048707 Uma outra razatildeo para a utilizaccedilatildeo do bus interno eacute a poupanccedila do espaccedilo especialmente em microprocessadores onde o espaccedilo ocupado por registos tem de ser minimizadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 A CPU tem de ter algum espaccedilo para trabalhar(armazenamento temporaacuterio)1048707 Este espaccedilo eacute constituiacutedo por registos1048707 O numero e funccedilotildees dos registos varia de processador para processador1048707 Constitui uma das maiores decisotildees a tomar no desenho de um processador1048707 Constitui o topo da hierarquia da memoacuteriaEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os registos agrupam-se em dois grandes grupos1048707 Registos visiacuteveis ao utilizador1048707 Registos de controlo de estado1048707 Os registos visiacuteveis ao utilizador permitem ao programador minimizar as referecircncias agrave memoacuteria principal e podem ser caracterizados nas seguintes categorias1048707 Registos de Uso Geral1048707 Registos de Dados1048707 Registos de Endereccedilo1048707 Coacutedigos de condiccedilatildeoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Registos visiacuteveis ao utilizador1048707 Registos de Uso Geral - podem ser atribuiacutedos a uma variedade de funccedilotildees pelo programador normalmente podem conter operandos para qualquer coacutedigo de operaccedilatildeo1048707 Registos de Dados - soacute podem ser utilizados para guardar dados e natildeo podem ser utilizados em operaccedilotildees de caacutelculo de endereccedilos1048707 Registos de Endereccedilo - podem ser de uso geral ou podem estar vocacionados para um modo de endereccedilamento particular (ex Stack pointer)1048707 Coacutedigos de condiccedilatildeo - tambeacutem chamados de flags geralmente agrupados em um ou mais registos que satildeo alterados apenas pelo CPU dependendo da uacuteltima operaccedilatildeo loacutegica ou aritmeacuteticaEstrutura e funccedilotildees da CPUExemplo de Coacutedigos de Condiccedilatildeo

5

1048707 Conjunto de bits individuais1048707 eg o resultado da ultima operaccedilatildeo foi zero1048707 Podem ser lidos (implicitamente) por programas1048707 eg Salta se zero1048707 Natildeo pode (usualmente) ser estabelecido por programasEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os Registos de Controlo de Estado satildeo utilizados pela unidade de controlo para controlar a operaccedilatildeo doCPU e por programas privilegiados (sistema operativo) para controlar a execuccedilatildeo de outros programas1048707 Como exemplos destes registos temos os quatro registos essenciais agrave execuccedilatildeo de instruccedilotildees1048707 Program Counter (PC) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Instruction Register (IR) - conteacutem a instruccedilatildeo adquirida mais recentemente1048707 Memory Access Register (MAR) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Memory Buffer Register (MBR) - conteacutem uma palavra de dadosa ser escrita em memoacuteria ou a palavra lida mais recentementeEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Todos os CPU(s) incluem um registo ou conjunto de registos normalmente chamado Program Status Word(PSW) que contem informaccedilatildeo de estado1048707 sign - conteacutem o sinal da uacuteltima operaccedilatildeo aritmeacutetica1048707 zero - activo quando o resultado eacute zero1048707 carry - activo se uma comparaccedilatildeo loacutegica for verdadeira1048707 overflow - indica overflow aritmeacutetico1048707 interrupt enabledisable - liga e desliga as interrupccedilotildees1048707 supervisor - indica se o CPU estaacute a executar em modo privilegiadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Quantos de Registos1048707 Entre 8 e 321048707 Menos = mais referencias a memoacuteria1048707 Tamanho dos Registos1048707 Suficientemente grande para armazenar um endereccedilo completo1048707 Suficientemente grande para armazenar um palavra1048707 Ersquo muitas vezes possiacutevel combinar dois registos de dados1048707 Programaccedilatildeo em C1048707 double int a1048707 long int aEstrutura e funccedilotildees da CPUExemplo de Organizaccedilatildeo de RegistosEstrutura e funccedilotildees da CPUCiclo de Instruccedilatildeo1048707 Um ciclo de instruccedilatildeo inclui os seguintes subciclos1048707 Aquisiccedilatildeo - lecirc a proacutexima instruccedilatildeo da memoacuteria para oCPU1048707 Execuccedilatildeo - interpreta o opcode e executa a respectiva operaccedilatildeo

6

1048707 Interrupccedilatildeo - se as interrupccedilotildees estiverem activas e no caso de haver um interrupccedilatildeo a informaccedilatildeo eacute salvaguardada no estado em que se encontraEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUFluxo de Dados1048707 A sequecircncia exacta dos eventos durante um ciclo de instruccedilatildeo depende do desenho do CPU1048707 Apoacutes o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo de IR e se este tiver um operando em endereccedilamento indirecto executaum ciclo indirecto1048707 Analogamente o ciclo de interrupccedilatildeo tem um comportamento simples e previsiacutevelEstrutura e funccedilotildees da CPUCiclo de Aquisiccedilatildeo1048707 Durante um ciclo de aquisiccedilatildeo uma instruccedilatildeo eacute lida da memoacuteria1048707 O PC contem o endereccedilo da proacutexima instruccedilatildeo a ser adquirida1048707 Este endereccedilo eacute copiado para o MAR e colocado no bus de endereccedilos1048707 A unidade de controlo faz um pedido de leitura de memoacuteria e o resultado eacute1048707 Colocado no bus de dados1048707 Copiado para o MBR1048707 Movido para o IR1048707 Entretanto o PC eacute incrementado preparando-se o proacuteximo ciclo de aquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo de AquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo Indirecto1048707 A aquisiccedilatildeo de um endereccedilo indirecto introduz um novo subciclo de instruccedilatildeo que executa os acessos agrave memoacuteria suplementares1048707 Nesta situaccedilatildeo a principal linha de actividade consiste na alternacircncia entre actividades de aquisiccedilatildeo de instruccedilotildees e actividades de instruccedilatildeo e execuccedilotildees1048707 Depois de uma instruccedilatildeo ser adquirida eacute examinada com o intuito de se determinar se ocorreu algum endereccedilamento indirecto1048707 Em caso afirmativo os operandos satildeo adquiridos usando o endereccedilamento indirecto1048707 Logo depois e antes da aquisiccedilatildeo da proacutexima instruccedilatildeo eacute verificado o estado das interrupccedilotildees

Estrutura e funccedilotildees da CPUCiclo Indirecto1048707 Uma vez acabado o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo do IR para determinar se estes contem um operando de endereccedilamento indirecto1048707 Neste caso eacute realizado um ciclo indirecto1048707 Os n bits mais significativos do MBR que contecircm o endereccedilo de referecircncia satildeo transferidos para o MAR

7

1048707 A unidade de controlo faz uma leitura agrave memoacuteria para obter o endereccedilo desejado do operando para o MBR1048707 Os ciclos indirectos podem envolver transferecircncia de dados entre os registos leitura ou escrita em memoacuteria ou IO eou processamento na ALUEstrutura e funccedilotildees da CPUCiclo de Interrupccedilatildeo1048707 Tanto os ciclos de aquisiccedilatildeo como os ciclos indirectos satildeo simples e previsiacuteveis1048707 No caso dos ciclos de interrupccedilatildeo sendo estes tambeacutem simples e previsiacuteveis o valor do PC eacute salvaguardado podendo o CPU retomar a actividade que estava a desenvolver logo apoacutes a interrupccedilatildeo1048707 O valor do PC eacute transferido para o MBR e escrito em memoacuteria1048707 O local reservado em memoacuteria para este efeito eacute carregado noMAR a partir da unidade de controlo1048707 O PC eacute carregado com o endereccedilo da rotina de interrupccedilatildeo como resultado o proacuteximo ciclo de instruccedilatildeo iraacute comeccedilar na instruccedilatildeo apropriadaEstrutura e funccedilotildees da CPUCiclo de InterrupccedilatildeoEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Para aleacutem dos componentes electroacutenicos a eficiecircncia dos processadores pode ser aumentada atraveacutes da proacutepria organizaccedilatildeo dos elementos constituintes do CPU1048707 Podemos por exemplo utilizar vaacuterios registos eou utilizar memoacuteria cache1048707 Uma teacutecnica que vai permitir aumentar a eficiecircncia do processador tem a ver com a utilizaccedilatildeo do processamento pipeline1048707 A estrateacutegia usada eacute semelhante a uma linha de produccedilatildeo de uma faacutebrica1048707 Este processo consiste em trabalhar os produtos nas vaacuterias fases de fabrico simultaneamente permitindo a decomposiccedilatildeo de instruccedilotildees complexas em outras mais simplesEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Se reconhecermos que as instruccedilotildees satildeo executadas por fases (por exemplo duas aquisiccedilatildeo e execuccedilatildeo) podemos explicar o conceito pipelineem duas fases independentes1048707 A primeira fase consiste em adquirir uma instruccedilatildeo utilizando para tal os ciclos de memoacuteria deixados livres pela segunda fase e colocaacute-la num buffer1048707 A segunda fase executar a instruccedilatildeo adquirida na 1ordf fase disponiacutevel no bufferEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Em principio este processo permitiraacute diminuir o tempo de execuccedilatildeo de uma instruccedilatildeo (apoacutes o enchimento do pipeline) no entanto este ganho de performance raramente eacute conseguido por duas razotildees1048707 O tempo de execuccedilatildeo geralmente seraacute maior que o tempo de aquisiccedilatildeo desequilibrando o pipeline (a execuccedilatildeo envolve leitura e escrita nos operandos)1048707 Os saltos condicionais tornam o endereccedilo da proacutexima instruccedilatildeo a executar desconhecido levando a que a fase de aquisiccedilatildeo tenha de esperar ateacute que o endereccedilo seja conhecido

8

1048707 A perca de tempo provocada pela segunda razatildeo pode ser minimizada tentando adivinhar a proacutexima instruccedilatildeo a executar (por exemplo o seguinte)

Estrutura e funccedilotildees da CPUProcessamento Pipeline1048707 De forma a aumentar a performance do sistema o pipeline tem de ter mais estaacutegios e de duraccedilatildeo igual assim as instruccedilotildees podem ser decompostas em1048707 Aquisiccedilatildeo da instruccedilatildeo (FI ndash Fetch Instruction)-leitura da proacutexima instruccedilatildeo a colocar no buffer1048707 Descodificaccedilatildeo da instruccedilatildeo (DI ndash Decode Instruction)1048707 Caacutelculo dos operandos (CO ndash Calculation Operand)1048707 Aquisiccedilatildeo dos operandos (FO ndash Fetch Operand)1048707 Execuccedilatildeo das Instruccedilotildees (EI ndash Execute Instruction)1048707 Escrita dos Operandos (WO ndash Write Operand)Estrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Pode parecer que quantos mais estaacutegios o pipeline tiver mais rapidamente as instruccedilotildees satildeo executadas no entanto existem dois factores que frustam esta expectativa1048707 Em cada estaacutegio do pipeline existe um overhead resultante do movimento do buffer para buffer e da preparaccedilatildeo das funccedilotildees aprovado pela dependecircncia loacutegica das instruccedilotildees (acessos agrave memoacuteria e saltos)1048707 A loacutegica do controlo necessaacuteria para controlar as dependecircncias da memoacuteria para optimizar o pipeline aumenta consideravelmente com o nordm de estaacutegios Isto pode levar a uma situaccedilatildeo em que a loacutegica do controlo eacute mais complexa que o nuacutemero de estados a serem controladosEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 O problema principal no desenho de um pipeline de instruccedilotildees eacute em assegurar um fluxo constante de instruccedilotildees nos estaacutegios iniciais1048707 O impedimento principal eacute as instruccedilotildees de salto condicional1048707 Para tentar resolver este problema satildeo utilizadas algumas aproximaccedilotildees1048707 Prefetch Branch Target1048707 Quando um ramo condicional eacute reconhecido para aleacutem da instruccedilatildeo seguinte tambeacutem a instruccedilatildeo-alvo de salto eacute adquirida e salvaguardada ateacute a condiccedilatildeo ser resolvida1048707 Seja o desvio tomado ou natildeo a proacutexima instruccedilatildeo a ser executada teraacute sido buscada anticipadatmanteEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Multiple Stream1048707 Perante uma instruccedilatildeo de salto eacute feita uma escolha de uma de duas instruccedilotildees podendo ser feita uma escolha errada

9

1048707 Para resolver este problema uma abordagem (do tipo lsquoforccedila brutarsquo) consiste em replicar os estaacutegios iniciais do pipeline permitindo a aquisiccedilatildeo de ambas as instruccedilotildees utilizando duas streams

1048707 Problemas1048707 Atrasos de construccedilatildeo no acesso aos registos e a memoacuteria1048707 Instruccedilotildees de salto adicionais podem entrar no pipeline antes da decisatildeo ser tomada Cada instruccedilatildeo necessita de uma stream adicional1048707 Exemplos1048707 IBM 370168 e 3033Estrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Loop Buffer1048707 Este buffer eacute uma memoacuteria pequena de alta velocidade mantida pelo estaacutegio de aquisiccedilatildeo do pipeline que contem as n instruccedilotildees mais recentemente adquiridas em sequecircncia1048707 Reduz o acesso a memoacuteria central1048707 Util quando existem pequenos ciclos num programa1048707 Estaacute optimizado para a execuccedilatildeo de ciclos e tem um funcionamento semelhante ao de uma memoacuteria cache1048707 Delayed Branch1048707 Consiste em ajustar automaticamente as instruccedilotildees do programapor forma a que as instruccedilotildees de ramificaccedilatildeo decorram mais tarde do que o desejadoEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Branch Prediction1048707 Algumas teacutecnicas podem ser utilizadas para prever umaramificaccedilatildeo1048707 Predict never taken1048707 Predict always taken (gt50)1048707 Predict by opcode taken (Taxas de gt75 de sucesso)1048707 TakenNot taken switch1048707 Branch history table1048707 As 3 primeiras satildeo estaacuteticas e natildeo dependem da execuccedilatildeo (baseiam-se em estudos probabiliacutesticos)1048707 As 2 uacuteltimas satildeo dinacircmicas e dependem da execuccedilatildeo histoacuterica do programa quer atraveacutes de bits associados agraves instruccedilotildees quer mantendo um tabela para as instruccedilotildees executadas recentemente

10

Page 6: Estrutura e Função Do Cpu

1048707 Conjunto de bits individuais1048707 eg o resultado da ultima operaccedilatildeo foi zero1048707 Podem ser lidos (implicitamente) por programas1048707 eg Salta se zero1048707 Natildeo pode (usualmente) ser estabelecido por programasEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Os Registos de Controlo de Estado satildeo utilizados pela unidade de controlo para controlar a operaccedilatildeo doCPU e por programas privilegiados (sistema operativo) para controlar a execuccedilatildeo de outros programas1048707 Como exemplos destes registos temos os quatro registos essenciais agrave execuccedilatildeo de instruccedilotildees1048707 Program Counter (PC) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Instruction Register (IR) - conteacutem a instruccedilatildeo adquirida mais recentemente1048707 Memory Access Register (MAR) - conteacutem o endereccedilo de uma posiccedilatildeo de memoacuteria1048707 Memory Buffer Register (MBR) - conteacutem uma palavra de dadosa ser escrita em memoacuteria ou a palavra lida mais recentementeEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Todos os CPU(s) incluem um registo ou conjunto de registos normalmente chamado Program Status Word(PSW) que contem informaccedilatildeo de estado1048707 sign - conteacutem o sinal da uacuteltima operaccedilatildeo aritmeacutetica1048707 zero - activo quando o resultado eacute zero1048707 carry - activo se uma comparaccedilatildeo loacutegica for verdadeira1048707 overflow - indica overflow aritmeacutetico1048707 interrupt enabledisable - liga e desliga as interrupccedilotildees1048707 supervisor - indica se o CPU estaacute a executar em modo privilegiadoEstrutura e funccedilotildees da CPUOrganizaccedilatildeo dos Registos1048707 Quantos de Registos1048707 Entre 8 e 321048707 Menos = mais referencias a memoacuteria1048707 Tamanho dos Registos1048707 Suficientemente grande para armazenar um endereccedilo completo1048707 Suficientemente grande para armazenar um palavra1048707 Ersquo muitas vezes possiacutevel combinar dois registos de dados1048707 Programaccedilatildeo em C1048707 double int a1048707 long int aEstrutura e funccedilotildees da CPUExemplo de Organizaccedilatildeo de RegistosEstrutura e funccedilotildees da CPUCiclo de Instruccedilatildeo1048707 Um ciclo de instruccedilatildeo inclui os seguintes subciclos1048707 Aquisiccedilatildeo - lecirc a proacutexima instruccedilatildeo da memoacuteria para oCPU1048707 Execuccedilatildeo - interpreta o opcode e executa a respectiva operaccedilatildeo

6

1048707 Interrupccedilatildeo - se as interrupccedilotildees estiverem activas e no caso de haver um interrupccedilatildeo a informaccedilatildeo eacute salvaguardada no estado em que se encontraEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUFluxo de Dados1048707 A sequecircncia exacta dos eventos durante um ciclo de instruccedilatildeo depende do desenho do CPU1048707 Apoacutes o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo de IR e se este tiver um operando em endereccedilamento indirecto executaum ciclo indirecto1048707 Analogamente o ciclo de interrupccedilatildeo tem um comportamento simples e previsiacutevelEstrutura e funccedilotildees da CPUCiclo de Aquisiccedilatildeo1048707 Durante um ciclo de aquisiccedilatildeo uma instruccedilatildeo eacute lida da memoacuteria1048707 O PC contem o endereccedilo da proacutexima instruccedilatildeo a ser adquirida1048707 Este endereccedilo eacute copiado para o MAR e colocado no bus de endereccedilos1048707 A unidade de controlo faz um pedido de leitura de memoacuteria e o resultado eacute1048707 Colocado no bus de dados1048707 Copiado para o MBR1048707 Movido para o IR1048707 Entretanto o PC eacute incrementado preparando-se o proacuteximo ciclo de aquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo de AquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo Indirecto1048707 A aquisiccedilatildeo de um endereccedilo indirecto introduz um novo subciclo de instruccedilatildeo que executa os acessos agrave memoacuteria suplementares1048707 Nesta situaccedilatildeo a principal linha de actividade consiste na alternacircncia entre actividades de aquisiccedilatildeo de instruccedilotildees e actividades de instruccedilatildeo e execuccedilotildees1048707 Depois de uma instruccedilatildeo ser adquirida eacute examinada com o intuito de se determinar se ocorreu algum endereccedilamento indirecto1048707 Em caso afirmativo os operandos satildeo adquiridos usando o endereccedilamento indirecto1048707 Logo depois e antes da aquisiccedilatildeo da proacutexima instruccedilatildeo eacute verificado o estado das interrupccedilotildees

Estrutura e funccedilotildees da CPUCiclo Indirecto1048707 Uma vez acabado o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo do IR para determinar se estes contem um operando de endereccedilamento indirecto1048707 Neste caso eacute realizado um ciclo indirecto1048707 Os n bits mais significativos do MBR que contecircm o endereccedilo de referecircncia satildeo transferidos para o MAR

7

1048707 A unidade de controlo faz uma leitura agrave memoacuteria para obter o endereccedilo desejado do operando para o MBR1048707 Os ciclos indirectos podem envolver transferecircncia de dados entre os registos leitura ou escrita em memoacuteria ou IO eou processamento na ALUEstrutura e funccedilotildees da CPUCiclo de Interrupccedilatildeo1048707 Tanto os ciclos de aquisiccedilatildeo como os ciclos indirectos satildeo simples e previsiacuteveis1048707 No caso dos ciclos de interrupccedilatildeo sendo estes tambeacutem simples e previsiacuteveis o valor do PC eacute salvaguardado podendo o CPU retomar a actividade que estava a desenvolver logo apoacutes a interrupccedilatildeo1048707 O valor do PC eacute transferido para o MBR e escrito em memoacuteria1048707 O local reservado em memoacuteria para este efeito eacute carregado noMAR a partir da unidade de controlo1048707 O PC eacute carregado com o endereccedilo da rotina de interrupccedilatildeo como resultado o proacuteximo ciclo de instruccedilatildeo iraacute comeccedilar na instruccedilatildeo apropriadaEstrutura e funccedilotildees da CPUCiclo de InterrupccedilatildeoEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Para aleacutem dos componentes electroacutenicos a eficiecircncia dos processadores pode ser aumentada atraveacutes da proacutepria organizaccedilatildeo dos elementos constituintes do CPU1048707 Podemos por exemplo utilizar vaacuterios registos eou utilizar memoacuteria cache1048707 Uma teacutecnica que vai permitir aumentar a eficiecircncia do processador tem a ver com a utilizaccedilatildeo do processamento pipeline1048707 A estrateacutegia usada eacute semelhante a uma linha de produccedilatildeo de uma faacutebrica1048707 Este processo consiste em trabalhar os produtos nas vaacuterias fases de fabrico simultaneamente permitindo a decomposiccedilatildeo de instruccedilotildees complexas em outras mais simplesEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Se reconhecermos que as instruccedilotildees satildeo executadas por fases (por exemplo duas aquisiccedilatildeo e execuccedilatildeo) podemos explicar o conceito pipelineem duas fases independentes1048707 A primeira fase consiste em adquirir uma instruccedilatildeo utilizando para tal os ciclos de memoacuteria deixados livres pela segunda fase e colocaacute-la num buffer1048707 A segunda fase executar a instruccedilatildeo adquirida na 1ordf fase disponiacutevel no bufferEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Em principio este processo permitiraacute diminuir o tempo de execuccedilatildeo de uma instruccedilatildeo (apoacutes o enchimento do pipeline) no entanto este ganho de performance raramente eacute conseguido por duas razotildees1048707 O tempo de execuccedilatildeo geralmente seraacute maior que o tempo de aquisiccedilatildeo desequilibrando o pipeline (a execuccedilatildeo envolve leitura e escrita nos operandos)1048707 Os saltos condicionais tornam o endereccedilo da proacutexima instruccedilatildeo a executar desconhecido levando a que a fase de aquisiccedilatildeo tenha de esperar ateacute que o endereccedilo seja conhecido

8

1048707 A perca de tempo provocada pela segunda razatildeo pode ser minimizada tentando adivinhar a proacutexima instruccedilatildeo a executar (por exemplo o seguinte)

Estrutura e funccedilotildees da CPUProcessamento Pipeline1048707 De forma a aumentar a performance do sistema o pipeline tem de ter mais estaacutegios e de duraccedilatildeo igual assim as instruccedilotildees podem ser decompostas em1048707 Aquisiccedilatildeo da instruccedilatildeo (FI ndash Fetch Instruction)-leitura da proacutexima instruccedilatildeo a colocar no buffer1048707 Descodificaccedilatildeo da instruccedilatildeo (DI ndash Decode Instruction)1048707 Caacutelculo dos operandos (CO ndash Calculation Operand)1048707 Aquisiccedilatildeo dos operandos (FO ndash Fetch Operand)1048707 Execuccedilatildeo das Instruccedilotildees (EI ndash Execute Instruction)1048707 Escrita dos Operandos (WO ndash Write Operand)Estrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Pode parecer que quantos mais estaacutegios o pipeline tiver mais rapidamente as instruccedilotildees satildeo executadas no entanto existem dois factores que frustam esta expectativa1048707 Em cada estaacutegio do pipeline existe um overhead resultante do movimento do buffer para buffer e da preparaccedilatildeo das funccedilotildees aprovado pela dependecircncia loacutegica das instruccedilotildees (acessos agrave memoacuteria e saltos)1048707 A loacutegica do controlo necessaacuteria para controlar as dependecircncias da memoacuteria para optimizar o pipeline aumenta consideravelmente com o nordm de estaacutegios Isto pode levar a uma situaccedilatildeo em que a loacutegica do controlo eacute mais complexa que o nuacutemero de estados a serem controladosEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 O problema principal no desenho de um pipeline de instruccedilotildees eacute em assegurar um fluxo constante de instruccedilotildees nos estaacutegios iniciais1048707 O impedimento principal eacute as instruccedilotildees de salto condicional1048707 Para tentar resolver este problema satildeo utilizadas algumas aproximaccedilotildees1048707 Prefetch Branch Target1048707 Quando um ramo condicional eacute reconhecido para aleacutem da instruccedilatildeo seguinte tambeacutem a instruccedilatildeo-alvo de salto eacute adquirida e salvaguardada ateacute a condiccedilatildeo ser resolvida1048707 Seja o desvio tomado ou natildeo a proacutexima instruccedilatildeo a ser executada teraacute sido buscada anticipadatmanteEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Multiple Stream1048707 Perante uma instruccedilatildeo de salto eacute feita uma escolha de uma de duas instruccedilotildees podendo ser feita uma escolha errada

9

1048707 Para resolver este problema uma abordagem (do tipo lsquoforccedila brutarsquo) consiste em replicar os estaacutegios iniciais do pipeline permitindo a aquisiccedilatildeo de ambas as instruccedilotildees utilizando duas streams

1048707 Problemas1048707 Atrasos de construccedilatildeo no acesso aos registos e a memoacuteria1048707 Instruccedilotildees de salto adicionais podem entrar no pipeline antes da decisatildeo ser tomada Cada instruccedilatildeo necessita de uma stream adicional1048707 Exemplos1048707 IBM 370168 e 3033Estrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Loop Buffer1048707 Este buffer eacute uma memoacuteria pequena de alta velocidade mantida pelo estaacutegio de aquisiccedilatildeo do pipeline que contem as n instruccedilotildees mais recentemente adquiridas em sequecircncia1048707 Reduz o acesso a memoacuteria central1048707 Util quando existem pequenos ciclos num programa1048707 Estaacute optimizado para a execuccedilatildeo de ciclos e tem um funcionamento semelhante ao de uma memoacuteria cache1048707 Delayed Branch1048707 Consiste em ajustar automaticamente as instruccedilotildees do programapor forma a que as instruccedilotildees de ramificaccedilatildeo decorram mais tarde do que o desejadoEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Branch Prediction1048707 Algumas teacutecnicas podem ser utilizadas para prever umaramificaccedilatildeo1048707 Predict never taken1048707 Predict always taken (gt50)1048707 Predict by opcode taken (Taxas de gt75 de sucesso)1048707 TakenNot taken switch1048707 Branch history table1048707 As 3 primeiras satildeo estaacuteticas e natildeo dependem da execuccedilatildeo (baseiam-se em estudos probabiliacutesticos)1048707 As 2 uacuteltimas satildeo dinacircmicas e dependem da execuccedilatildeo histoacuterica do programa quer atraveacutes de bits associados agraves instruccedilotildees quer mantendo um tabela para as instruccedilotildees executadas recentemente

10

Page 7: Estrutura e Função Do Cpu

1048707 Interrupccedilatildeo - se as interrupccedilotildees estiverem activas e no caso de haver um interrupccedilatildeo a informaccedilatildeo eacute salvaguardada no estado em que se encontraEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUCiclo de InstruccedilatildeoEstrutura e funccedilotildees da CPUFluxo de Dados1048707 A sequecircncia exacta dos eventos durante um ciclo de instruccedilatildeo depende do desenho do CPU1048707 Apoacutes o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo de IR e se este tiver um operando em endereccedilamento indirecto executaum ciclo indirecto1048707 Analogamente o ciclo de interrupccedilatildeo tem um comportamento simples e previsiacutevelEstrutura e funccedilotildees da CPUCiclo de Aquisiccedilatildeo1048707 Durante um ciclo de aquisiccedilatildeo uma instruccedilatildeo eacute lida da memoacuteria1048707 O PC contem o endereccedilo da proacutexima instruccedilatildeo a ser adquirida1048707 Este endereccedilo eacute copiado para o MAR e colocado no bus de endereccedilos1048707 A unidade de controlo faz um pedido de leitura de memoacuteria e o resultado eacute1048707 Colocado no bus de dados1048707 Copiado para o MBR1048707 Movido para o IR1048707 Entretanto o PC eacute incrementado preparando-se o proacuteximo ciclo de aquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo de AquisiccedilatildeoEstrutura e funccedilotildees da CPUCiclo Indirecto1048707 A aquisiccedilatildeo de um endereccedilo indirecto introduz um novo subciclo de instruccedilatildeo que executa os acessos agrave memoacuteria suplementares1048707 Nesta situaccedilatildeo a principal linha de actividade consiste na alternacircncia entre actividades de aquisiccedilatildeo de instruccedilotildees e actividades de instruccedilatildeo e execuccedilotildees1048707 Depois de uma instruccedilatildeo ser adquirida eacute examinada com o intuito de se determinar se ocorreu algum endereccedilamento indirecto1048707 Em caso afirmativo os operandos satildeo adquiridos usando o endereccedilamento indirecto1048707 Logo depois e antes da aquisiccedilatildeo da proacutexima instruccedilatildeo eacute verificado o estado das interrupccedilotildees

Estrutura e funccedilotildees da CPUCiclo Indirecto1048707 Uma vez acabado o ciclo de aquisiccedilatildeo a unidade de controlo examina o conteuacutedo do IR para determinar se estes contem um operando de endereccedilamento indirecto1048707 Neste caso eacute realizado um ciclo indirecto1048707 Os n bits mais significativos do MBR que contecircm o endereccedilo de referecircncia satildeo transferidos para o MAR

7

1048707 A unidade de controlo faz uma leitura agrave memoacuteria para obter o endereccedilo desejado do operando para o MBR1048707 Os ciclos indirectos podem envolver transferecircncia de dados entre os registos leitura ou escrita em memoacuteria ou IO eou processamento na ALUEstrutura e funccedilotildees da CPUCiclo de Interrupccedilatildeo1048707 Tanto os ciclos de aquisiccedilatildeo como os ciclos indirectos satildeo simples e previsiacuteveis1048707 No caso dos ciclos de interrupccedilatildeo sendo estes tambeacutem simples e previsiacuteveis o valor do PC eacute salvaguardado podendo o CPU retomar a actividade que estava a desenvolver logo apoacutes a interrupccedilatildeo1048707 O valor do PC eacute transferido para o MBR e escrito em memoacuteria1048707 O local reservado em memoacuteria para este efeito eacute carregado noMAR a partir da unidade de controlo1048707 O PC eacute carregado com o endereccedilo da rotina de interrupccedilatildeo como resultado o proacuteximo ciclo de instruccedilatildeo iraacute comeccedilar na instruccedilatildeo apropriadaEstrutura e funccedilotildees da CPUCiclo de InterrupccedilatildeoEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Para aleacutem dos componentes electroacutenicos a eficiecircncia dos processadores pode ser aumentada atraveacutes da proacutepria organizaccedilatildeo dos elementos constituintes do CPU1048707 Podemos por exemplo utilizar vaacuterios registos eou utilizar memoacuteria cache1048707 Uma teacutecnica que vai permitir aumentar a eficiecircncia do processador tem a ver com a utilizaccedilatildeo do processamento pipeline1048707 A estrateacutegia usada eacute semelhante a uma linha de produccedilatildeo de uma faacutebrica1048707 Este processo consiste em trabalhar os produtos nas vaacuterias fases de fabrico simultaneamente permitindo a decomposiccedilatildeo de instruccedilotildees complexas em outras mais simplesEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Se reconhecermos que as instruccedilotildees satildeo executadas por fases (por exemplo duas aquisiccedilatildeo e execuccedilatildeo) podemos explicar o conceito pipelineem duas fases independentes1048707 A primeira fase consiste em adquirir uma instruccedilatildeo utilizando para tal os ciclos de memoacuteria deixados livres pela segunda fase e colocaacute-la num buffer1048707 A segunda fase executar a instruccedilatildeo adquirida na 1ordf fase disponiacutevel no bufferEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Em principio este processo permitiraacute diminuir o tempo de execuccedilatildeo de uma instruccedilatildeo (apoacutes o enchimento do pipeline) no entanto este ganho de performance raramente eacute conseguido por duas razotildees1048707 O tempo de execuccedilatildeo geralmente seraacute maior que o tempo de aquisiccedilatildeo desequilibrando o pipeline (a execuccedilatildeo envolve leitura e escrita nos operandos)1048707 Os saltos condicionais tornam o endereccedilo da proacutexima instruccedilatildeo a executar desconhecido levando a que a fase de aquisiccedilatildeo tenha de esperar ateacute que o endereccedilo seja conhecido

8

1048707 A perca de tempo provocada pela segunda razatildeo pode ser minimizada tentando adivinhar a proacutexima instruccedilatildeo a executar (por exemplo o seguinte)

Estrutura e funccedilotildees da CPUProcessamento Pipeline1048707 De forma a aumentar a performance do sistema o pipeline tem de ter mais estaacutegios e de duraccedilatildeo igual assim as instruccedilotildees podem ser decompostas em1048707 Aquisiccedilatildeo da instruccedilatildeo (FI ndash Fetch Instruction)-leitura da proacutexima instruccedilatildeo a colocar no buffer1048707 Descodificaccedilatildeo da instruccedilatildeo (DI ndash Decode Instruction)1048707 Caacutelculo dos operandos (CO ndash Calculation Operand)1048707 Aquisiccedilatildeo dos operandos (FO ndash Fetch Operand)1048707 Execuccedilatildeo das Instruccedilotildees (EI ndash Execute Instruction)1048707 Escrita dos Operandos (WO ndash Write Operand)Estrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Pode parecer que quantos mais estaacutegios o pipeline tiver mais rapidamente as instruccedilotildees satildeo executadas no entanto existem dois factores que frustam esta expectativa1048707 Em cada estaacutegio do pipeline existe um overhead resultante do movimento do buffer para buffer e da preparaccedilatildeo das funccedilotildees aprovado pela dependecircncia loacutegica das instruccedilotildees (acessos agrave memoacuteria e saltos)1048707 A loacutegica do controlo necessaacuteria para controlar as dependecircncias da memoacuteria para optimizar o pipeline aumenta consideravelmente com o nordm de estaacutegios Isto pode levar a uma situaccedilatildeo em que a loacutegica do controlo eacute mais complexa que o nuacutemero de estados a serem controladosEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 O problema principal no desenho de um pipeline de instruccedilotildees eacute em assegurar um fluxo constante de instruccedilotildees nos estaacutegios iniciais1048707 O impedimento principal eacute as instruccedilotildees de salto condicional1048707 Para tentar resolver este problema satildeo utilizadas algumas aproximaccedilotildees1048707 Prefetch Branch Target1048707 Quando um ramo condicional eacute reconhecido para aleacutem da instruccedilatildeo seguinte tambeacutem a instruccedilatildeo-alvo de salto eacute adquirida e salvaguardada ateacute a condiccedilatildeo ser resolvida1048707 Seja o desvio tomado ou natildeo a proacutexima instruccedilatildeo a ser executada teraacute sido buscada anticipadatmanteEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Multiple Stream1048707 Perante uma instruccedilatildeo de salto eacute feita uma escolha de uma de duas instruccedilotildees podendo ser feita uma escolha errada

9

1048707 Para resolver este problema uma abordagem (do tipo lsquoforccedila brutarsquo) consiste em replicar os estaacutegios iniciais do pipeline permitindo a aquisiccedilatildeo de ambas as instruccedilotildees utilizando duas streams

1048707 Problemas1048707 Atrasos de construccedilatildeo no acesso aos registos e a memoacuteria1048707 Instruccedilotildees de salto adicionais podem entrar no pipeline antes da decisatildeo ser tomada Cada instruccedilatildeo necessita de uma stream adicional1048707 Exemplos1048707 IBM 370168 e 3033Estrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Loop Buffer1048707 Este buffer eacute uma memoacuteria pequena de alta velocidade mantida pelo estaacutegio de aquisiccedilatildeo do pipeline que contem as n instruccedilotildees mais recentemente adquiridas em sequecircncia1048707 Reduz o acesso a memoacuteria central1048707 Util quando existem pequenos ciclos num programa1048707 Estaacute optimizado para a execuccedilatildeo de ciclos e tem um funcionamento semelhante ao de uma memoacuteria cache1048707 Delayed Branch1048707 Consiste em ajustar automaticamente as instruccedilotildees do programapor forma a que as instruccedilotildees de ramificaccedilatildeo decorram mais tarde do que o desejadoEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Branch Prediction1048707 Algumas teacutecnicas podem ser utilizadas para prever umaramificaccedilatildeo1048707 Predict never taken1048707 Predict always taken (gt50)1048707 Predict by opcode taken (Taxas de gt75 de sucesso)1048707 TakenNot taken switch1048707 Branch history table1048707 As 3 primeiras satildeo estaacuteticas e natildeo dependem da execuccedilatildeo (baseiam-se em estudos probabiliacutesticos)1048707 As 2 uacuteltimas satildeo dinacircmicas e dependem da execuccedilatildeo histoacuterica do programa quer atraveacutes de bits associados agraves instruccedilotildees quer mantendo um tabela para as instruccedilotildees executadas recentemente

10

Page 8: Estrutura e Função Do Cpu

1048707 A unidade de controlo faz uma leitura agrave memoacuteria para obter o endereccedilo desejado do operando para o MBR1048707 Os ciclos indirectos podem envolver transferecircncia de dados entre os registos leitura ou escrita em memoacuteria ou IO eou processamento na ALUEstrutura e funccedilotildees da CPUCiclo de Interrupccedilatildeo1048707 Tanto os ciclos de aquisiccedilatildeo como os ciclos indirectos satildeo simples e previsiacuteveis1048707 No caso dos ciclos de interrupccedilatildeo sendo estes tambeacutem simples e previsiacuteveis o valor do PC eacute salvaguardado podendo o CPU retomar a actividade que estava a desenvolver logo apoacutes a interrupccedilatildeo1048707 O valor do PC eacute transferido para o MBR e escrito em memoacuteria1048707 O local reservado em memoacuteria para este efeito eacute carregado noMAR a partir da unidade de controlo1048707 O PC eacute carregado com o endereccedilo da rotina de interrupccedilatildeo como resultado o proacuteximo ciclo de instruccedilatildeo iraacute comeccedilar na instruccedilatildeo apropriadaEstrutura e funccedilotildees da CPUCiclo de InterrupccedilatildeoEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Para aleacutem dos componentes electroacutenicos a eficiecircncia dos processadores pode ser aumentada atraveacutes da proacutepria organizaccedilatildeo dos elementos constituintes do CPU1048707 Podemos por exemplo utilizar vaacuterios registos eou utilizar memoacuteria cache1048707 Uma teacutecnica que vai permitir aumentar a eficiecircncia do processador tem a ver com a utilizaccedilatildeo do processamento pipeline1048707 A estrateacutegia usada eacute semelhante a uma linha de produccedilatildeo de uma faacutebrica1048707 Este processo consiste em trabalhar os produtos nas vaacuterias fases de fabrico simultaneamente permitindo a decomposiccedilatildeo de instruccedilotildees complexas em outras mais simplesEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Se reconhecermos que as instruccedilotildees satildeo executadas por fases (por exemplo duas aquisiccedilatildeo e execuccedilatildeo) podemos explicar o conceito pipelineem duas fases independentes1048707 A primeira fase consiste em adquirir uma instruccedilatildeo utilizando para tal os ciclos de memoacuteria deixados livres pela segunda fase e colocaacute-la num buffer1048707 A segunda fase executar a instruccedilatildeo adquirida na 1ordf fase disponiacutevel no bufferEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Em principio este processo permitiraacute diminuir o tempo de execuccedilatildeo de uma instruccedilatildeo (apoacutes o enchimento do pipeline) no entanto este ganho de performance raramente eacute conseguido por duas razotildees1048707 O tempo de execuccedilatildeo geralmente seraacute maior que o tempo de aquisiccedilatildeo desequilibrando o pipeline (a execuccedilatildeo envolve leitura e escrita nos operandos)1048707 Os saltos condicionais tornam o endereccedilo da proacutexima instruccedilatildeo a executar desconhecido levando a que a fase de aquisiccedilatildeo tenha de esperar ateacute que o endereccedilo seja conhecido

8

1048707 A perca de tempo provocada pela segunda razatildeo pode ser minimizada tentando adivinhar a proacutexima instruccedilatildeo a executar (por exemplo o seguinte)

Estrutura e funccedilotildees da CPUProcessamento Pipeline1048707 De forma a aumentar a performance do sistema o pipeline tem de ter mais estaacutegios e de duraccedilatildeo igual assim as instruccedilotildees podem ser decompostas em1048707 Aquisiccedilatildeo da instruccedilatildeo (FI ndash Fetch Instruction)-leitura da proacutexima instruccedilatildeo a colocar no buffer1048707 Descodificaccedilatildeo da instruccedilatildeo (DI ndash Decode Instruction)1048707 Caacutelculo dos operandos (CO ndash Calculation Operand)1048707 Aquisiccedilatildeo dos operandos (FO ndash Fetch Operand)1048707 Execuccedilatildeo das Instruccedilotildees (EI ndash Execute Instruction)1048707 Escrita dos Operandos (WO ndash Write Operand)Estrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Pode parecer que quantos mais estaacutegios o pipeline tiver mais rapidamente as instruccedilotildees satildeo executadas no entanto existem dois factores que frustam esta expectativa1048707 Em cada estaacutegio do pipeline existe um overhead resultante do movimento do buffer para buffer e da preparaccedilatildeo das funccedilotildees aprovado pela dependecircncia loacutegica das instruccedilotildees (acessos agrave memoacuteria e saltos)1048707 A loacutegica do controlo necessaacuteria para controlar as dependecircncias da memoacuteria para optimizar o pipeline aumenta consideravelmente com o nordm de estaacutegios Isto pode levar a uma situaccedilatildeo em que a loacutegica do controlo eacute mais complexa que o nuacutemero de estados a serem controladosEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 O problema principal no desenho de um pipeline de instruccedilotildees eacute em assegurar um fluxo constante de instruccedilotildees nos estaacutegios iniciais1048707 O impedimento principal eacute as instruccedilotildees de salto condicional1048707 Para tentar resolver este problema satildeo utilizadas algumas aproximaccedilotildees1048707 Prefetch Branch Target1048707 Quando um ramo condicional eacute reconhecido para aleacutem da instruccedilatildeo seguinte tambeacutem a instruccedilatildeo-alvo de salto eacute adquirida e salvaguardada ateacute a condiccedilatildeo ser resolvida1048707 Seja o desvio tomado ou natildeo a proacutexima instruccedilatildeo a ser executada teraacute sido buscada anticipadatmanteEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Multiple Stream1048707 Perante uma instruccedilatildeo de salto eacute feita uma escolha de uma de duas instruccedilotildees podendo ser feita uma escolha errada

9

1048707 Para resolver este problema uma abordagem (do tipo lsquoforccedila brutarsquo) consiste em replicar os estaacutegios iniciais do pipeline permitindo a aquisiccedilatildeo de ambas as instruccedilotildees utilizando duas streams

1048707 Problemas1048707 Atrasos de construccedilatildeo no acesso aos registos e a memoacuteria1048707 Instruccedilotildees de salto adicionais podem entrar no pipeline antes da decisatildeo ser tomada Cada instruccedilatildeo necessita de uma stream adicional1048707 Exemplos1048707 IBM 370168 e 3033Estrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Loop Buffer1048707 Este buffer eacute uma memoacuteria pequena de alta velocidade mantida pelo estaacutegio de aquisiccedilatildeo do pipeline que contem as n instruccedilotildees mais recentemente adquiridas em sequecircncia1048707 Reduz o acesso a memoacuteria central1048707 Util quando existem pequenos ciclos num programa1048707 Estaacute optimizado para a execuccedilatildeo de ciclos e tem um funcionamento semelhante ao de uma memoacuteria cache1048707 Delayed Branch1048707 Consiste em ajustar automaticamente as instruccedilotildees do programapor forma a que as instruccedilotildees de ramificaccedilatildeo decorram mais tarde do que o desejadoEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Branch Prediction1048707 Algumas teacutecnicas podem ser utilizadas para prever umaramificaccedilatildeo1048707 Predict never taken1048707 Predict always taken (gt50)1048707 Predict by opcode taken (Taxas de gt75 de sucesso)1048707 TakenNot taken switch1048707 Branch history table1048707 As 3 primeiras satildeo estaacuteticas e natildeo dependem da execuccedilatildeo (baseiam-se em estudos probabiliacutesticos)1048707 As 2 uacuteltimas satildeo dinacircmicas e dependem da execuccedilatildeo histoacuterica do programa quer atraveacutes de bits associados agraves instruccedilotildees quer mantendo um tabela para as instruccedilotildees executadas recentemente

10

Page 9: Estrutura e Função Do Cpu

1048707 A perca de tempo provocada pela segunda razatildeo pode ser minimizada tentando adivinhar a proacutexima instruccedilatildeo a executar (por exemplo o seguinte)

Estrutura e funccedilotildees da CPUProcessamento Pipeline1048707 De forma a aumentar a performance do sistema o pipeline tem de ter mais estaacutegios e de duraccedilatildeo igual assim as instruccedilotildees podem ser decompostas em1048707 Aquisiccedilatildeo da instruccedilatildeo (FI ndash Fetch Instruction)-leitura da proacutexima instruccedilatildeo a colocar no buffer1048707 Descodificaccedilatildeo da instruccedilatildeo (DI ndash Decode Instruction)1048707 Caacutelculo dos operandos (CO ndash Calculation Operand)1048707 Aquisiccedilatildeo dos operandos (FO ndash Fetch Operand)1048707 Execuccedilatildeo das Instruccedilotildees (EI ndash Execute Instruction)1048707 Escrita dos Operandos (WO ndash Write Operand)Estrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento PipelineEstrutura e funccedilotildees da CPUProcessamento Pipeline1048707 Pode parecer que quantos mais estaacutegios o pipeline tiver mais rapidamente as instruccedilotildees satildeo executadas no entanto existem dois factores que frustam esta expectativa1048707 Em cada estaacutegio do pipeline existe um overhead resultante do movimento do buffer para buffer e da preparaccedilatildeo das funccedilotildees aprovado pela dependecircncia loacutegica das instruccedilotildees (acessos agrave memoacuteria e saltos)1048707 A loacutegica do controlo necessaacuteria para controlar as dependecircncias da memoacuteria para optimizar o pipeline aumenta consideravelmente com o nordm de estaacutegios Isto pode levar a uma situaccedilatildeo em que a loacutegica do controlo eacute mais complexa que o nuacutemero de estados a serem controladosEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 O problema principal no desenho de um pipeline de instruccedilotildees eacute em assegurar um fluxo constante de instruccedilotildees nos estaacutegios iniciais1048707 O impedimento principal eacute as instruccedilotildees de salto condicional1048707 Para tentar resolver este problema satildeo utilizadas algumas aproximaccedilotildees1048707 Prefetch Branch Target1048707 Quando um ramo condicional eacute reconhecido para aleacutem da instruccedilatildeo seguinte tambeacutem a instruccedilatildeo-alvo de salto eacute adquirida e salvaguardada ateacute a condiccedilatildeo ser resolvida1048707 Seja o desvio tomado ou natildeo a proacutexima instruccedilatildeo a ser executada teraacute sido buscada anticipadatmanteEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Multiple Stream1048707 Perante uma instruccedilatildeo de salto eacute feita uma escolha de uma de duas instruccedilotildees podendo ser feita uma escolha errada

9

1048707 Para resolver este problema uma abordagem (do tipo lsquoforccedila brutarsquo) consiste em replicar os estaacutegios iniciais do pipeline permitindo a aquisiccedilatildeo de ambas as instruccedilotildees utilizando duas streams

1048707 Problemas1048707 Atrasos de construccedilatildeo no acesso aos registos e a memoacuteria1048707 Instruccedilotildees de salto adicionais podem entrar no pipeline antes da decisatildeo ser tomada Cada instruccedilatildeo necessita de uma stream adicional1048707 Exemplos1048707 IBM 370168 e 3033Estrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Loop Buffer1048707 Este buffer eacute uma memoacuteria pequena de alta velocidade mantida pelo estaacutegio de aquisiccedilatildeo do pipeline que contem as n instruccedilotildees mais recentemente adquiridas em sequecircncia1048707 Reduz o acesso a memoacuteria central1048707 Util quando existem pequenos ciclos num programa1048707 Estaacute optimizado para a execuccedilatildeo de ciclos e tem um funcionamento semelhante ao de uma memoacuteria cache1048707 Delayed Branch1048707 Consiste em ajustar automaticamente as instruccedilotildees do programapor forma a que as instruccedilotildees de ramificaccedilatildeo decorram mais tarde do que o desejadoEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Branch Prediction1048707 Algumas teacutecnicas podem ser utilizadas para prever umaramificaccedilatildeo1048707 Predict never taken1048707 Predict always taken (gt50)1048707 Predict by opcode taken (Taxas de gt75 de sucesso)1048707 TakenNot taken switch1048707 Branch history table1048707 As 3 primeiras satildeo estaacuteticas e natildeo dependem da execuccedilatildeo (baseiam-se em estudos probabiliacutesticos)1048707 As 2 uacuteltimas satildeo dinacircmicas e dependem da execuccedilatildeo histoacuterica do programa quer atraveacutes de bits associados agraves instruccedilotildees quer mantendo um tabela para as instruccedilotildees executadas recentemente

10

Page 10: Estrutura e Função Do Cpu

1048707 Para resolver este problema uma abordagem (do tipo lsquoforccedila brutarsquo) consiste em replicar os estaacutegios iniciais do pipeline permitindo a aquisiccedilatildeo de ambas as instruccedilotildees utilizando duas streams

1048707 Problemas1048707 Atrasos de construccedilatildeo no acesso aos registos e a memoacuteria1048707 Instruccedilotildees de salto adicionais podem entrar no pipeline antes da decisatildeo ser tomada Cada instruccedilatildeo necessita de uma stream adicional1048707 Exemplos1048707 IBM 370168 e 3033Estrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Loop Buffer1048707 Este buffer eacute uma memoacuteria pequena de alta velocidade mantida pelo estaacutegio de aquisiccedilatildeo do pipeline que contem as n instruccedilotildees mais recentemente adquiridas em sequecircncia1048707 Reduz o acesso a memoacuteria central1048707 Util quando existem pequenos ciclos num programa1048707 Estaacute optimizado para a execuccedilatildeo de ciclos e tem um funcionamento semelhante ao de uma memoacuteria cache1048707 Delayed Branch1048707 Consiste em ajustar automaticamente as instruccedilotildees do programapor forma a que as instruccedilotildees de ramificaccedilatildeo decorram mais tarde do que o desejadoEstrutura e funccedilotildees da CPUProcessamento Pipeline - Tratamento de ramificaccedilotildees1048707 Branch Prediction1048707 Algumas teacutecnicas podem ser utilizadas para prever umaramificaccedilatildeo1048707 Predict never taken1048707 Predict always taken (gt50)1048707 Predict by opcode taken (Taxas de gt75 de sucesso)1048707 TakenNot taken switch1048707 Branch history table1048707 As 3 primeiras satildeo estaacuteticas e natildeo dependem da execuccedilatildeo (baseiam-se em estudos probabiliacutesticos)1048707 As 2 uacuteltimas satildeo dinacircmicas e dependem da execuccedilatildeo histoacuterica do programa quer atraveacutes de bits associados agraves instruccedilotildees quer mantendo um tabela para as instruccedilotildees executadas recentemente

10