Next: Computadores com Jogo de
Up: Arquitectura e Organiza��o Interna
Previous: Jogos de Instru��es: Modos
Este cap�tulo discute os aspectos do processador, ainda, n�o cobertos na parte III e estabelece a plataforma para a discuss�o das arquitecturas RISC e super-escalar nos cap�tulos 12 e 13.
O cap�tulo come�a com um resumo da organiza��o do processador.
Os registos que constituem a mem�ria interna do processador s�o ent�o analisados.
Ficamos, ent�o, numa posi��o para regressar � discuss�o (iniciada na sec��o 3.2) do ciclo de instru��o.
Uma descri��o do ciclo de instru��o e duma t�cnica comum chamada encadeamento de instru��es completa a descri��o.
O cap�tulo conclui com o exame de alguns aspectos adicionais da organiza��o do Pentium e do PowerPc.
Para compreender a organiza��o do processador, consideremos os requisitos do processador, as coisas que tem de fazer:
- Extrair Instru��es: O processador tem de ler instru��es da mem�ria.
- Interpretar as Instru��es: As instru��es t�m de ser descodificadas para determinar as ac��es necess�rias.
- Extrair Dados: A execu��o de uma instru��o pode necessitar de ler dados da mem�ria ou de um m�dulo de E/S.
- Processar Dados: A execu��o de uma instru��o pode necessitar de efectuar alguma opera��o aritm�tica ou l�gica sobre os dados.
- Escrever Dados: Os resultados de uma execu��o podem obrigar � escrita de dados na mem�ria ou num m�dulo de E/S.
� necess�rio que fique claro que para poder ser capaz de fazer estas coisas o processador necessita de guardar, temporariamente, alguns dados.
Tem de ter presente a posi��o da �ltima instru��o para que possa saber de onde extrair a pr�xima instru��o.
Tem de preservar, temporariamente, instru��es e dados enquanto uma instru��o est� a ser executada.
Por outras palavras, o processador necessita de uma pequena mem�ria interna.
A figura 11-1 � uma vista simplificada do processador, indicando as suas liga��es ao resto do sistema atrav�s do barramento de sistema.
Figura 11.1:
O processador com o barramento de sistema
 |
Um interface semelhante seria necess�rio para cada uma das estruturas de interconex�o apresentadas no cap�tulo 3.
O leitor recordar� que o componentes mais importantes do processador s�o a unidade l�gica e aritm�tica (ALU) e a unidade de controlo (UC).
A ALU � quem efectivamente efectua os c�lculos e o processamento dos dados.
A unidade de controlo dirige o movimento de dados e de instru��es de e para o processador e controla a opera��o da ALU.
A figura mostra, al�m do mais, uma mem�ria interna m�nima constitu�da por um jogo de posi��es de armazenamento chamados registos.
A figura 11-2 � uma vista ligeiramente mais detalhada do processador.
Est�o indicados os caminhos para a transfer�ncia de dados e para a l�gica de controlo, incluindo um elemento designado por barramento interno do processador.
Este elemento � necess�rio para mover os dados entre os v�rios registos e a ALU, uma vez que a ALU, de facto, opera exclusivamente sobre dados na mem�ria interna do processador.
A figura tamb�m mostra os elementos t�picos b�sicos da ALU.
� de notar a similaridade entre a estrutura interna do computador como um todo e a estrutura interna do processador.
Em ambos os casos, h� uma pequena colec��o de elementos mais importantes (computador: processador, E/S, mem�ria; processador: unidade de controlo, ALU, registos) ligados atrav�s de caminhos de dados.
Figura 11.2:
Estrutura interna do processador.
 |
Tal como foi discutido no cap�tulo 4, um sistema de computa��o usa uma hierarquia de mem�ria.
Nos n�veis mais elevados da hierarquia, a mem�ria � mais r�pida, mais pequena e mais dispendiosa (por bit).
Dentro do processador, h� um conjunto de registos que funcionam a um n�vel de mem�ria superior, na hierarquia, � mem�ria principal e � cache.
Os registos no processador servem para duas fun��es:
- Registos Vis�veis ao Utilizador: Estes permitem ao programador de linguagens m�quina e de montagem minimizar as refer�ncias � mem�ria principal atrav�s da optimiza��o do uso dos registos.
- Registos de Controlo e de Estado: Estes s�o usados pela unidade de controlo para dirigir as opera��es do processador e por programas privilegiadas do sistema de opera��o para controlar a execu��o de programas.
N�o h� uma separa��o n�tida dos registos pertencentes a estas duas categorias.
Por exemplo em algumas m�quinas o contador de programa � vis�vel ao programador (e.g. VAX) mas em muitos outros n�o �.
Contudo, para efeito da discuss�o que segue iremos usar estas categorias.
Um registo vis�vel ao utilizador � aquele que pode ser referenciado atrav�s da linguagem m�quina que o processador executa.
Virtualmente todos os projectistas de processadores actuais oferecem um certo n�mero de registos vis�veis ao utilizador, por oposi��o a um �nico acumulador.
Podemos categoriz�-los nas seguintes categorias:
- Uso Geral
- Dados
- Endere�o
- C�digos de Condi��o
Os registos de uso-geral podem ser dedicados pelo programador a uma variedade de fun��es .
Algumas vezes a sua utiliza��o no jogo de instru��es � ortogonal � opera��o.
Isto corresponde a uma verdadeira utiliza��o de uso geral.
Muitas vezes, por�m, h� restri��es. Por exemplo, podem existir registos dedicados para opera��es de v�rgula flutuante.
Em alguns casos, os registos de uso geral podem ser usados para fun��es de endere�amento (e.g. indirecto por registo, deslocamento).
Em outros casos, h� uma n�tida, ou parcial, separa��o entre registos de dados e de endere�amento.
Os registos de dados devem ser usados, apenas, para guardar dados e n�o dever�o ser usados para o c�lculo do endere�o de um operando.
Os registos de endere�os podem eles pr�prios ser, de alguma forma, de uso geral, ou podem ser dedicados a um modo de endere�amento espec�fico. Os exemplos incluem:
- Apontadores de Segmento: Numa m�quina com endere�os segmentados (ver sec��o 7.3), um registo de segmento mant�m o endere�o base do segmento. Podem existir m�ltiplos registos: por exemplo, um para o sistema de opera��o e um para o processo corrente.
- Registos de �ndice: Estes s�o usados para endere�amento por indexa��o e podem ser auto-indexados.
- Apontador de Pilha: Se existir endere�amento da pilha vis�vel ao utilizador, ent�o, tipicamente a pilha est� na mem�ria e h� um registo dedicado que aponta para o topo da pilha.
Isto permite endere�amento impl�cito; isto �, p�r, tirar, e outras instru��es de pilha n�o necessitam de conter um operando expl�cito de pilha.
H� diversos t�picos de projecto que dever�o ser aqui considerados.
Um t�pico importante � se os registos dever�o ser totalmente de uso geral ou dever�o ser de uso especializado.
J�, antes, em cap�tulos precedentes, toc�mos neste assunto, uma vez que este afecta o projecto de jogo de instru��es. Com o uso de registos especializados pode, em geral, estar impl�cito no c�digo de opera��o o tipo de registo a que uma certa especifica��o de operando se refere.
O especifica��o de operando tem apenas de identificar um registo de entre um jogo de registos especializados em vez de um registo de entre a totalidade dos registos, desta forma, poupando bits.
Noutra perspectiva, esta especializa��o limita a flexibilidade do programador.
Para este t�pico de projecto n�o existe solu��o nem final nem melhor, mas, como foi mencionado, a tend�ncia parece ser favor�vel ao uso de registos especializados.
Um t�pico de projecto � o n�mero de registos, a oferecer tanto de uso geral, como de dados mais endere�os.
De novo, isto afecta o projecto de jogo de instru��es, uma vez que mais registos obriga a mais bits de especifica��o de operandos.
Tal como discutimos anteriormente, qualquer coisa entre 8 e 32 registos pode ser �ptimo.
Menos registos resulta em mais refer�ncias � mem�ria; mais registos n�o reduz significativamente as refer�ncias � mem�ria (e.g. ver).
Contudo, uma nova abordagem que encontra vantagens no uso de centenas de registos manifesta-se em alguns sistemas RISC e � discutida no cap�tulo 12.
Finalmente, h� o t�pico de comprimento de registo.
Os registos que t�m de conter endere�os t�m, obviamente, de ser pelo menos suficientemente longos para conter o maior dos endere�os.
Os registos de dados devem ser capazes de guardar valores do maior n�mero de tipos de dados.
Algumas m�quinas permitem que dois registos cont�guos possam ser usados como um para guardar valores de duplo-tamanho.
Uma categoria final de registos, que s�o, pelo menos, parcialmente vis�veis ao utilizador guardam c�digos de condi��o (tamb�m referidos como bandeiras).
Os c�digos de condi��o s�o bits ajustados pelo hardware do processador como resultado das opera��es.
Por exemplo, uma opera��o aritm�tica pode produzir um resultado positivo, negativo, zero ou excesso.
Al�m do resultado, ele pr�prio, ser guardado num registo ou em mem�ria, �, tamb�m, feito um ajuste do c�digo de condi��o.
O c�digo pode ser subsequentemente testado como parte da opera��o de uma deriva��o condicional.
Os bits do c�digo de condi��o s�o coleccionados em um ou mais registos.
Habitualmente, fazem parte de um registo de controlo.
Geralmente, as instru��es m�quina permitem que estes bits sejam lidos atrav�s de refer�ncias impl�citas, mas n�o podem ser alterados pelo programador.
Em alguma m�quinas, uma chamada a uma sub-rotina resulta na salvaguarda autom�tica da todos os registos vis�veis que ir�o ser restaurados no retorno.
A salvaguarda e o restauro � efectuado pelo processador como fazendo parte da execu��o das instru��es de chamada e de retorno.
Isto permite a cada sub-rotina usar de forma independente os registos vis�veis do utilizador.
Em outras m�quinas, � da responsabilidade do programador salvaguardar o conte�do dos registos vis�veis ao utilizador relevantes imediatamente antes de uma chamada a sub-rotina, atrav�s da inclus�o de instru��es para esse fim.
H� uma variedade de registos de processador que s�o empregues para controlar a opera��o do processador.
A maior parte destes, ma maioria das m�quinas, n�o s�o vis�veis ao utilizador.
Alguns deles podem ser vis�veis para as instru��es m�quina executadas em modo de controlo ou de sistema de explora��o.
Claro, m�quinas diferentes ter�o diferentes organiza��es de registos e ir�o usar diferentes terminologias.
Listamos aqui uma lista, razoavelmente, completa de tipos de registos, juntamente com uma descri��o breve.
Quatro registos s�o essenciais para execu��o de instru��es:
- Contador de Programa (PC): Cont�m o endere�o de uma instru��o a ser extra�da
- Registo de Instru��o (IR): Cont�m a instru��o extra�da mais recentemente.
- Registo de Endere�amento de Mem�ria (MAR): Cont�m o endere�o de uma localiza��o na mem�ria.
- Registo Tamp�o de Mem�ria (MBR): Cont�m uma palavra de dados para ser escrita para mem�ria ou a palavra mais recentemente lida.
O contador de programa cont�m o endere�o de uma instru��o.
Tipicamente, o contador de programa � actualizado pelo processador depois de cada instru��o de forma a apontar sempre para a pr�xima instru��o a ser executada. Uma deriva��o ou instru��o de omiss�o tamb�m ir� modificar o conte�do do PC.
A instru��o extra�da � carregada num registo de instru��o, onde o c�digo de opera��o e a especifica��o de operando � analisada. As trocas de dados com a mem�ria s�o atrav�s do MAR e MBR. Numa sistema organizado em barramento, o MAR liga-se directamente ao barramento de endere�os e o MBR liga directamente ao barramento de dados.
Os registos vis�veis do utilizador, por sua vez, trocam dados com o MBR.
Os quatros registos que acabamos de referir s�o usados para a movimenta��o de dados entre o processador e a mem�ria.
Dentro do processador, os dados tem de ser apresentados ao processador para serem processados.
A ALU pode ter acesso directo ao MBR e aos registos vis�veis do utilizador.
Em alternativa, podem existir registos tamp�o adicionais pr�ximos da ALU; estes registos servem como registos de entrada de sa�da para a ALU e trocam dados com o MBR e os registos vis�veis do utilizador.
Todos os projectos de processadores incluem um registo ou jogo de registos, muitas vezes conhecidos como palavra de estado do programa (PSW) que cont�m informa��o de status.
O PSW cont�m, tipicamente, c�digos de condi��o mais informa��o de status.
Os campos comuns ou bandeiras incluem o seguinte:
- Sinal: Cont�m o bit de sinal resultante da �ltima opera��o aritm�tica
- Zero: Ajustada a 1 quando o resultado � 0
- Transporte: Ajustado a 1 se o resultado da opera��o inclui transporte (adi��o e subtrac��o) do bit mais significativo. Usado em opera��es aritm�ticas de multi-palavras.
- Igualdade: Ajustado a 1 se o resultado de uma compara��o l�gica � a igualdade.
- Excesso: Usado para indicar transbordo aritm�tico.
- Habilita��o/Inibi��o de Interrup��es: Usado para autorizar ou impedir interrup��es.
- Supervisor: Indica se o processador est� a executar em modo supervisor ou modo utilizador. Certas instru��es privilegiadas s� podem ser executadas em modo supervisor e o acesso a certas �reas de mem�ria s� pode ser feito em modo supervisor.
H� um certo n�mero de outros registos relacionados com o status e o controlo que podem ser encontrados em projectos particulares de processadores.
A juntar ao PSW, pode existir um apontador para um bloco de mem�ria contendo informa��o de status adicional (e.g. blocos de controlo de processos).
Em m�quinas que utilizam interrup��es vectorizadas, pode existir um registo de vector de interrup��o.
Se uma pilha � usada para implementar certas fun��es (e.g. chamada a sub-rotina) ent�o � necess�rio um apontador de pilha.
Um apontador para tabela de p�ginas � usado com um sistema de mem�ria virtual.
Finalmente, podem ser usados registos para controlo de opera��es de E/S.
Um certo n�mero de factores influenciam o projecto de organiza��o dos registos de controlo e de status
Um t�pico chave � o suporte ao sistema de opera��o.
Certos tipos de informa��o de controlo s�o de utilidade espec�fica do sistema de opera��o.
Se o projectista do processador tiver um conhecimento da funcionalidade do sistema de explora��o a ser usado, ent�o a organiza��o de registos pode, em certa medida, ser ajustado ao sistema de explora��o.
Um outro t�pico de projecto � a aloca��o de informa��o de controlo entre os registos e a mem�ria.
� habitual dedicar as primeiras (mais baixos) centenas ou milhares de palavras de mem�ria para efeitos de controlo. O projectista tem de decidir quanta informa��o de controlo deve residir em registos e quanta deve residir em mem�ria.
Surge ent�o o habitual compromisso custo versus velocidade.
� instrutivo examinar e comparar a organiza��o de registos de sistemas compar�veis.
Nesta sec��o, olhamos para tr�s micro-processadores de 16-bits que foram projectados mais ou menos ao mesmo tempo:
O Zilog Z8000 o Intel 8086 e o Motorola MC68000.
A figura 11-3 mostra a organiza��o de registos de cada um; registos puramente internos, tais como registos de endere�amento de mem�ria n�o s�o apresentados.
Figura 11.3:
Organiza��o dos registos de um microprocessador.
 |
O Z8000 faz uso de 16 registos de 16-bits de uso-geral, que podem ser usados para dados, endere�amento e indexa��o.
Os projectistas sentiram que era mais importante oferecer um jogo de registos regularizados em vez de poupar em bits de instru��o atrav�s do uso de registos de uso-espec�fico.
Al�m disso, eles preferiram deixar ao programador a atribui��o de fun��es aos registos, assumindo que poderiam existir diferentes arranjos para diferentes aplica��es.
Os registos podem ser usados para opera��es de 8-bits e de 32-bits.
� usado um espa�o de endere�amento segmentado ( 7-bits para n�mero de segmento, 16 bits para deslocamento) sendo necess�rio dois registos para conter um endere�o simples.
Dois dos registos s�o tamb�m usados como apontadores de pilha impl�citos para modo de sistema e modo normal.
O Z8000 tamb�m inclui cinco registos relacionados com o status do programa. Dois registos cont�m o contador de programa e dois o endere�o da �rea de Status do Programa em mem�ria. Um registo de condi��es de 16-bits mant�m v�rios bits de status e de controlo.
O Intel 8086 segue uma abordagem diferente � organiza��o de registos. Todo o registo � de uso espec�fico, embora alguns registos possam tamb�m ser usados como registos de uso-geral.
O 8086 cont�m quatro registos de dados de 16-bits que s�o acess�veis numa base de 8 ou 16-bits e quatro apontadores de 16-bits e registos e �ndice.
Os registos de dados podem ser utilizados como de uso-geral em algumas instru��es.
Em outras, os registos s�o usados implicitamente. Por exemplo uma instru��o de multiplica��o usa sempre o acumulador.
Os quatro registos apontadores s�o tamb�m usados implicitamente num certo n�mero de instru��es; cada um cont�m um deslocamento de segmento.
H� tamb�m quatro registos de segmentos de 16-bits.
Tr�s dos quatro registos de segmento s�o usados, de forma dedicada e impl�cita, para apontar para o segmento da instru��o corrente (�til em instru��es de deriva��o), um segmento que cont�m dados e um segmento que cont�m a pilha, respectivamente. Estes usos dedicados e impl�citos suportam codifica��o compacta pagando o custo da redu��o em flexibilidade.
O 8086 tamb�m inclui um apontador de instru��es e um jogo de condi��es de 1-bit para status e controlo.
O Motorola MC68000 cai, de alguma maneira, entre as filosofias de projecto dos micro-processadores Zilog e Intel.
O MC68000 parte os seus registos de 32-bits em oito registos de dados e nove registos de endere�os.
Os oito registos de dados s�o usados em primeiro lugar para o manuseamento de dados e s�o usados em endere�amento apenas como registos de �ndice.
A largura dos registos permite opera��es de dados sobre 8-, 16- e 32-bits, determinadas pelo c�digo de opera��o. Os registos de endere�amento cont�m endere�os de 32-bits (sem segmenta��o); dois destes registos s�o tamb�m usados como apontadores para a pilha, um para utilizadores e outro para o sistema de explora��o, dependendo do modo de execu��o corrente.
Ambos os registos t�m o n�mero 7, uma vez que s� um pode ser usado de cada vez.
O MC68000 tamb�m inclui um contador de programa de 32-bits e um registo de status de 16-bits.
Tal como os projectistas do Zilog, A equipa da Motorola pretendia uma jogo de instru��es regular, sem registos de uso-especial.
Uma preocupa��o com a efici�ncia do c�digo levou-os a dividir os registos em dois componentes funcionais, poupando um bit em cada especificador de registo.
Isto parece um compromisso razo�vel entre a generaliza��o completa e a compacta��o do c�digo.
Os termos desta compara��o devem ser claros.
N�o h�, ainda, nenhuma filosofia universalmente aceite acerca da melhor maneira de organizar os registos do processador.
Tal como com o projecto de jogo de instru��es e muitos outros t�picos do projecto de processadores, � ainda uma quest�o de gosto e de op��o.
Um segundo ponto instrutivo respeitante � organiza��o de registos � ilustrado pela figura 11-4.
Esta figura mostra a organiza��o dos registos vis�veis ao utilizadores para o Zilog 80000 e o Intel 80386 que s�o micro-processadores de 32-bits projectados como extens�es ao Z8000 e ao 8086 respectivamente11.1.
Ambos os dois novos processadores usam, registos de 32-bits.
Contudo, para manter a compatibilidade dos programas escritos para m�quinas mias antigas, ambos os novos processadores ret�m a organiza��o original dos registos embebida na nova organiza��o.
Dadas estas restri��es os arquitectos de processadores de 32-bits tiveram uma flexibilidade limitada no projecto de organiza��o de registos.
Figura 11.4:
Extens�o da organiza��o de registos em microprocessador de 32-bits.
 |
Na sec��o 3.2 descrevemos o ciclo de instru��es do processador.
A figura 11.5 repete uma das figuras usadas na descri��o (fig. 3.9)..Para recordar, um ciclo de instru��es inclui os seguintes sub-ciclos:
- Extrac��o: Ler a pr�xima instru��o da mem�ria para o processador.
- Execu��o:Interpretar o c�digo de opera��o e efectuar a opera��o indicada.
- Interrup��o: Se as interrup��es estiverem autorizadas e tiver ocorrido uma interrup��o, guardar o estado actual do processo e servir a interrup��o
Estamos agora em posi��o para aumentar a elabora��o do ciclo de instru��es. Em primeiro lugar, temos de introduzir um sub-ciclo adicional, conhecido como ciclo indirecto.
Vimos, no cap�tulo 10, que a execu��o de uma instru��o podia envolver um ou mais operandos na mem�ria, cada um dos quais necessitava de um acesso � mem�ria, Al�m disso, se fosse usado endere�amento indirecto, ent�o, eram necess�rios acessos adicionais � mem�ria.
Figura 11.5:
Ciclo de instru��es com interrup��es.
 |
Podemos pensar na extrac��o de endere�os indirectos como mais um sub-ciclo de instru��o.
O resultado � mostrado na figura 11-6.
A linha principal de actividade consiste em actividades alternadas de extrac��o e execu��o de instru��es.
Depois de ser extra�da uma instru��o � examinada para determinar se est� envolvido endere�amento indirecto.
Se assim for, os operandos requeridos s�o extra�dos usando endere�amento indirecto.
Figura 11.6:
O ciclo de instru��es.
 |
A seguir a execu��o e a interrup��o podem ser processadas antes da extrac��o da pr�xima instru��o.
Uma outra forma de ver este processo � mostrado na figura 11-7, que � uma vers�o revista da figura 3.12.
Isto ilustra mais correctamente a natureza do ciclo de instru��es.
Uma vez extra�da uma instru��o, os seus especificadores de operandos t�m de ser identificados.
Cada operando de entrada em mem�ria � ent�o extra�do e este processo pode necessitar de endere�amento indirecto.
Operandos baseados em registos n�o necessitam de ser extra�dos.
Uma vez executado o c�digo de opera��o um processo semelhante pode ser necess�rio para guardar o resultado na mem�ria principal.
Figura 11.7:
Diagrama de estados do ciclo de instru��es.
 |
Durante um ciclo de instru��es, a sequ�ncia exacta de eventos depende do projecto do processador. Podemos contudo indicar, em termos gerais, o que tem de acontecer.
Assumamos que o processador emprega um registo de endere�os de mem�ria (MAR), um registo de tamp�o de mem�ria, um contador de programa (PC) e um registo de instru��es (IR).
Durante um ciclo de instru��o � lida uma instru��o da mem�ria.
A figura 11-8, mostra o fluxo de dados durante este ciclo.
Figura 11.8:
Fluxo de dados, ciclo de extrac��o.
 |
O PC cont�m o endere�o da pr�xima instru��o a ser extra�da.
O endere�o � posto no MAR e colocado no barramento de endere�os.
A unidade de controlo faz um pedido de leitura de mem�ria e o resultado � colocado no barramento de dados e copiado para o MBR e depois levado para o IR.
Entretanto, o PC � incrementado de 1, em prepara��o para a pr�xima extrac��o.
Uma vez terminado o ciclo de extrac��o, a unidade de controlo examina o conte�do do IR para determinar se este cont�m um especificador de operando que usa endere�amento indirecto.
Se assim for, � efectuado um ciclo indirecto.
Tal como se mostra na figura 11-9 este � um ciclo simples.
Figura 11.9:
Fluxo de dados, ciclo de caminho indirecto.
 |
Os
-bits mais � direita do MBR, que cont�m a refer�ncia � mem�ria, s�o transferidos para o MAR. Da�, a unidade de controlo faz um pedido leitura � mem�ria, para colocar o endere�o pretendido do operando no MBR.
Os ciclos de caminho indirecto e de extrac��o s�o simples e previs�veis. O ciclo de instru��o assume v�rias formas uma vez que a forma depende de qual das v�rias instru��es m�quina est� no IR.
Este ciclo pode envolver a transfer�ncia de dados entre registos, a leitura ou escrita da mem�ria ou da E/S e ou a chamada � ALU.
Tal como os ciclos de caminho indirecto e de extrac��o, o ciclo de interrup��o � simples e previs�vel (figura 11-10).
Figura 11.10:
Fluxo de dados, ciclo de interrup��o.
 |
O conte�do corrente do PC deve ser salvaguardado para que o processador possa voltar � actividade normal ap�s a interrup��o.
Assim, o conte�do do PC � transferido para o MBR para ser escrito na mem�ria.
A posi��o especial da mem�ria reservada para este efeito � carregada no MAR da unidade de controlo.
Pode ser, por exemplo, um apontador de pilha.
O PC � carregado com o endere�o da rotina de interrup��o.
Como resultado, o pr�ximo ciclo de instru��o ir� come�ar com a extrac��o da instru��o apropriada.
� medida que os sistema de computa��o evoluem, maiores rendimentos podem ser alcan�ados aproveitando os melhoramentos da tecnologia, tais como, circuitos mais r�pidos.
Adicionalmente, os melhoramentos na organiza��o do processador podem melhorar o rendimento.
J� vimos alguns exemplos disto, tais como o uso de m�ltiplos registos, em vez de um simples acumulador e o uso da mem�ria cache. Uma outra abordagem organizacional, que � muito comum, � o encadeamento de instru��es.
O encadeamento de instru��es � muito semelhante ao uso de uma linha de montagem de uma f�brica.
Uma linha de montagem aproveita o facto de que um produto passa por diversos est�gios de produ��o.
Ao optar por um processo de produ��o em linha de montagem os produtos em v�rios est�gios podem ser trabalhados simultaneamente.
Este processo � tamb�m referido como linha de encadeamento, porque numa linha de encadeamento, novas entradas s�o aceites numa extremidade antes que entradas aceites previamente possam aparecer � sa�da na outra extremidade.
Para aplicar este conceito a execu��o de instru��es, devemos de reconhecer que, de facto, uma instru��o disp�e de um certo n�mero de est�gios.
A figura 11-7, por exemplo, secciona o ciclo de instru��es em 10 tarefas, que ocorrem em sequ�ncia.
Claramente, dever� existir alguma oportunidade para encadeamento.
Figura 11.11:
Linha de Encadeamento de instru��es de dois est�gios.
 |
Numa abordagem simples consideremos a subdivis�o do processamento de instru��es em dois est�gios;
extrac��o da instru��o e execu��o da instru��o.
Haver� momentos durante a execu��o de uma instru��o em que n�o est� a ser feito um acesso � mem�ria.
Estes momentos podem ser usados para extrair a pr�xima instru��o em paralelo com a execu��o da instru��o corrente.
A figura 11-11(a) ilustra esta abordagem.
O encadeamento tem dois est�gios independentes.
O primeiro est�gio extrai a instru��o e coloca-a num tamp�o.
Quando o segundo est�gio est� livre, o primeiro est�gio passa-lhe a instru��o no tamp�o.
Enquanto o segundo est�gio est� a executar a instru��o, o primeiro est�gio aproveita n�o importa qual ciclo de mem�ria n�o usado para extrair e colocar no tamp�o a pr�xima instru��o.
Isto � chamado pr�-extrac��o ou sobreposi��o da extrac��o.
Dever� ficar claro que este processo ir� acelerar a execu��o de instru��es.
Se os est�gios de extrac��o e de execu��o forem de igual dura��o, o ciclo de instru��o passar� a metade.
Contudo, se olharmos mais de perto para esta linha de encadeamento (figura 11-11(b), veremos tamb�m que esta duplica��o da taxa de execu��o � improv�vel por duas raz�es:
- O tempo de execu��o � em geral mais longo que o tempo de extrac��o.
A execu��o envolve a leitura e armazenamento de operandos e a efectiva��o de algumas opera��es.
Assim, o est�gio de extrac��o dever� de esperar algum tempo antes de esvaziar o seu tamp�o.
- Uma instru��o condicional de deriva��o torna desconhecido o endere�o da pr�xima instru��o a ser extra�da.
Assim, o est�gio de extrac��o dever� esperar at� que receba o endere�o da pr�xima instru��o do est�gio de execu��o.
O est�gio de execu��o poder� ter de esperar enquanto � extra�da a pr�xima instru��o.
O tempo perdido pela segunda raz�o pode ser reduzido por previs�o.
Uma regra simples � a seguinte:
Quando uma instru��o de deriva��o condicional passa do est�gio de extrac��o para o est�gio de execu��o, o est�gio de extrac��o extrai a pr�xima instru��o da mem�ria.
Ent�o se n�o houver deriva��o, n�o h� perca de tempo. Se houver deriva��o a instru��o extra�da tem de ser descartada e extra�da uma nova instru��o.
Enquanto estes factores reduzem a potencial efic�cia do encadeamento de dois est�gios, produz-se algum ganho.
Para obter maiores ganhos, o encadeamento dever� ter mais est�gios.
Consideremos a seguinte decomposi��o do processamento de instru��es.
- Extrair Instru��o (FI): Ler a pr�xima instru��o esperada para um tamp�o.
- Descodificar Instru��o (DI) : determinar o c�digo de opera��o e os especificadores de operandos.
- Calcular Operandos (CO) : Calcular o endere�o efectivo de cada operando. Isto pode envolver deslocamentos, caminhos directos e indirectos de registo, ou outras formas de c�lculo de endere�os.
- Extrair Operandos (FO): Extrair cada operando da mem�ria. Os operandos em registos n�o necessitam de extrac��o.
- Executar Instru��o (EI): Efectuar a opera��o indicada e salvaguardar o resultado, se existir, no posi��o de destino especificada pelo operando.
- Escrever Operando (WO): Salvaguardar o resultado na mem�ria.
Com esta decomposi��o, os v�rios est�gios ser�o aproximadamente da mesma dura��o.
Para efeitos de exemplifica��o, assumamos que possuem igual dura��o.
Ent�o, a figura 11-2 mostra que um encadeamento de seis-est�gios de encadeamento pode reduzir o tempo de execu��o de 9 instru��es de 54 unidades de tempo para 14 unidades de tempo.
Figura 11.12:
Diagrama temporal para uma opera��o de encadeamento de instru��es.
 |
V�rios coment�rios: O diagrama assume que cada instru��o atravessa todos os seis est�gios da linha de encadeamento.
Isto n�o ser� sempre o caso.
Por exemplo, uma instru��o de carregar n�o necessita do est�gio WO.
Contudo para simplificar o hardware do encadeamento, a temporiza��o � feita assumindo que cada instru��o necessita dos seis est�gios.
O diagrama assume, tamb�m, que todos os est�gios podem ser efectuados em paralelo.
Em particular, �e assumido que n�o existem conflitos de mem�ria.
Por exemplo, os est�gios FI, FO e WO envolvem o acesso � mem�ria.
O diagrama implica que todos estes acessos podem ocorrer simultaneamente.
A maioria dos sistemas de mem�ria n�o o permitiria.
Assim, o valor pretendido pode estar na cache, ou os est�gios FO ou WO podem ser nulos. Pelo que, a maior parte do tempo, os conflitos de mem�ria n�o ir�o atrasar o encadeamento.
V�rios outros factores imp�em limita��es ao melhoramento do rendimento.
Se os seis est�gios n�o tiverem igual dura��o, haver� alguma espera em v�rios est�gios de encadeamento, tal como antes foi discutido para o encadeamento de dois est�gios.
Uma outra dificuldade � a instru��o de deriva��o condicional que pode invalidar a extrac��o de v�rios instru��es.
Um evento semelhante, n�o previs�vel, � uma interrup��o.
A figura 11-13 ilustra os efeitos de uma deriva��o condicional, usando o mesmo programa da figura 11-12. Assuma que a instru��o 3 � uma deriva��o condicional para a instru��o 15.
Figura 11.13:
O efeito de uma deriva��o condicional para uma opera��o de encadeamento de instru��es.
 |
At� que a instru��o seja executada, n�o h� forma de saber qual a instru��o que vem a seguir. O encadeamento, neste exemplo, carrega simplesmente a pr�xima instru��o na sequ�ncia (instru��o 4) e prossegue.
Na figura 11-12, n�o h� deriva��o e atingimos o rendimento m�ximo que adv�m do melhoramento.
Na figura 11-13 h� deriva��o.
Isto n�o � determinado antes do fim da unidade de tempo 7.
Neste ponto, a linha de encadeamento deve ser esvaziada das instru��es que n�o s�o �teis.
Durante a unidade de tempo 8, a instru��o 15 entra na linha de encadeamento.
Nenhuma instru��o se completa durante as unidades de tempo de 9, 10, 11 e 12; isto � a penaliza��o do rendimento em que se incorre porque n�o podemos antecipar a deriva��o.
A figura 11.14 indica a l�gica necess�ria para que o encadeamento tome em considera��o deriva��es e interrup��es.
Figura 11.14:
Encadeamento de instru��es num processador de seis-est�gios.
 |
Surge outro problema que n�o apareceu na organiza��o simples de dois-est�gios.
O est�gio CO pode depender do conte�do de um registo que podia ter sido alterado por uma instru��o anterior que ainda est� na linha de encadeamento.
Outros conflitos de mem�ria e de registos podem ocorrer.
O sistema tem de conter l�gica para entrar em considera��o com este tipo de conflitos.
Da discuss�o precedente, pode parecer que quanto maior o n�mero de est�gios na linha de encadeamento, maior � a taxa de execu��o.
Alguns dos projectistas do IBM/360 real�aram dois factores que frustam este aparente padr�o simples para o projecto de alto-rendimento e que, hoje, se mant�m verdadeiro:
- Em cada est�gio da linha de encadeamento, h� alguma sobrecarga envolvida na movimenta��o de dados de tamp�o para tamp�o e na efectiva��o de v�rios fun��es de prepara��o e de entrega.
Esta sobrecarga pode alongar de forma apreci�vel o tempo total de execu��o de uma instru��o simples.
Isto � significativo quando as instru��es sequenciais s�o logicamente dependentes, quer pelo usointensivo de deriva��es quer atrav�s das depend�ncias nos acessos � mem�ria.
- A quantidade de l�gica de controlo necess�ria para manipular as depend�ncias da mem�ria e de registos e para optimizar o uso de linha de encadeamento, aumenta muit�ssimo com o n�mero de est�gios.
Isto pode conduzir a uma situa��o onde a l�gica de entradas entre est�gios � muito mais complexa do que os est�gios que est�o a ser controlados.
O encadeamento de instru��es � uma t�cnica poderosa para melhorar o rendimento mas necessita de um projecto cuidadoso, com razo�vel complexidade, para alcan�ar resultados �ptimos.
Um dos maiores problemas no projecto de linha de encadeamento de instru��es � assegurar um fluxo constante de instru��es nos est�gios iniciais da linha de encadeamento.
O primeiro impedimento, tal como vimos, � a instru��o de deriva��o condicional.
At� que a instru��o seja efectivamente executada, � imposs�vel determinar se se segue ou n�o a deriva��o.
Uma variedade de abordagens t�m vindo a ser tomadas para lidar com deriva��es condicionais:
- M�ltiplos fluxos (Multiple Stream)
- Pr�-extrac��o do alvo do endere�o (Prefetch Branch Target)
- Tamp�o para la�os (Loop Buffer)
- Progn�stico de deriva��o (Branch Prediction)
- Deriva��o atrasada (Delayed Branch)
Uma linha de encadeamento simples � penalizado por uma instru��o de deriva��o porque tem de escolher de entre duas instru��es a pr�xima a extrair e pode fazer a escolha errada.
Uma abordagem de for�a bruta � replicar as por��es iniciais da linha de encadeamento e permitir extrair ambas as instru��es, usando duas linhas de encadeamento. Com esta abordagem h� v�rias problemas:
- Com m�ltiplas linhas de encadeamento h� atrasos de conten��o nos acesso aos registos e � mem�ria.
- Instru��es adicionais de deriva��o podem entrar na linha de encadeamento (qualquer uma) antes da decis�o de deriva��o inicial ter sido resolvida.
Cada uma daquelas instru��es requer uma linha de encadeamento adicional.
Apesar destes inconvenientes, esta estrat�gia pode melhorar o rendimento.
Exemplos de m�quinas com duas ou mais linhas de encadeamento s�o o IBM 370/168 e o IBM 3033.
Quando � reconhecida uma deriva��o condicional, o alvo da deriva��o � pr�-extra�do, conjuntamente com a instru��o a seguir � deriva��o.
O alvo �, ent�o, salvaguardado at� que seja executada a instru��o de deriva��o.
Se se segue a deriva��o, o alvo j� tinha sido pr�-extra�do.
O IBM 360/91 usa esta abordagem.
Um tamp�o de la�o � um pequena mem�ria, de muito elevada velocidade, mantida pelo est�gio de pr�-extrac��o da linha de encadeamento, contendo, uma sequ�ncia, das
mais recentes instru��es extra�das.
Se for para seguir a deriva��o, o hardware come�a por verificar se o alvo da deriva��o est� no tamp�o.
Se assim for, a pr�xima instru��o � extra�da do tamp�o. O tamp�o de la�o tem tr�s vantagens:
- Quando se usa pr�-extrac��o, o tamp�o de la�o conter� algumas instru��es sequencialmente � frente do endere�o de extrac��o da instru��o corrente. Assim, as instru��es extra�das em sequ�ncia estar�o dispon�veis sem os tempos habituais de acesso � mem�ria.
- Quando ocorre uma deriva��o para um endere�o apenas algumas posi��es adiante do endere�o da instru��o de deriva��o, o alvo j� ir� estar no tamp�o.
Isto � �til no caso da muito habitual ocorr�ncia de sequ�ncias SE-ENT�O e SE-ENT�O-SEN�O.
- Esta estrat�gia � particularmente bem indicada para lidar com la�os, ou itera��es, da� o nome de tamp�o de la�o.
Se o tamp�o de la�o for suficientemente grande para conter todas as instru��es de um la�o, ent�o, essas instru��es s� necessitam de ser extra�das da mem�ria, apenas uma vez, durante a primeira itera��o. Nas itera��es subsequentes todas as instru��es necess�rias j� est�o no tamp�o.
O tamp�o de la�o � semelhante, no princ�pio, a uma cache dedicada a instru��es.
As diferen�as est�o em que o tamp�o de la�o apenas ret�m instru��es cont�guas e � muito mais pequeno em tamanho e por isso de custo mais reduzido.
A figura 11-15 d� um exemplo de tamp�o de la�o.
Se o tamp�o contiver 256 octetos e for usado endere�amento ao octeto, ent�o os 8 bits menos significativos s�o usados para indexar o tamp�o. Os bits mais significativos, restantes, s�o verificados para determinar se o alvo da deriva��o est� no ambiente capturado pelo tamp�o.
Figura 11.15:
Tamp�o de la�o.
 |
De entre as m�quinas que usam um tamp�o de la�o est�o algumas m�quinas CDC (Star 100, 600, 7600) e CRAY-1.
Uma forma especializada de tamp�o de la�o est� dispon�vel no Motorola 68010, para executar um la�o de tr�s instru��es envolvendo uma instru��o DBcc (decremento deriva��o condicional) (ver Problema 11.8).
� mantido um tamp�o de tr�s-palavras e o processador executa estas instru��es repetidamente at� a condi��o do la�o ser satisfeita.
V�rias t�cnicas podem ser usadas para predizer se uma deriva��o vai ocorrer. Entre as mais habituais est�o as seguintes:
- Progn�stico nunca seguir
- Progn�stico seguir sempre
- Alternar entre seguir/n�o-seguir
- Tabela de hist�ria de deriva��o
As tr�s primeiras abordagens s�o est�ticas: n�o dependem da hist�ria da execu��o at� chegar � instru��o de deriva��o condicional.
As duas �ltimas abordagens s�o din�micas: dependem da hist�ria da execu��o.
As duas primeiras abordagens s�o as mais simples.
Ou assumem, sempre, n�o seguir a deriva��o e continuam a extrair instru��es em sequ�ncia, ou assumem, sempre, seguir a deriva��o e extraem sempre do endere�o de deriva��o.
O 68020 e o VAX 11/780 usam o progn�stico nunca seguir. O VAAX 11/780 tamb�m inclui uma caracter�stica para minimizar os efeitos de uma decis�o errada. Se a extrac��o da instru��o a seguir � deriva��o provocar uma falha de p�gina ou viola��o de protec��o, o processador suspende a pr�-extrac��o at� estar seguro que a instru��o deve ser extra�da.
Estudos que analisam o comportamento dos programas t�m mostrado que as deriva��es condicionais ocorrem mais do que 50% do tempo, da� que, se o custo de extrac��o de ambos o caminhos for o mesmo, ent�o, pr�-extrair do endere�o de deriva��o dever� proporcionar melhorar rendimento do que pr�-extrair do caminho na sequ�ncia.
Contudo, numa m�quina com pagina��o, a pr�-extrac��o do alvo da deriva��o pode mais provavelmente provocar uma falha de p�gina do que extrair a pr�xima instru��o na sequ�ncia pelo que esta penaliza��o dever� ser tomada em considera��o.
Pode ser usado um mecanismo de precau��o para reduzir esta penaliza��o.
A abordagem est�tica final toma a decis�o baseada no c�digo da instru��o de deriva��o. O processador assume que segue a deriva��o para algumas c�digos de deriva��o e n�o segue para outros. apresenta relat�rios com taxas de sucesso superiores a 75% usando esta estrat�gia.
As estrat�gias din�micas de deriva��o melhoram a precis�o do progn�stico registando a hist�ria das instru��es de deriva��o condicional de um programa.
Por exemplo, um ou mais bits podem ser associados com cada instru��o de deriva��o condicional que reflecte a hist�ria recente das instru��es.
Estes bits s�o referido como comutadores segue/n�o-segue que conduzem o processador a tomar decis�es particulares na pr�xima vez que encontra a instru��o.
Tipicamente, a hist�ria destes bits n�o est� associada com a instru��o na mem�ria principal.
Em vez, disso, s�o mantidos numa mem�ria local de alta-velocidade.
Uma possibilidade � associar estes bits com toda a instru��o de deriva��o condicional que est� na cache.
Quando a instru��o � substitu�da na cache, perde-se a sua hist�ria.
Uma outra possibilidade � manter uma pequena tabela para as instru��es de deriva��o mais recentemente executadas com um ou mais bits por cada entrada.
O processador pode fazer o acesso � tabela de modo associativo, como uma cache, ou usando os bits menos significativos do endere�o da instru��o de deriva��o.
Com um �nico bit, tudo o que pode ser registado � se a �ltima execu��o desta instru��o resultou, ou n�o, numa deriva��o.
Um defeito da utiliza��o de um �nico bit ocorre no caso de uma instru��o de deriva��o condicional que se segue quase sempre, tal como uma instru��o de la�o.
Com apenas um bit para hist�ria, um erro no progn�stico ocorre duas vezes para cada la�o: uma vez � entrada e uma vez � sa�da.
Se se usarem dois bits, estes podem registar o resultado das duas �ltimas inst�ncias da execu��o das instru��es associadas, ou para registar um estado de uma outra forma qualquer.
A figura 11.16 mostra um abordagem t�pica (ver Problema 11-6 para outras possibilidades).
O processo de decis�o pode ser representado por uma m�quina de estados finitos com quatro est�gios.
Se as �ltimas duas deriva��es de uma dada instru��o tiverem seguido o mesmo caminho, o progn�stico � tomar aquele caminho de novo.
Se o progn�stico estiver errado, mant�m-se o mesmo a pr�xima vez que a instru��o for encontrada.
Se o progn�stico for errado de novo, contudo, o pr�ximo progn�stico ser� seguir o caminho oposto.
Assim, o algoritmo requer dois progn�sticos errados consecutivos para mudar a decis�o sobre o progn�stico.
Se uma deriva��o toma uma direc��o n�o-usual uma vez, tal como para um la�o, o progn�stico ser� errado s� uma vez.
Um exemplo de um sistema que usa a abordagem comutadores segue/n�o-segue � o IBM 3090/400.
Figura 11.16:
Diagrama de estado de progn�sticos de deriva��o.
 |
A utiliza��o de bits de hist�ria, tal como foram apresentados, tem um inconveniente.
Se a decis�o tomada for seguir a deriva��o, a instru��o alvo n�o pode ser extra�da sen�o quando o endere�o alvo, que � um operando na instru��o de deriva��o condicional, for descodificado.
Pode alcan�ar-se um melhor rendimento se a extrac��o da instru��o poder ser iniciada mal for tomada a decis�o de deriva��o.
Para este prop�sito, mais informa��o dever� ser salvaguardada, no que � conhecido como tamp�o de alvo da deriva��o, ou tabela de hist�ria da deriva��o.
A tabela de hist�ria da deriva��o � uma pequena mem�ria cache associada com o est�gio de extrac��o da linha de encadeamento.
Cada entrada na tabela consiste de tr�s elementos: o endere�o da instru��o de deriva��o condicional, um certo n�mero de bits de hist�ria que registam o estado de utiliza��o daquela instru��o e informa��o sobre a instru��o alvo.
O compromisso � claro: Guardar o endere�o alvo produz uma tabela mais pequena, mas um tempo de extrac��o de instru��o superior comparado com guardar a instru��o alvo.
A figura 11-17 faz um contraste deste esquema com o progn�stico nunca seguir.
Com a primeira estrat�gia, o est�gio de extrac��o de instru��o extrai sempre o pr�ximo endere�o sequencial.
Se a deriva��o for seguida, l�gica dentro do processador detecta isto e indica que a pr�xima instru��o deve ser extra�da do endere�o alvo (para al�m de descartar a linha de encadeamento).
A tabela de hist�ria da deriva��o � usada como uma cache.
Cada pr�-extrac��o acciona uma pesquisa na tabela de hist�ria da deriva��o.
Se n�o houver nenhuma correspond�ncia, o pr�ximo endere�o sequencial � usado para a extrac��o.
Se for encontrada uma correspond�ncia, � feito o progn�stico baseado no estado da instru��o: o pr�ximo endere�o sequencial ou o endere�o alvo da deriva��o vai alimentar a l�gica de selec��o.
Quando uma instru��o de deriva��o � executada, o est�gio de execu��o � actualizado para reflectir um progn�stico correcto ou incorrecto.
Se o progn�stico for incorrecto, a l�gica se selec��o � redireccionada para o endere�o correcto para a pr�xima extrac��o.
Quando uma instru��o de deriva��o condicional que n�o est� na tabela, � encontrada � adicionada � tabela e uma das entradas existentes � descartada, usando um dos algoritmos de substitui��o discutidos no cap�tulo 4.
Um exemplo da implementa��o de uma tabela de hist�ria da deriva��o � o processador Advanced Micro Device AMD29000.
Figura 11.17:
Lidando com deriva��es.
 |
O 80846 implementa uma linha de encadeamento com os seguintes est�gios:
- Extrac��o: As instru��es s�o extra�das da cache ou da mem�ria externa e colocadas em um dos dois tamp�es de extrac��o de 16-octetos.
O objectivo do est�gio de extrac��o � preencher os tamp�es de pr�-extrac��o com novos dados, logo que os dados anteriores tenham sido consumidos pelo descodificador de instru��es.
Uma vez que as instru��es s�o de tamanho vari�vel (de 1 a 11 octetos n�o contando os prefixos), o estado do mecanismo de pr�-extrac��o relativamente aos outros est�gios da linha de encadeamento variam de instru��o para instru��o.
Em m�dia cerca de cinco instru��es s�o extra�das com cada carregamento de 16-octetos.[#!CRAW90!#].
O est�gio de extrac��o opera independente dos outros est�gios para manter cheios os tamp�es de pr�-extrac��o.
- Est�gio de Descodifica��o 1: Todo o c�digo de opera��o e toda a informa��o sobre os modos de endere�amento �, no m�ximo, inclu�da nos tr�s primeiros octetos da instru��o.
Assim, s�o passados tr�s octetos para o est�gio D1 dos tamp�es de pr�-extrac��o.
O descodificador D1 pode ent�o dirigir o est�gio D2 para capturar o resto da instru��o ( deslocamento e dados imediatos), que n�o estiverem envolvidos na descodifica��o D1.
- Est�gio de Descodifica��o 2: O est�gio D2 expande cada c�digo em sinais de controlo para a ALU. Tamb�m controla o c�lculo dos modos de endere�amento mais complexos.
- Execu��o : Estes est�gio inclui as opera��es da ALU, acesso � cache e actualiza��o de registos.
- Escrita � Retaguarda: Este est�gio, se for necess�rio, actualiza os registos e as condi��es de estado modificadas durante o est�gio precedente de execu��o. Se a instru��o corrente actualizar a mem�ria, o valor calculado � remetido para a cache e, ao mesmo tempo, para o interface do barramento com os tamp�es de escrita.
Com a utiliza��o de dois est�gios de descodifica��o, a linha de encadeamento pode sustentar um desempenho de perto de uma instru��o por ciclo de rel�gio.
As instru��es complexas e as deriva��es condicionais podem fazer baixar esta taxa.
A figura 11.18 mostra exemplos da opera��o da linha de encadeamento. A parte a) mostra que n�o � introduzido nenhum atraso quando � necess�rio um acesso � mem�ria.
Figura 11.18:
Exemplos da linha de encadeamento de instru��es do 80846.
 |
Contudo, tal como mostra a parte b), pode existir um atraso para valores usados para calcular endere�os da mem�ria.
Isto �, se um valor for carregado da mem�ria para um registo e aquele registo for depois usado como um registo de base na pr�xima instru��o, o processador empata durante um ciclo.
Neste exemplo, o processador faz o acesso � cache no est�gio EX da primeira instru��o e, no seu est�gio D2, guarda no registo o valor adquirido. Quando o est�gio D2 depara com o est�gio WB da instru��o precedente, sinais de passagem por cima permitem ao est�gio D2 ter acesso aos mesmos dados que est�o a ser usados pelo est�gio WB para escrita, poupando um est�gio da linha de encadeamento.
A figura 11.18 c) ilustra a temporiza��o de um instru��o de deriva��o, assumindo que se segue a deriva��o. A instru��o de compara��o actualiza os c�digos de condi��o no est�gio WB e, ao mesmo tempo, as passagens por cima, tornam-nos dispon�veis para o est�gio EX da instru��o de salto.
Paralelamente, o processador executa um ciclo de extrac��o especulativo no endere�o alvo do salto, durante o est�gio EX da instru��o de salto.
Se o processador identifica uma condi��o de deriva��o falsa, � descartada a pr�-extrac��o e a execu��o continua com a pr�xima instru��o sequencial (j� extra�da e descodificada).
Um vista geral da organiza��o do processador Pentium � apresentada na figura 4-24. Nesta sec��o, examinamos alguns pormenores.
Tabela 11.1:
Registos do Processador Pentium.
 |
A organiza��o de registos inclui os seguintes tipos de registos (tabela 11.1:
- Geral: H� oito registos de 32-bits de prop�sito geral (ver figura 11.4b).
Podem ser usados em todos os tipos de instru��es Pentium; podem tamb�m conter operandos para c�lculo de endere�os.
Adicionalmente, alguns destes registos tamb�m servem para uso especial.
Por exemplo, instru��es sobre sequ�ncias de caracteres usam o conte�do dos registos ECX, ESI e EDI como operandos sem terem de explicitamente referir aqueles registos na instru��o. Como resultado, um certo n�mero de instru��es pode ser codificada de modo mais compacto.
- Segmento: Os seis registos de segmento de 16-bits cont�m selectores de segmento que indexam tabelas de segmentos, tal como foi discutido no cap�tulo 6.
O registo de segmento de c�digo (CS) aponta para o segmento que cont�m a instru��o que est� a ser executada.
O registo de segmento de pilha (SS) aponta para o segmento que cont�m a pilha vis�vel ao utilizador.
Os restantes registos de segmento (DS,ES,FS, GS) habilitam o utilizador a referir at� quatro segmentos de dados separados, de cada vez.
- Condi��es: O registo EFLAGS cont�m c�digos de condi��o e v�rios bits de modo.
- Apontador de Instru��o: Cont�m o endere�o da instru��o corrente.
H� tamb�m registos especialmente dedicados � unidade de v�rgula flutuante:
- Num�rico: Cada registo mant�m um n�mero em v�rgula flutuante com precis�o estendida a 80-bits.
H� oito registos que funcionam como uma pilha, com opera��es de empurrar e retirar dispon�vel no jogo de instru��es.
- Controlo: O registo de controlo de 16-bits cont�m bits que controlam a opera��o da unidade de v�rgula flutuante, incluindo o tipo e controlo de arredondamento; precis�o simples, dupla ou estendida; e bits para habilitar ou inibir v�rias condi��es de excep��o
- Status: O registo status de 16-bits cont�m bits que reflectem o estado presente da unidade de v�rgula flutuante, incluindo um apontador, de 3-bits, para o topo da pilha; c�digos de condi��o relatam o efeito da �ltima instru��o; e condi��es de excep��o.
- Etiqueta de Palavra: Este registo de 16-bits cont�m uma etiqueta de 2-bits para cada registo num�rico de v�rgula flutuante que indica a natureza do conte�do do registo correspondente. As quatro valores poss�veis, zero, especial, (NaN, infinito, des-normalizado) e vazio. Estas etiquetas habilitam o programador a testar o conte�do dum registo num�rico sem efectuar descodifica��o complex�o dos dados presentes no registo.
A utiliza��o da maior parte dos registos, acima, � facilmente compreens�vel. Deixem-nos discorrer brevemente sobre v�rios dos registos.
O registo EFLAGS (Figura 11.19 indica o estado do processador e ajuda a controlar a sua opera��o.
Inclui os seis c�digos de condi��o definidas na tablea
(transpor, paridade, auxiliar, zero, sinal e excesso) que relatam os resultados de uma opera��o inteira.
Adicionalmente, h� bits no registo que podem ser chamados de bits de controlo, estes s�o
- Armadilha (TF): Quando ajustado, causa uma interrup��o ap�s a execu��o de cada instru��o. � usado para depura��o.
- Interrup��o ITF): Quando ajustado, o processador reconhece interrup��es externas.
- Direc��o (EF): Determina se o processamento de uma sequ�ncia de caracteres incrementa ou decrementa os meios registos de 16-bits SI e DI (para opera��es de 16-bits) ou os registos de 32-bits ESI e EDI (para opera��es de 32-bits)
- Privil�gio E/S (IOPL) : Quando ajustado, causa o processador gerar uma interrup��o em todos os acessos aos dispositivos de E/S durante a opera��o em modo protegido.
- Retoma (RF) : Permite ao programar desactivar as excep��es de depura��o de tal forma que a instru��o possa ser retomada, depois de uma excep��o de depura��o, sem causar outra excep��o de depura��o.
- Teste de Alinhamento (AC): Activada se uma palavra ou dupla palavra for endere�ada fora dos limites da palavra ou dupla palavra.
- Identifica��o (IF): Se este pode ser ajustado e limpo isso indica que este processador suporte a instru��o CPUID. Esta instru��o fornece informa��o sobre o vendedor, fam�lia e modelo.
Figura 11.19:
Registos EFLAGS do Processador Pentium.
 |
Adicionalmente, h� quatro bits relacionados com o sistema de opera��o. A bandeira de tarefa aninhada (NT) indica que a tarefa corrente est� aninhada dentro de outra tarefa que opera em modoprotegido. O bit de modo virtual (VM) permite ao programador autorizar ou inibir o modo virtual 8086 que determina se o processador corre como uma m�quina 8086. A bandeira de interrup��o virtual e a bandeira de interrup��o virtual pendente (VIP) s�o usadas em ambiente multi-tarefa.
O Pentium emprega quatro registos de controlo de 32-bits (o registo CR1 n�o est� a uso) para controlar v�rios aspectos da opera��o do processador (Figura 11.20.
O registo CR0 cont�m bandeiras de controlo do sistema que controlam os modos ou indicam os estados aplic�veis, em geral, ao processador em vez da aplica��o a tarefas individuais. As bandeiras s�o
- Habilita Protec��o (PE): Habilita/Impede o modo de protec��o protegido.
- Monitoriza��o do Co-processador (MP): De interesse, apenas, quando se executam no Pentium programas para m�quinas mais antigas. Est� relacionada com a presen�a de um co-processador aritm�tico
- Emula��o (EM): Levantada quando o processador n�o tem unidade de v�rgula flutuante, provoca uma interrup��o quando � feita uma tentativa de executar instru��es de v�rgula flutuante.
- Comuta��o de Tarefa (TS): Indica que o processador trocou de tarefa.
- Extens�es de Tipo (ET): N�o � usada no Pentium, usada para indicar nas m�quina mais antigas o suporte a instru��es matem�ticas no co-processador.
- Erro num�rico (NE): Habilita o mecanismo convencional de relatar erros de v�rgula flutuante nas linhas externas do barramento.
- M�scara de Alinhamento(AM): Habilita/Impede o teste de alinhamento
- Escrita n�o Imediata (NW): Selecciona o modo de opera��o da cache de dados.
Quando este bit � ajustado, a cache de dados � impedida de fazer opera��es de escrita-imediata.
- Desactiva Cache (CD): Activa/Desactiva o mecanismo interno de encher a cache.
- Pagina��o (PG): Activa/Desactiva a pagina��o.
Figura 11.20:
Registos de Controlo do Processador Pentium.
 |
Quando a pagina��o est� habilitada, os registos CR2 e CR3 s�o v�lidos.
O registo CR2 cont�m o endere�o linear de 32-bits da �ltima p�gina a que foi feito o acesso antes da interrup��o da falta de p�gina.
Os 20-bits mais � esquerda de CR3 cont�m os 20-bits mais significativos do endere�o base do direct�rio de p�ginas. O resto do endere�o cont�m zeros. Dois bits de CR3 s�o usados para alimentar os pinos que controlam a opera��o da cache externa. O bit (PCD) activa ou desactiva a cache externa e o bit de escrita transparente (PWT) controla a escrita imediata na cache externa.
Seis bits de controlo adicionais s�o definidos em CR4:
- Extens�o de Modo Virtual-8086 (VME): Activa o suporta � bandeira de interrup��o virtual no modo virtual-8086.
- Interrup��es no Modo-Protegido Virtual (PVI): Activa o suporta � bandeira de interrup��o virtual no modo-protegido
- Desactiva Registo de Tempo (TSD): Desactiva a leitura da instru��o do contador de registo de tempo (RDTSC) que � usada para efeitos de depura��o.
- Extens�es de Depura��o (DE): Activa os pontos de paragens de E/S, isto permite que o processador seja interrompido em leituras e escritas de E/S.
- Extens�es ao Tamanho da P�gina (PSE): Autoriza o uso de p�ginas de 4-Moctetos.
- Activa Teste da M�quina (MCE): Autoriza a interrup��o de teste de m�quina que ocorre quando um h� um erro de paridade dos dados durante um ciclo de leitura de barramento ou quando um ciclo de barramento n�o � completado com sucesso.
O processamento de interrup��es num processador � uma facilidade fornecida para suportar o sistema de opera��o.
Permite um programa de aplica��o ser suspendido, de forma a que uma variedade de condi��es de interrup��o possam ser servidas, e mais tarde retornado.
Duas classes de eventos causam o Pentium suspender a execu��o do cadeia corrente de instru��es e responder ao evento: interrup��es e excep��es.
Em ambos os casos, o processador salvaguarda o contexto do processo corrente e transfere-se para uma rotina pr�-definida para servir a condi��o.
Uma interrup��o � gerada por um sinal do hardware isso pode ocorrer em instantes imprevisto durante a execu��o de um programa.
Uma excep��o � gerada pelo software e � provocada pela execu��o de uma instru��o. H� duas fontes de interrup��o e duas fontes de excep��o:
- Interrup��es
- Interrup��es Mascar�veis: Recebidos no pino INTR do processador. O processador n�o reconhece uma interrup��o mascar�vel a menos que a bandeira de habilita��o de interrup��es esteja levantada
- Interrup��es N�o-Mascarav�is: Recebidos no pino NMI do processador. O reconhecimento de tais interrup��es n�o pode ser impedido.
- Excep��es
- Excep��es Detectados pelo Processador: Ocorrem quando o processador encontra um erro enquanto tenta executar uma instru��o.
- excep��es Programadas: Estas s�o instru��es que geram instru��es (INT0, INT3, INT, BOUND).
O processamento de interrup��es no Pentium usa a tabela de vector de interrup��es. A todo o tipo de interrup��o � atribu�do um n�mero e este n�mero � usado para indexa��o da tabela de vectores de interrup��o.
Esta tabela cont�m 256 vectores de interrup��o de 32-bits, que � o endere�o (segmento e deslocamento) da rotina de servi�o de interrup��es para esse n�mero de interrup��o.
A tabela 11.2 mostra a atribui��o dos n�meros na tabela de vector de interrup��es; as entradas a sombreado representam interrup��es, enquanto as entradas n�o sombreadas s�o excep��es. A interrup��o de hardware NMI � tipo 2. �s interrup��es de hardware INTR s�o atribu�dos n�meros na gama 32-255; quando � gerada uma interrup��o, isso deve ser acompanhado no barramento com o n�mero de vector de interrup��o para esta interrup��o.
Os restantes n�meros de vector s�o usados para excep��es.
Tabela 11.2:
Tabela de vectores de excep��o e de interrup��o do Pentium.
 |
Se mais do que uma excep��o ou interrup��o estiver pendente, o processador serve-as numa ordem prevista.
A localiza��o dos n�meros de vector n�o reflecte a prioridade. Em vez disso, a prioridade entre excep��es e interrup��es � organizada em cinco classes. Em ordem descendente de prioridade, estas s�o
- Classe 1: Armadilhas na instru��o precedente (n�mero de vector 1).
- Classe 2: Interrup��es externas (2, 32-255).
- Classe 3: Falhas de extrac��o da pr�xima instru��o (3,14).
- Classe 4: Falhas da descodifica��o da pr�xima instru��o (6,7).
- Classe 5: Falhas durante a execu��o de uma instru��o (0,4,5,8,10-14,16,17).
Tal como com a transfer�ncia da execu��o atrav�s da instru��o CALL, a transfer�ncia para a rotina de tratamento de interrup��es usa a pilha de sistema para salvaguardar o estado do processador.
Quando uma interrup��o ocorre, e � reconhecida pelo processador, toma lugar a seguinte sequ�ncia de eventos.
- Se a transfer�ncia envolve uma altera��o do n�vel de privil�gio, ent�o o corrente registo de segmento de pilha ou o corrente registo estendido de segmento de pilha (ESP) � empurrado para a pilha.
- O valor corrente do registo EFLAGS 'empurrado para a pilha.
- Tanto a bandeira de interrup��o (IR) como a de armadilha (TF) s�o limpas. Isto desactiva as interrup��es INTR e a armadilha ou a propriedade passo a passo.
- Se a interrup��o for acompanhada por um c�digo de erro, ent�o o erro de c�digo empurrado para a pilha.
- O conte�do da tabela de vectores de interrup��es � extra�do e carregado para os registos CS e IP ou EIP. A execu��o continua da rotina de servi�o de interrup��o.
Next: Computadores com Jogo de
Up: Arquitectura e Organiza��o Interna
Previous: Jogos de Instru��es: Modos
2000-05-10