Prévia do material em texto
<p>23</p><p>S</p><p>is</p><p>te</p><p>m</p><p>a</p><p>U</p><p>ni</p><p>ve</p><p>rs</p><p>id</p><p>ad</p><p>e</p><p>A</p><p>be</p><p>rta</p><p>d</p><p>o</p><p>B</p><p>ra</p><p>si</p><p>l -</p><p>U</p><p>A</p><p>B</p><p>|</p><p>I</p><p>F</p><p>S</p><p>ul</p><p>-r</p><p>io</p><p>-g</p><p>ra</p><p>nd</p><p>en</p><p>se</p><p>Unidade B</p><p>O processador, também conhecido como CPU (central processing unit, em inglês), ou UCP (unidade</p><p>central de processamento, em português), é formado por chips responsáveis pela execução de cálculos,</p><p>decisões lógicas e instruções que resultam em todas as tarefas que um computador pode fazer. Afinal de</p><p>contas, todos os programas que estão em utilização em um computador, obrigatoriamente, devem ser</p><p>executados pelo processador.</p><p>Atenção</p><p>Lembrando o que vimos na unidade anterior, um programa consiste em uma série de instruções que o proces-</p><p>sador deverá executar para que a tarefa solicitada seja realizada.</p><p>Antes de estudarmos como funciona um processador, você tem ideia de como ele opera no computador? Como</p><p>ele se relaciona com os demais componentes do sistema computacional?</p><p>Assista a animação disponível em http://www.youtube.com/watch?v=oui_qEhe3P4, que trata o proces-</p><p>sador como um personagem, demonstrando-o em diversas situações de interação com os demais componentes</p><p>da máquina com a responsabilidade de fazer com que tudo funcione. Após assisti-lo, comente no fórum suas</p><p>impressões sobre o papel do processador.</p><p>Execução de programas</p><p>Para que um programa seja executado, é necessário que sejam transferidos todos os dados necessários,</p><p>a partir de algum dispositivo de armazenamento para a memória RAM, de onde serão acessados pelo</p><p>processador. Ao ser processado, ou seja, após o processador executar as instruções que compõem o</p><p>programa, o resultado é entregue ao programa que será o responsável por determinar o que será feito</p><p>com ele.</p><p>Relação CPU/Memória RAM</p><p>O processador trabalha apenas com valores armazenados em registradores na execução de suas</p><p>atividades, ou seja, ele não acessa diretamente as informações da memória RAM.</p><p>Atenção</p><p>Os registradores são áreas de armazenamento temporário de valores presentes no processador. Neles são car-</p><p>regados os valores da memória necessários para a execução de uma instrução, sendo que também são utiliza-</p><p>dos como local de armazenamento para os resultados das execuções das instruções.</p><p>Portanto, para que uma instrução seja executada é necessário acessá-la em seu endereço na memória</p><p>RAM e transferi-la para o registrador do processador.</p><p>UNIDADE CENTRAL DE</p><p>PROCESSAMENTO</p><p>UNIDADE B</p><p>24</p><p>Fo</p><p>m</p><p>en</p><p>to</p><p>a</p><p>o</p><p>U</p><p>so</p><p>d</p><p>as</p><p>T</p><p>ec</p><p>no</p><p>lo</p><p>gi</p><p>as</p><p>d</p><p>a</p><p>In</p><p>fo</p><p>rm</p><p>aç</p><p>ão</p><p>e</p><p>C</p><p>om</p><p>un</p><p>ic</p><p>aç</p><p>ão</p><p>Arquitetura e Organização de Computadores</p><p>A transferência de dados entre processador e memória é realizada através do barramento local,</p><p>utilizando-se dos seguintes componentes:</p><p>• REM (Registrador de Endereço de Memória): armazena o endereço da memória onde será lido ou escrito o dado.</p><p>• RDM (Registrador de Dados da Memória): armazena o dado a ser escrito ou lido na memória.</p><p>• Barramento de dados: liga o RDM à memória, sendo o caminho por onde é feita a transferência de dados.</p><p>• Barramento de endereços: liga o REM à memória fornecendo o endereço a ser lido ou escrito.</p><p>• Barramento de controle: liga o processador à memória para enviar sinais de controle como leitura (READ), escrita</p><p>(WRITE) ou espera (WAIT).</p><p>As operações, que são realizadas pelo processador na memória, envolvem a leitura de dados da memória</p><p>para armazená-los nos registradores, já a escrita desses dados estão armazenados em registradores na</p><p>memória.</p><p>A operação de leitura (READ), quando o conteúdo da posição de memória endereçada por REM é copiado</p><p>em RDM, envolve a seguinte sequência de operações:</p><p>REM ← endereço</p><p>Comando READ</p><p>RDM ← Memória[REM]</p><p>A operação de escrita (WRITE), quando a posição de memória endereçada por REM recebe o conteúdo</p><p>de RDM, envolve a seguinte sequência de operações:</p><p>REM ← endereço</p><p>RDM ← dado</p><p>Comando WRITE</p><p>Memória[REM] ← RDM</p><p>Clock</p><p>O processador, no desempenho de suas atividades, necessita realizar operações internamente e também</p><p>comunicar-se com os demais componentes do micro (para ler e gravar informações na memória</p><p>principal, por exemplo). Segundo Torres:</p><p>Os processadores atualmente utilizam um esquema de multiplicação de clock, onde o clock do</p><p>barramento local é muito inferior ao clock interno do processador. Esse esquema de multiplicação</p><p>de clock foi criado porque é difícil construir placas-mãe e circuitos de apoio que consigam operar</p><p>em frequências de operação tão altas como aquelas que os processadores conseguem trabalhar</p><p>internamente. (2001, p. 34)</p><p>25</p><p>S</p><p>is</p><p>te</p><p>m</p><p>a</p><p>U</p><p>ni</p><p>ve</p><p>rs</p><p>id</p><p>ad</p><p>e</p><p>A</p><p>be</p><p>rta</p><p>d</p><p>o</p><p>B</p><p>ra</p><p>si</p><p>l -</p><p>U</p><p>A</p><p>B</p><p>|</p><p>I</p><p>F</p><p>S</p><p>ul</p><p>-r</p><p>io</p><p>-g</p><p>ra</p><p>nd</p><p>en</p><p>se</p><p>Unidade B</p><p>Portanto, o clock interno do processador é a frequência com a qual o processador trabalha internamente</p><p>na execução de suas atividades, sendo utilizado o clock externo para a comunicação com os demais</p><p>componentes do computador através da placa-mãe.</p><p>Atenção</p><p>Imagine um processador que possui uma frequência de operação (clock interno) de 1,8 GHz e que se comunica</p><p>com uma placa-mãe que possui uma frequência de operação de 200 MHz. Como a frequência de operação entre</p><p>ambos é completamente diferente, é necessário que o processador reduza sua frequência quando necessitar se</p><p>comunicar com a placa-mãe, para isso, é utilizado um multiplicador que, neste caso, é 9. Sendo assim, dividindo</p><p>o clock interno do processador, que é 1,8 GHz, por 9, obteremos o valor de clock de 200 MHz (1,8 GHz / 9 = 200</p><p>MHz), que é o necessário para que possa ocorrer comunicação com o restante do micro.</p><p>Técnicas para minimizar a diferença de clock</p><p>Visando minimizar a diferença existente entre o clock interno e o clock externo do processador são</p><p>utilizadas algumas técnicas. Uma solução envolve a utilização de memória cache (que será abordada</p><p>no próximo módulo, juntamente com o sistema de memórias), que se trata de uma memória de maior</p><p>velocidade de acesso que a memória principal.</p><p>A transferência de mais de um dado por ciclo de clock também é uma técnica empregada para compensar</p><p>essa diferença. Ela consiste em transferir dois dados por ciclo de clock, a chamada DDR (Dual Data Rate),</p><p>assim como transferir quatro dados por ciclo de clock, a QDR (Quad Data Rate).</p><p>26</p><p>Fo</p><p>m</p><p>en</p><p>to</p><p>a</p><p>o</p><p>U</p><p>so</p><p>d</p><p>as</p><p>T</p><p>ec</p><p>no</p><p>lo</p><p>gi</p><p>as</p><p>d</p><p>a</p><p>In</p><p>fo</p><p>rm</p><p>aç</p><p>ão</p><p>e</p><p>C</p><p>om</p><p>un</p><p>ic</p><p>aç</p><p>ão</p><p>Arquitetura e Organização de Computadores</p><p>Arquitetura do Processador</p><p>Basicamente, um processador, em sua arquitetura, pode ser dividido em vários blocos:</p><p>Unidade operacional (execução)</p><p>Contém o hardware que executa as instruções, inclusive os responsáveis pela busca e decodificação de</p><p>instruções e a unidade lógica e a aritmética que executam os cálculos.</p><p>Banco de registradores</p><p>Pequena área de armazenamento para os dados que o processador está usando, possibilitando acesso</p><p>rápido.</p><p>Unidade de controle</p><p>Responsável pelo controle do restante do processador, determinando instruções a serem executadas e</p><p>quais operações são necessárias para executar cada instrução.</p><p>Unidade operacional</p><p>Ela é a responsável por executar as transformações sobre dados especificados pelas instruções do</p><p>computador.</p><p>O número, tamanho e uso dos registradores e a quantidade e tipo de operações que a unidade lógica e</p><p>aritmética realiza são alguns dos fatores que determinam o porte de um processador.</p><p>Unidade lógica e aritmética (ULA)</p><p>Nela são realizadas as operações aritméticas e operações lógicas sobre um ou mais operandos. Muitas</p><p>vezes, as operações da ULA são indicadas por instruções simples. As funções mais complexas, exigidas</p><p>pelas instruções de máquina, são realizadas pela ativação sequencial das várias operações básicas</p><p>disponíveis.</p><p>27</p><p>S</p><p>is</p><p>te</p><p>m</p><p>a</p><p>U</p><p>ni</p><p>ve</p><p>rs</p><p>id</p><p>ad</p><p>e</p><p>A</p><p>be</p><p>rta</p><p>d</p><p>o</p><p>B</p><p>ra</p><p>si</p><p>l -</p><p>U</p><p>A</p><p>B</p><p>|</p><p>I</p><p>F</p><p>S</p><p>ul</p><p>-r</p><p>io</p><p>-g</p><p>ra</p><p>nd</p><p>en</p><p>se</p><p>Unidade B</p><p>A ULA apresenta as seguintes características:</p><p>• comprimento em bits dos operandos</p><p>• número e tipo de operações</p><p>• códigos de condição gerados</p><p>Os códigos de condição gerados servem como indicações sobre as operações realizadas, podendo</p><p>ser,</p><p>segundo Weber (2004):</p><p>• Overflow: resultado de uma operação não pode ser representada no espaço disponível (tamanho da palavra</p><p>insuficiente).</p><p>• Sinal: indica se o resultado da operação é negativo ou positivo.</p><p>• Carry: dependendo da operação realizada (soma ou subtração) pode representar o bit de vai-um (carry-out) ou</p><p>vem-um (borrow-out).</p><p>• Zero: indica se o resultado da operação realizada é nulo.</p><p>Acumulador (AC)</p><p>É um registrador que tem como função armazenar um operando que será utilizado, ou o resultado</p><p>fornecido pela ULA. Nos computadores mais simples pode existir um acumulador e nos mais complexos</p><p>podem ser encontrados vários registradores com a função de um acumulador. Dentre sua principal</p><p>característica está o seu comprimento em bits, que indica a quantidade de bits que ele pode armazenar,</p><p>sendo que em cada nova operação, um dado é copiado para o seu interior, fazendo com que o conteúdo</p><p>antigo seja perdido (WEBER, 2004).</p><p>Unidade de controle (UC)</p><p>Sua principal finalidade é a de fornecer os sinais de controle que gerenciam o fluxo interno de dados</p><p>no processador. É ele quem coordena o instante preciso em que ocorrem as transferências entre um</p><p>componente do processador e outro na execução de uma instrução, conforme figura abaixo:</p><p>Cada sinal de controle gerado por ela comanda uma micro-operação a ser realizada. Ela recebe como</p><p>entrada o valor do Registrador de Instrução e decodifica-o, juntamente com os sinais de saída da ULA</p><p>(RST). Para cada código de instrução ela gera uma sequência de sinais diferentes, ativando os circuitos</p><p>correspondentes para que cada uma das tarefas necessárias para a busca e execução da instrução seja</p><p>completada.</p><p>28</p><p>Fo</p><p>m</p><p>en</p><p>to</p><p>a</p><p>o</p><p>U</p><p>so</p><p>d</p><p>as</p><p>T</p><p>ec</p><p>no</p><p>lo</p><p>gi</p><p>as</p><p>d</p><p>a</p><p>In</p><p>fo</p><p>rm</p><p>aç</p><p>ão</p><p>e</p><p>C</p><p>om</p><p>un</p><p>ic</p><p>aç</p><p>ão</p><p>Arquitetura e Organização de Computadores</p><p>As tarefas podem incluir a carga de valores em um registrador, seleção de um dado para entrada em</p><p>componente, ativação da memória, seleção de uma operação da ULA, habilitação de um circuito lógico,</p><p>etc. (WEBER, 2004)</p><p>Banco de registradores</p><p>No computador existem registradores que executam funções específicas e que, dependendo da</p><p>arquitetura, podem ser encontrados em diferentes blocos.</p><p>• Apontador de instruções (Contador de programa – PC)</p><p>Sua função é manter atualizado o endereço de memória da próxima instrução que deve ser executada após</p><p>a atual.</p><p>• Registrador de instruções (RI)</p><p>Armazena o código da instrução que está sendo executada. É em função dele que a unidade de controle</p><p>determina quais sinais de controle devem ser gerados para executar as operações determinadas pela instrução.</p><p>O comprimento em bits do RI está ligado ao tamanho e à codificação das instruções do computador.</p><p>• Registrador de estado (RST)</p><p>Nele ficam armazenados os códigos de condição gerados pela unidade lógica e aritmética. Em função dele,</p><p>em conjunto com o RI, que a UC toma decisões sobre a geração ou não de certos sinais de controle.</p><p>Demais elementos do processador</p><p>Além dos blocos que compõem o processador, também podem ser encontrados os seguintes elementos:</p><p>• Clock (relógio)</p><p>É usado para manter o sincronismo do funcionamento entre todos os componentes do processador.</p><p>• Decodificador de instruções</p><p>É um dispositivo utilizado para identificar as operações a serem realizadas com base na instrução a ser exe-</p><p>cutada.</p><p>• Barramento Interno de Dados</p><p>É o caminho utilizado na transferência de dados entre os registradores e entre registradores e a ULA.</p><p>• Barramento Interno de Endereços</p><p>É o caminho utilizado para a transferência de endereços entre os registradores.</p><p>• Barramento Interno de Controle</p><p>É o caminho utilizado para transmitir os sinais da unidade de controle que comandam o funcionamento de</p><p>cada circuito do processador.</p><p>O conjunto de todos os elementos que formam o processador será organizado de acordo com a arquitetura</p><p>utilizada, como, por exemplo, pode ser visto na figura abaixo:</p><p>29</p><p>S</p><p>is</p><p>te</p><p>m</p><p>a</p><p>U</p><p>ni</p><p>ve</p><p>rs</p><p>id</p><p>ad</p><p>e</p><p>A</p><p>be</p><p>rta</p><p>d</p><p>o</p><p>B</p><p>ra</p><p>si</p><p>l -</p><p>U</p><p>A</p><p>B</p><p>|</p><p>I</p><p>F</p><p>S</p><p>ul</p><p>-r</p><p>io</p><p>-g</p><p>ra</p><p>nd</p><p>en</p><p>se</p><p>Unidade B</p><p>Execução de Instruções</p><p>Um conjunto de instruções é um conjunto de bits devidamente codificados que indica ao computador</p><p>que sequência de micro-operações ele deve realizar. Elas podem ser classificadas, dentre outras formas,</p><p>como (WEBER, 2004):</p><p>• Instruções de transferência de dados</p><p>• Instruções aritméticas e lógicas</p><p>• Instruções de teste e desvio</p><p>O conjunto de instruções envolve o conjunto de todas as instruções que um computador reconhece e pode</p><p>executar. Todo programa é formado por uma sequência finita de instruções de um determinado conjunto</p><p>de instruções. A maioria das instruções que formam um programa realiza operações que envolvem</p><p>operandos (dados), que podem estar em qualquer posição de memória ou em algum registrador.</p><p>Para que a UC consiga localizar o operando é necessário que o endereço dele seja indicado junto com a</p><p>instrução. Nas instruções que envolvem a operação de desvio é necessário indicar para qual posição ou</p><p>endereço de programa será realizado o desvio.</p><p>Sequência de Funcionamento</p><p>A sequência para a realização de uma instrução pelo processador é conhecida como ciclo de “busca –</p><p>decodificação – execução” de instruções.</p><p>Uma instrução é buscada por vez para ser executada, de acordo com os seguintes passos:</p><p>a) Busca da próxima instrução na memória;</p><p>b) Decodificação da instrução;</p><p>c) Dados que servirão como operandos são buscados na memória, se for necessário;</p><p>d) Cálculo do endereço da próxima instrução;</p><p>e) Execução da instrução;</p><p>f) Armazenamento do resultado.</p><p>30</p><p>Fo</p><p>m</p><p>en</p><p>to</p><p>a</p><p>o</p><p>U</p><p>so</p><p>d</p><p>as</p><p>T</p><p>ec</p><p>no</p><p>lo</p><p>gi</p><p>as</p><p>d</p><p>a</p><p>In</p><p>fo</p><p>rm</p><p>aç</p><p>ão</p><p>e</p><p>C</p><p>om</p><p>un</p><p>ic</p><p>aç</p><p>ão</p><p>Arquitetura e Organização de Computadores</p><p>No ciclo de instrução, as seguintes ações são executadas:</p><p>a) Transferência do conteúdo do endereço de memória apontado pelo contador de programa (PC) como sendo da</p><p>próxima instrução a ser executada para o RI.</p><p>b) Atualizar o valor de PC para indicar o endereço da próxima instrução a ser executada.</p><p>c) O decodificador de instruções recebe o código da operação e o decodifica, enviando-o para a UC.</p><p>d) A UC gera os sinais necessários para que a instrução possa ser executada.</p><p>A sequência do ciclo de instruções é executada para cada nova instrução a ser executada repetidamente</p><p>e se constitui nas seguintes etapas (WEBER, 2004):</p><p>a) Busca</p><p>1. Copiar o PC para o registrador de endereços da memória (REM).</p><p>2. Ler uma instrução da memória.</p><p>3. Copiar o registrador de dados da memória (RDM) para o registrador de instruções (RI).</p><p>4. Atualizar o contador de programa (PC).</p><p>b) Decodificação</p><p>1. Determina qual instrução deve ser executada.</p><p>c) Execução</p><p>1. Cálculo de endereço dos operandos (se houver).</p><p>2. Busca dos operandos na memória (se houverem).</p><p>3. Seleção da operação a ser realizada pela ULA.</p><p>4. Carga de registradores.</p><p>5. Escrita de operandos na memória.</p><p>6. Atualização do PC (somente no caso das instruções serem desvios).</p><p>31</p><p>S</p><p>is</p><p>te</p><p>m</p><p>a</p><p>U</p><p>ni</p><p>ve</p><p>rs</p><p>id</p><p>ad</p><p>e</p><p>A</p><p>be</p><p>rta</p><p>d</p><p>o</p><p>B</p><p>ra</p><p>si</p><p>l -</p><p>U</p><p>A</p><p>B</p><p>|</p><p>I</p><p>F</p><p>S</p><p>ul</p><p>-r</p><p>io</p><p>-g</p><p>ra</p><p>nd</p><p>en</p><p>se</p><p>Unidade B</p><p>Pipelines</p><p>Nos computadores mais antigos as instruções eram executadas uma por uma, com o processador</p><p>buscando uma instrução na memória, decodificando-a (determinar qual instrução era), lendo as</p><p>entradas das instruções (no banco de registradores), executando os cálculos exigidos pela instrução</p><p>e escrevendo os resultados de volta no banco de registradores. O problema desta abordagem é que o</p><p>hardware necessário para executar cada um desses passos é diferente, de modo que a maior parte dele</p><p>fica ocioso em um determinado momento, esperando que as outras partes do processador completem a</p><p>sua parte de execução da instrução. (CARTER, 2002)</p><p>Com o objetivo de tornar ágil este processo, evita-se que elementos do processador fiquem parados,</p><p>é utilizada a técnica de pipelining (pipe = tubo; line = sequência). Ela consiste em reduzir o tempo de</p><p>execução de um conjunto de instruções, sendo que o tempo para executar</p><p>uma instrução continua o</p><p>mesmo, mas a quantidade de instruções executadas por um período de tempo aumenta. (CARTER, 2002)</p><p>Atenção</p><p>Ele utiliza a metodologia de uma linha de montagem, onde a fabricação de um produto qualquer é subdividida</p><p>em partes (implementadas em setores) nas quais, tarefas independentes estão sendo desenvolvidas ao mesmo</p><p>tempo. O tempo para a produção de um produto não diminui, mas sim o tempo entre eles.</p><p>É uma técnica de implementação de CPU onde múltiplas instruções podem estar em execução ao mesmo</p><p>tempo em estágios de processamento diferentes, sendo que cada um deles é responsável pela execução</p><p>de uma parte da instrução e possui o seu próprio bloco de controle. Assim que um estágio completa sua</p><p>tarefa com uma instrução, passa ela para o estágio seguinte e começa a tratar da próxima instrução.</p><p>Sendo que várias instruções são executadas ao mesmo tempo, ocorre um acréscimo no desempenho do</p><p>processador.</p><p>A execução de uma instrução, por exemplo, pode ser dividida em 5 estágios básicos:</p><p>1. Busca de instruções (fetch)</p><p>2. Decodificação de instruções (decode)</p><p>3. Busca dos operandos e armazenamento em registradores (operand fetch)</p><p>4. Execução de instruções (execute)</p><p>5. Armazenamento do resultado em registradores (store)</p><p>Sem a utilização de pipeline a execução de uma instrução ocorreria da seguinte maneira:</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1 processo1</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1</p><p>2 processo1</p><p>32</p><p>Fo</p><p>m</p><p>en</p><p>to</p><p>a</p><p>o</p><p>U</p><p>so</p><p>d</p><p>as</p><p>T</p><p>ec</p><p>no</p><p>lo</p><p>gi</p><p>as</p><p>d</p><p>a</p><p>In</p><p>fo</p><p>rm</p><p>aç</p><p>ão</p><p>e</p><p>C</p><p>om</p><p>un</p><p>ic</p><p>aç</p><p>ão</p><p>Arquitetura e Organização de Computadores</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1</p><p>2</p><p>3 processo1</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1</p><p>2</p><p>3</p><p>4 processo1</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1</p><p>2</p><p>3</p><p>4</p><p>5 processo1</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1</p><p>2</p><p>3</p><p>4</p><p>5</p><p>6 processo2</p><p>Dessa forma, quando um estágio estava ocupado executando sua função, os outros 4 estágios ficavam</p><p>ociosos, assim como apenas um processo ocupa o processador, levando cinco unidades de tempo para</p><p>executar e só então outro processo pode começar a ser processado.</p><p>Com a utilização de pipelines, o primeiro processo continua demorando cinco unidades de tempo para</p><p>ser executado, mas logo a seguir, em cada unidade de tempo um novo processo é executado. Conforme</p><p>segue:</p><p>33</p><p>S</p><p>is</p><p>te</p><p>m</p><p>a</p><p>U</p><p>ni</p><p>ve</p><p>rs</p><p>id</p><p>ad</p><p>e</p><p>A</p><p>be</p><p>rta</p><p>d</p><p>o</p><p>B</p><p>ra</p><p>si</p><p>l -</p><p>U</p><p>A</p><p>B</p><p>|</p><p>I</p><p>F</p><p>S</p><p>ul</p><p>-r</p><p>io</p><p>-g</p><p>ra</p><p>nd</p><p>en</p><p>se</p><p>Unidade B</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1 processo1</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1 processo1</p><p>2 processo2 processo1</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1 processo1</p><p>2 processo2 processo1</p><p>3 processo3 processo2 processo1</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1 processo1</p><p>2 processo2 processo1</p><p>3 processo3 processo2 processo1</p><p>4 processo4 processo3 processo2 processo1</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1 processo1</p><p>2 processo2 processo1</p><p>3 processo3 processo2 processo1</p><p>4 processo4 processo3 processo2 processo1</p><p>5 processo5 processo4 processo3 processo2 processo1</p><p>Tempo Estágio1 Estágio2 Estágio3 Estágio4 Estágio5</p><p>1 processo1</p><p>2 processo2 processo1</p><p>3 processo3 processo2 processo1</p><p>4 processo4 processo3 processo2 processo1</p><p>5 processo5 processo4 processo3 processo2 processo1</p><p>6 processo6 processo5 processo4 processo3 processo2</p><p>34</p><p>Fo</p><p>m</p><p>en</p><p>to</p><p>a</p><p>o</p><p>U</p><p>so</p><p>d</p><p>as</p><p>T</p><p>ec</p><p>no</p><p>lo</p><p>gi</p><p>as</p><p>d</p><p>a</p><p>In</p><p>fo</p><p>rm</p><p>aç</p><p>ão</p><p>e</p><p>C</p><p>om</p><p>un</p><p>ic</p><p>aç</p><p>ão</p><p>Arquitetura e Organização de Computadores</p><p>Alguns estágios apresentam tempo de execução diferente dos outros, fazendo com que o tempo</p><p>necessário para encher o pipeline e esvaziá-lo seja variável, com instruções ficando presas no pipeline,</p><p>aguardando que as instruções que geram suas entradas sejam executadas. Também existe uma série</p><p>de fatores que limitam a capacidade de um pipeline de executar instruções, como dependências entre</p><p>instruções (leitura ou escrita de registradores que estão sendo utilizados por outras instruções), desvios</p><p>(processador não sabe qual instrução deve buscar até que ocorra o desvio) e o tempo necessário para</p><p>acessar a memória. (CARTER, 2002)</p><p>Devido à existência de fatores que podem comprometer o desempenho do uso de pipelines, existem</p><p>técnicas que são utilizadas para amenizá-los:</p><p>• Pré-decodificação: o processador pode realizar a decodificação de instruções (paralelamente) antes do momento</p><p>de elas serem executadas.</p><p>• Execução fora-de-sequência: o processador pode executar previamente um determinado número de instruções.</p><p>Posteriormente, a ordem de execução é verificada e os resultados das operações são repassados na sua ordem</p><p>correta.</p><p>• Previsão de desvio: caso exista uma instrução de desvio dentro do pipeline, ela pode ser calculada mais cedo (para</p><p>determinar qual caminho será percorrido e descartar as instruções que não serão necessárias) no pipeline ou</p><p>prever o destino de cada possibilidade de desvio, para que o processador possa procurar as instruções que serão</p><p>necessárias anteriormente.</p><p>Medidas de Desempenho</p><p>Existem diversas formas de medir o desempenho de sistemas computacionais. Dentre elas podemos</p><p>destacar:</p><p>• MIPS (Milhões de Instruções por Segundo): mede a execução de instruções, dividindo o número de instruções</p><p>executadas de um programa pelo tempo necessário para executá-lo, não considerando que existem diferentes</p><p>instruções, com tempos de execução diferentes.</p><p>• FLOPS (Operações de Ponto Flutuante por Segundo): mede basicamente o desempenho da ULA, analisando apenas</p><p>quantas instruções complexas são executadas.</p><p>• Tempo de acesso: está relacionado à velocidade de cada componente e a do barramento que interliga o</p><p>processador à memória, tratando o tempo gasto entre o instante em que foi realizada uma solicitação e o instante</p><p>em que o sistema entregou a resposta.</p><p>Programação de processador</p><p>A única linguagem que o processador trabalha é a de máquina, baseada em linguagem binária, que</p><p>é utilizada para a codificação do conjunto de instruções de um computador. Para facilitar a tarefa de</p><p>programação e de depuração são utilizados mnemônicos, que são associados aos códigos das instruções,</p><p>nomes aos operandos e rótulos (labels) às posições ocupadas pelo programa, a chamada linguagem</p><p>simbólica. (WEBER, 2004)</p><p>Nesse processo, é utilizado o montador, pois o programa escrito em linguagem simbólica precisa ser</p><p>traduzido em linguagem de máquina para que possa ser executado, passando por um processo conhecido</p><p>como montagem.</p><p>35</p><p>S</p><p>is</p><p>te</p><p>m</p><p>a</p><p>U</p><p>ni</p><p>ve</p><p>rs</p><p>id</p><p>ad</p><p>e</p><p>A</p><p>be</p><p>rta</p><p>d</p><p>o</p><p>B</p><p>ra</p><p>si</p><p>l -</p><p>U</p><p>A</p><p>B</p><p>|</p><p>I</p><p>F</p><p>S</p><p>ul</p><p>-r</p><p>io</p><p>-g</p><p>ra</p><p>nd</p><p>en</p><p>se</p><p>Unidade B</p><p>Resumo</p><p>Ao final da presente unidade vimos que:</p><p>• Os programas a serem executados ficam armazenados na memória principal (RAM) de onde serão acessados pelo</p><p>processador.</p><p>• Os dados necessários para a execução de um programa são armazenados, a partir da memória principal, em</p><p>registradores (memória temporária interna ao processador), assim como o resultado do processamento.</p><p>• A transferência de informações envolvendo processador e memória, seja na leitura ou na escrita, ocorre através de</p><p>elementos como registradores (REM e RDM) e barramentos (de dados, de endereços e de controle).</p><p>• O processador trabalha com dois clocks, um para realizar operações internamente e outro para se comunicar com</p><p>demais componentes do computador (mais lentos), sendo que existem técnicas de compensação como o uso de</p><p>memória cache e o envio de mais informações por ciclo de clock.</p><p>• Internamente, o processador é dividido nos blocos de unidade operacional (composta por ULA e acumulador), de</p><p>banco de registradores (formada por PC, RI e RST) e da unidade de controle, bem como o clock, o decodificador de</p><p>instruções e barramentos internos.</p><p>• O conjunto de instruções de um processador, que determina o que ele pode fazer (geralmente operações</p><p>sobre</p><p>operandos), pode ser dividido em três tipos de instruções: de transferência de dados, aritméticas e lógicas e as de</p><p>teste e desvio.</p><p>• A sequência para a realização de uma instrução pelo processador é conhecida como ciclo de “busca – decodificação</p><p>– execução” de instruções. Nela os elementos dos blocos básicos são ativados para que ocorra o processamento;</p><p>• A técnica de pipeline é praticada no processador visando dividir a execução de uma instrução em estágios de</p><p>processamento diferentes, sendo que cada um deles é responsável pela execução de uma parte da instrução,</p><p>ocorrendo ao mesmo tempo e possuem o seu próprio bloco de controle.</p><p>• As formas existentes de medir o desempenho de processadores, podem ser destacadas como MIPS, a FLOPS e o</p><p>tempo de acesso, dentre outras.</p><p>Questões de revisão</p><p>a) Qual é a relação existente entre o processador e os programas a serem executados? Que elementos são</p><p>utilizados e como eles se relacionam na transferência de valores (na leitura e na escrita) entre a memória RAM</p><p>e o processador?</p><p>b) Comente a diferença entre clock interno e clock externo. Por que existem dois clocks no processador? Que</p><p>técnicas são utilizadas para minimizar a diferença entre eles?</p><p>c) Em que blocos pode ser dividida a arquitetura de um processador? Comente sobre as características de cada</p><p>bloco.</p><p>d) Conceitue conjunto de instruções, instrução, programa e operandos.</p><p>e) A sequência da execução de uma instrução envolve que passos? Como funciona cada um dos passos da</p><p>sequência do ciclo de instruções?</p><p>f) Que medidas de desempenho podem ser utilizadas para um processador?</p><p>g) Qual é a finalidade de uso e como funciona o pipeline em um processador?</p><p>h) Que técnicas são utilizadas para compensar a diferença entre estágios de um pipeline?</p><p>i) Como é realizada a programação de um processador?</p>