fundamentos da arquitetura de computadores

57
Fundamentos da Arquitetura de Computadores CPU Prof. André Renato 1º Semestre / 2012

Upload: nevin

Post on 23-Feb-2016

23 views

Category:

Documents


3 download

DESCRIPTION

Fundamentos da Arquitetura de Computadores. CPU. Prof. André Renato 1º Semestre / 2012. CPU. A CPU é o elemento central dos sistemas de computação, responsável pelas operações de processamento e controle, durante a execução de um programa; - PowerPoint PPT Presentation

TRANSCRIPT

Fundamentos da Arquitetura de Computadores

Fundamentos da Arquitetura de ComputadoresCPUProf. Andr Renato1 Semestre / 2012CPUA CPU o elemento central dos sistemas de computao, responsvel pelas operaes de processamento e controle, durante a execuo de um programa;Um programa, para ser efetivamente executado pelo processador, deve ser constitudo de uma srie de instrues de mquina. Para que a execuo tenha incio, as instrues devem ser armazenadas na memria principal;

CPUAs funes da CPU so:Buscar na memria a instruo a ser executada;Interpretar que operao a instruo est explicitando;Buscar os dados onde estiverem armazenados;Executar efetivamente a operao com os dados e armazenar o resultado no local definido pela instruo;Reiniciar o processo, buscando a prxima instruo.CPUEstas etapas compem o que se denomina um ciclo de instruo. Este ciclo se repete indefinidamente at que o sistema seja desligado, ou ocorra algum tipo de erro, ou seja encontrada uma instruo de parada. Em outras palavras, a CPU projetada e fabricada com o propsito nico de executar sucessivamente pequenas operaes, na ordem definida pela organizao do programa.CPUEntre os operaes de processamento de dados, podemos citar:Operaes aritmticasOperaes lgicasMovimentao de dadosDesviosOperaes de entrada ou sadaCPUEstas operaes so realizada por um componente chamado de Unidade Lgico-Aritmtica (ULA);A ULA um conjunto de circuitos digitais que normalmente recebe um dois operandos e produz um resultado;CPUOutra tarefada CPU realizar o controle dos demais dispositivos de acordo com a instruo que est sendo executada;Ex: uma instruo de soma vai ativar o circuito somador da ULA; uma instruo de entrada/sada vai sinalizar ao dispositivo o que deve ser feito;CPUPara que a CPU possa processar os dados e mov-los corretamente, ele precisar de uma pequena memria para manter os dados enquanto esto sendo manipulados;Esta memria formada por pequenos componentes chamados de registradores;CPURegistradores:A, B, R: registradores temporrios que armazenam, respectivamente, os valores a serem operados e o valor resultanteR0 ... Rn: registradores de dados MAR: endereo da locao de memria onde ser feito o acessoMBR: armazena temporariamente a informao transferida de ou para a locao de memria endereada pelo MARPC: contador de programa, contm o endereo da locao de memria onde se encontra a prxima instruo a ser executadaIR: registrador de instruesESTADO: guarda informaes sobre o resultado produzido pela ULA. Exemplo: o bit n 1 se o resultado for nulo e 0 se for no-nuloCPUUma arquitetura de processador uma arquitetura de n bits quando todas as operaes da ULA podem ser realizadas sobre operandos de at n bits;Normalmente em uma arquitetura de n bits, os registradores de dados e os barramentos internos tambm so de n bits, de forma a permitir que os dados sejam armazenados e transferidos de forma eficiente;CPU

CPUUnidade de controle:Todas as operaes bsicas que ocorrem dentro da seo de processamento so comandadas pela seo de controle. Ao efetuar a busca da instruo, a unidade de controle interpreta a instruo de modo a identificar quais as operaes bsicas que devem ser realizadas e ativa sinais de controle (S1, S2, ..., Sn) que fazem uma operao bsica de fato acontecerEm outras palavras, a seo de controle projetada para entender o qu fazer, como fazer e comandar quem vai fazer no momento adequado.CPU o dispositivo mais complexo da CPU;Alm de possuir a lgica necessria para realizar a movimentao de dados e instrues de e para a CPU, esse dispositivo controla a ao da ULA;Os sinais de controle emitidos pela UC ocorrem em vrios instantes durante o perodo de realizao de um ciclo de instruo e, de modo geral, todos possuem uma durao fixa e igual, dada pelo clock;CPUO conjunto de instrues que a CPU pode executar um elemento crucial do desenho e na implementao dos circuitos da ULA;O conjunto de instrues utilizadas afeta no somente o projeto da seo de processamento: a estrutura e complexidade da unidade de controle determinada diretamente pelas caractersticas do conjunto de instruesCPUComo as instrues so criadas?As instrues so geradas a partir dos comandos escritos pelo programador;Uma soma seguida de uma atribuio devem ser convertidas em uma sequencia de instrues que fazem a busca dos dados em memria, a operao de soma e a cpia do resultado para a varivel (posio de memria) correspondente;

CPUComo o programador sabe a sequencia de instrues que deve ser realizada pela CPU?No precisa saber. A converso dos comandos de soma, atribuio, comparao e repetio, por exemplo, em instrues de mquina feita pelo compilador, atravs de uma linguagem de alto-nvel; CPULinguagem de alto nvelobjetivo: tornar a comunicao com o computador mais simples e com menos instrues do que a linguagem de montagem mais distante da mquinao programador no precisa se preocupar com o tipo de CPU ou de memria onde o programa ser executadoExs.: Fortran, Pascal, CCPUEm geral, os programas so desenvolvidos em uma linguagem de alto nvel, com Pascal, C, ou Java. O compilador traduz o programa de alto nvel em uma sequncia de instrues de processadorDesta traduo resulta o programa em linguagem de montagem (assembly language).A linguagem de montagem uma forma de representar textualmente as instrues oferecidas pela arquitetura, cada uma com uma linguagem de montagem em particularCPUNo programa em linguagem de montagem, as instrues so representadas atravs de abreviaes, chamadas de mnemnicos, que associam o nome da instruo sua funo, como por exemplo:ADD: AdioSUB: SubtraoMPY: MultiplicaoDIV: DivisoLOAD: Carregar dados da memriaSTOR: Armazenar dados na memriaCPUO programa em linguagem de montagem convertido para um programa em cdigo objeto pelo montador (assembler). O montador traduz diretamente uma instruo da forma textual para a forma de cdigo binrio. sob a forma binria que a instruo carregada na memria e interpretada pelo processadorCPUProgramas complexos so normalmente estruturados em mdulos. Cada mdulo compilado separadamente e submetido ao montador, gerando diversos mdulos em cdigo objeto. Estes mdulos so reunidos pelo ligador (linker), resultando finalmente no programa executvel que carregado na memriaCPU

CPUA compilao no o nico mtodo de execuo de programas;O mtodo de interpretao consiste em realizar as trs etapas (compilao, ligao, execuo) de uma vez s, comando a comando;O cdigo-fonte analisado por um programa chamado de interpretador que realiza diretamente as operaes e produz os resultados;CPUAlgumas linguagens apresentam caractersticas estruturais que so tpicas da compilao como Fortran, Pascal, C;A linguagem Basic (hoje, Visual Basic) foi durante muito tempo apenas interpretada, mas atualmente existe processo de compilao para ela;A linguagem Java interpretativa (JVM);CPUVantagens e desvantagens:A principal vantagem da interpretao a possibilidade de indicar erros j no cdigo-fonte;Uma desvantagem da interpretao que certas partes do programa podem ser interpretadas tantas vezes quanto forem definidas nas estruturas de repetio;CPUUma grande desvantagem o consumo de memria:O compilador s utiliza a memria enquanto ele mesmo estiver executando; o interpretador consome memria o tempo todo em que o programa estiver executando;

CPUFormato das instrues:Para que a CPU seja capaz de executar uma instruo, preciso definir a quantidade de bits que ser utilizada para representar a operao em si e a quantidade de bits que ser utilizada para os operandos;

CPUToda instruo de mquina possui um cdigo de operao especfico e nico para a tarefa que deseja executar;Este cdigo, aps ser decodificado durante o ciclo execuo de instruo, permitir que a UC envie os sinais necessrios, e previamente programados, para se realizar a operao;CPUAlm do cdigo de operao, cada instruo pode ter um conjunto de um ou mais operandos, cada um contendo um dado que deve ser utilizado durante a operao;CPUExemplos:ADDA,B,X (X recebe A+B)MULR1,R2,R3(R3 recebe R1*R2)ADDA,B(A recebe A+B)SUBR4,R2(R4 recebe R4 R2)ADDA(Acc recebe Acc+A)DIVR5(Acc recebe Acc+R5)CPUModo de endereamento:Nem sempre e valor do operando o que deve ser utilizado para a realizao da operao;s vezes, o valor do operando significa onde o dado real se encontra na memria principal do computador; preciso definir qual o modo de endereamento dos dados;CPUEndereamento imediato:O valor do operando exatamente o que deve ser utilizado pela CPU;Ex: ADD3(Acc recebe Acc+3)Vantagem: como o dado j est disponvel, no necessrio busc-lo na memria, diminuindo o tempo de processamento;Desvantagem: a quantidade de bits geralmente ser pequena, pois necessrio reservar alguns bits para o cdigo de operaoCPUEndereamento direto:O valor do operando indica o endereo da memria onde est efetivamente o dado a ser operado;Ex: MULA,B(clula A recebe o valor da clula A vezes o valor da clula B)Vantagem: Pode utilizar dados de tamanho maior (tamanho da clula), alm de ser rpido (apenas um acesso);Desvantagem: pode representar uma quantidade pequena de memriaCPUEndereamento indireto:O valor do operando indica onde est na memria o endereo do dado real;Ex: DIVA(Acc recebe o valor da diviso de Acc pelo valor contido no endereo A da memria);Vantagem: no h limitao to restrita do espao de memria;Desvantagem: preciso acessar a memria duas vezes;CPUExiste como melhorar ainda mais o desempenho da CPU?Ser preciso analisar a forma como cada componente dela executa sua tarefa especfica para poder dar a resposta;Vamos pensar no funcionamento da CPU durante a execuo de uma instruo...CPUNs vimos que para executar uma instruo, a CPU realiza diversas etapas;Vai memria (cache) buscar a instruo;Decodifica a instruo;Busca os parmetros (operandos);Realiza a instruo;Salva o resultado;Muda para prxima instruo;etcCPUCada uma dessas etapas realizada por um circuito (componente) distinto;O circuito que decodifica a instruo no busca os dados na memria, por exemplo;O que acontece com o circuito que decodifica a instruo enquanto os dados esto sendo buscados na memria?CPUO circuito poderia fazer outra coisa para adiantar trabalhos futuros;Antigamente, a CPU s comeava a executar uma instruo quando a anterior tivesse sido completamente finalizada;Muitos circuitos ficavam ociosos....CPUNa tcnica de pipeline, permite-se que vrias instrues sejam executadas simultaneamente, pois os passos da execuo so realizados por unidades independentes, denominadas estgios do Pipeline; O exemplo a seguir representa um pipeline de quatro estgios

CPU

CPUNo ciclo c1, a instruo i1 buscada no estgio BNo ciclo c2, a instruo i1 decodificada no estgio D, enquanto o estgio B busca uma nova instruo, i2No ciclo c3, o estgio E executa a instruo i1, ao mesmo tempo que o estgio D decodifica a instruo i2 e o estgio B busca a instruo i3No ciclo c4, o resultado da instruo i1 armazenado pelo estgio R, as instrues i2 e i3 avanam para o prximo estgio e o estgio B busca a instruo i4

CPUNovas instrues entram no pipeline antes que a execuo das instrues anteriores seja completadaQuando o pipeline encontra-se cheio, vrias instrues esto sendo executadas em paralelo, uma em cada estgio do pipelineNa realidade, o aspecto mais importante na tcnica de pipeline que uma instruo seja completada em um ciclo de clock. Em uma arquitetura sequencial, a execuo de uma instruo consome vrios ciclos de clock, fazendo que o nmero mdio de ciclos esteja bem acima da mdia de 1 ciclo/operao obtida com o uso da tcnica de pipelining

CPULogo, as arquiteturas modernas voltadas para aplicaes de alto desempenho utilizam a tcnica de pipelining, sendo que suas instrues so implementadas de forma a apresentarem um fator de 1 ciclo/instruoApesar de conceitualmente simples, o uso de pipelining encontra alguns problemas na prtica.A tcnica funciona se houver uma continuidade no fluxo de instrues, o que muitas vezes no acontece, por exemplo, quando existe uma dependncia de dados entre duas instrues

CPUCom o pipelining, apenas uma instruo completada por ciclo, resultando em um ipc mximo de 1 ciclo/instruo. Seria possvel aumentar o desempenho de um sistema se o fator ipc fosse elevado para acima desta mdiaUma arquitetura super-escalar opera de forma que mais de uma instruo possa ser completada a cada ciclo, atravs de mltiplas unidades funcionais independentes, que executam instrues em paraleloA cada ciclo, mltiplas instrues podem ser enviadas (despachadas) para a execuo nestas unidades funcionais

CPU

CPUSe hoje em dia as memrias ainda no esto no mesmo nvel de velocidade do processador, o problema era ainda maior antigamente;Programas grandes demoravam muito porque muitas instrues precisavam ser buscadas na memria;Eram desejveis programa pequenos;CPULinguagens de alto nvel eram consideradas ineficientes em termos de espao e tempo de execuo, porm, a complexidade das aplicaes foi tornando proibitivo o uso de programao assemblyEste foi o motivo para o desenvolvimento de arquiteturas que suportariam o uso de linguagens de alto nvel, sendo que sua execuo seria to eficiente quanto a de programas escritos em assembly

CPU

CPUAmbos os casos implementam a operao C = A + B, em diferentes nveis de funcionalidade Em uma linguagem de baixo nvel de funcionalidade, so realizadas quatro operaes: o carregamento das variveis A e B em registradores, a adio propriamente dita e o armazenamento do resultado em C; em uma linguagem de alto nvel de funcionalidade, os operandos so acessados diretamente na memria, feita a adio e o resultado j armazenado na memria

CPUUma arquitetura com um pequeno conjunto de instrues com alto nvel de funcionalidade apresenta dois benefcios:Programas mais eficientes em termos de espao ocupado na memria (menor nmero de instrues)Comandos de alto nvel com um menor nmero de instrues resultam em um menor nmero de acessos a memria para busca de instrues

CPUNa prtica, contudo, no bem assim:Eficcia dos programas: em alguns casos, instrues complexas possuam um tempo de execuo elevado, at mesmo maior do que uma sequncia de operaes simples que realiza a mesma tarefaUtilizao de instrues: apenas uma pequena parcela das instrues oferecidas era realmente utilizada (ex.: IBM 370 tinha 183 instrues disponveis; em 99% dos casos eram utilizadas apenas 48)Efeito sobre o desempenho: o aumento do nvel de funcionalidade possui um efeito negativo sobre o desempenho, por exemplo, extremamente difcil implementar uma UCCPUAbriu-se espao para o surgimento de uma novo filosofia RISC (Reduced Instruction Set Computers):Simplicidade das instrues;Uso frequente na codificao de programas de alto-nvel;Novas tecnologias de fabricao das memrias, reduzindo o custo e o tempo de acesso;CPUSo caractersticas comuns a todas as arquiteturas RISC:Pipeline de instruesArquitetura registrador-registrador: todos os operandos a serem utilizados em operaes aritmticas e lgicas encontram-se em registradores, o que diminui a complexidade da unidade de controleRegularidade no formato das instrues: todos os cdigos possuem o mesmo tamanho, igual ao de uma palavra da memria, o que permite o acesso em um nico ciclo a uma instruo completaCPUTodos os modelos de sistemas computacionais que vimos so compostos por uma CPU e uma memria;Em sistemas paralelos, pode haver mais de um destes elementos;M. J. Flynn criou um esquema de classificao para estes sistemas;CPUA classificao de Flynn baseia-se em dois fatores: o nmero de fluxos de instrues e de fluxos de dados existentes no sistemaUm fluxo de instruo uma sequncia de instrues endereadas pelo contador de programa de um elemento processador. Se um sistema possui n contadores de programa, este sistema capaz de processar n fluxos de instruo distintosUm fluxo de dados corresponde a um conjunto de dados que manipulado por um elemento processador

CPUSISD Single Instruction, Single Data Stream: um nico processador executa uma nica sequncia de instrues, utilizando dados armazenados em uma nica memria. SIMD Single Instruction, Multiple Data Stream: uma nica instruo de mquina controla a execuo simultnea de um certo nmero de elementos de processamento, cada elemento operando sobre um dado pertencente a um fluxo de dados diferenteEx.: supercomputadores vetoriais, que realizam em paralelo uma mesma operao sobre mltiplos elementos de um vetor

CPUMISD Multiple Instruction, Single Data: uma nica sequncia de dados transmitida para um conjunto de processadores, cada um dos quais executa uma sequncia de operaes diferentes.Na prtica, ainda no existe nenhuma estrutura deste tipo implementadaMIMD Multiple Instruction, Multiple Data: um conjunto de processadores executa simultaneamente sequncias diferentes de instrues, sobre conjuntos de dados distintos. Sistemas de memria compartilhada ou distribuda (como clusters) so classificados desta forma