Escolar Documentos
Profissional Documentos
Cultura Documentos
NOTAS DE AULA
Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Jlio Carlos Balzano de Mattos (UFPel)
Instrues
As instrues de um computador so operaes que devem ser executadas em uma seqncia pr-determinada. Estas instrues compem um programa. Desta maneira, um programa uma lista de instrues que especificam operaes, operandos e a seqncia em que o processamento deve ocorrer. O processamento de dados executados em um computador pode ser alterado pela especificao de um novo programa com instrues diferentes ou pela especificao das mesmas instrues com diferentes dados. O bloco de controle responsvel por ler uma instruo da memria, decodificla e gerar uma ou mais micro-operaes (que so os bits que controlam o bloco operativo). As instrues podem variar de um computador para outro. Processadores que seguem um determinado padro e que utilizam o mesmo conjunto (ou subconjunto) de instrues sendo, de certa forma, compatveis entre si, constituem uma famlia de processadores. O Conjunto de instrues suportadas por um determinado processador (ou famlia) chamado de Instruction Set Architecture (conjunto de instrues da arquitetura), cuja sigla ISA comumente utilizada. Uma instruo representada por um conjunto de bits que instruem o processador a executar uma operao especifica. Este conjunto de bits chamado de operation code (cdigo da operao), geralmente chamada de opcode. O nmero de bits necessrios para o opcode de uma instruo a funo do nmero total de operaes no conjunto de instrues e da quantidade de operandos disponveis. A operao de uma instruo deve ser executada utilizando os dados armazenados nos registradores do computador ou na memria. Uma instruo, alm do mais, deve especificar no somente uma operao, mas tambm os registradores e palavras de memria em que os operandos so encontrados e onde o resultado deve ser armazenado. A linguagem binria em que as instrues so definidas e armazenadas na memria so referidas como linguagem de mquina (machine language). Uma linguagem simblica que substitui os opcodes e endereos binrios por nomes simblicos e que fornece outras caractersticas de auxilio para o programador referida como linguagem de montagem (assembly language). A estrutura lgica dos computadores normalmente descrita em manuais de referncia da linguagem de montagem. A habilidade de executar um programa da memria a mais importante propriedade de um computador de uso geral.
Como j apresentado anteriormente, existe um registrador no computador chamado program counter (PC) que fornece a seqncia das instrues do programa que est armazenado na memria. O PC armazena o endereo da prxima instruo que ser executada e incrementado por um cada vez que uma palavra dos programa lida da memria. A decodificao concluda (passo 2) determina a operao que deve ser executada e o modo de endereamento da instruo. Os operandos do passo 3 so localizados a partir do modo de endereamento e dos campos de endereamento da instruo. O computador executa a instruo, armazena o resultado, e retorna para o passo 1 para buscar a prxima instruo da seqncia.
Conjunto de registradores
O conjunto de registradores consiste em todos os registradores da CPU que podem ser acessados pelo programador. Estes registradores so tipicamente os mencionados nos manuais de referncia da linguagem assembly. As CPUs podem tambm conter outros registradores, como o registrador de instrues, ou ainda outros registradores que so acessveis somente internamente (o programador no pode, explicitamente, mudar seus valores). O conjunto de registradores consideravelmente influenciado pela arquitetura do conjunto de instrues.
O smbolo M[A] denota um operando armazenado em memria no endereo simbolizado por A. O smbolo x designa uma multiplicao. T1 e T2 so temporrios armazenados em memria. O mesmo programa pode utilizar registradores como temporrios: ADD R1, A, B ADD R2, C, D MUL X, R1, R2 R1 M[A] + M[B] R2 M[C] + M[D] M[X] R1 x R2
A vantagem do formato de 3 endereos que resulta em programas pequenos para avaliao de expresses. A desvantagem que o cdigo binrio das instrues requer mais bits para especificar os trs endereos, particularmente se eles so endereos de memria.
Instrues de at 2 endereos Para instrues de 2 endereos, cada campo de endereamento pode especificar tambm um possvel registrador ou endereo de memria. O primeiro endereamento de operando listado na instruo simblica o endereo implcito que o resultado da operao ser transferido. MOVE T1, A ADD T1, B MOVE X, C ADD X, D MUL X, T1 M[T1] M[A] M[T1] M[T1] + M[B] M[X] M[C] M[X] M[X] + M[D] M[X] M[X] x M[T1]
O registrador temporrio R1 disponvel e pode ser trocado por T1. Note que este programa resulta em cinco instrues ao invs das trs necessrias quando utilizada uma arquitetura com instrues de 3 endereos.
Instrues de 1 endereo Para executar instrues como ADD, o computador com um instrues de 1 endereo utiliza um endereo implcito um registrador chamado acumulador (accumulator) ACC para obter um dos operandos, assim como gravar o resultado. O programa para implementar a expresso aritmtica anterior a seguinte: LD A ADD B ST X LD C ADD D MUL X ST X ACC M[A] ACC ACC + M[B] M[X] ACC ACC M[C] ACC ACC + M[D] ACC ACC x M[X] M[X] ACC
Todas as operaes so feitas entre o registrador ACC e um operando da memria. Neste caso, o nmero de instrues aumenta para 7.
Instrues de zero endereo Para executar uma instruo ADD com zero endereo, todos os trs endereos da instruo devem estar implcitos. Uma maneira de implementao para atingir este objetivo utilizar uma arquitetura baseada em stack (pilha). Na pilha, o ltimo item armazenado o primeiro a ser retirado. Devido a natureza de o ltimo a entrar, primeiro a sair, a pilha tambm chamada de LIFO (last in, first out). A palavra no topo da pilha referida como TOS (top of stack). A palavra abaixo do topo da pilha referida como TOP-1, e assim sucessivamente. Quando uma ou mais palavras so utilizadas como operandos para uma operao, elas tem de ser removidas da pilha. A palavra abaixo daquelas que foram consumidas passa ento a ser o novo TOS. O resultado a ser gerado colocado novamente na pilha, tornando-se, ento, o novo TOS. Conseqentemente, a pilha fornece um endereamento implcito tanto dos seus operandos como do destino no qual o resultado ser armazenado. Por exemplo, a instruo que especifica a instruo de adio simplesmente ADD O resultado da ao, em linguagem de transferncia de registradores : TOS TOS + (TOS-1). Assim, no existem registradores ou endereamento explcito de registradores durante a manipulao de dados na arquitetura de pilha.
O endereamento de memria utilizado nestas arquiteturas para transferncia de dados. Por exemplo, a instruo: PUSH X Resulta em TOS M[X], a transferncia da palavra do endereo X da memria para o topo da pilha. A correspondente operao POP X Resulta em M[X] TOS, a transferncia da entrada do topo da pilha para o endereo X. O programa para implementar a mesma expresso aritmtica anterior com instrues de zero endereo o seguinte: PUSH A PUSH B ADD PUSH C PUSH D ADD MUL POP X TOS M[A] TOS M[B] TOS TOS + TOS-1 TOS M[C] TOS M[D] TOS TOS + TOS-1 TOS TOS x TOS-1 M[X] TOS
O programa requer oito instrues. Contudo, este programa no utiliza locais de memria ou registradores para executar instrues de manipulao de dados. Outro efeito de utilizar tal notao que geralmente o tamanho (em nmero de bits) das instrues menor quando comparado a outras arquiteturas.
Arquiteturas de endereamento Os programas apresentados mudam se a maneira como o endereamento dos operandos restringido, ou ainda se o endereamento memria restrito apenas para instrues especificas. A seguir, estas variaes sero demonstradas utilizando como base uma arquitetura de trs endereos, como vista anteriormente. Todavia, elas podem ser aplicadas a quaisquer arquiteturas de 2 endereos. Arquitetura memory-to-memory Esta arquitetura possui apenas registradores de controle, como o PC (Program Counter). Todos os operandos vem diretamente da memria, e todos os resultados so enviados diretamente para a memria. ADD T1, A, B ADD T2, C, D MUL X, T1, T2 M[T1] M[A] + M[B] M[T2] M[C] + M[D] M[X] M[T1] x M[T2]
Neste caso, considerando a busca (fetch) das instrues, dos operandos e o armazenamento dos resultados, este programa requer 12 acessos a memria. A arquitetura memory-to-memory no utilizada atualmente.
Arquitetura register-to-register (load/store) Em contraste com a arquitetura anterior, a arquitetura register-to-register permite somente uma referncia memria por instruo e a restringe dois tipos de instrues: de carga e armazenamento (load e store). Esta arquitetura requer uma boa quantidade de registradores, pois todas as manipulaes de dados pelas instrues utilizam operandos em registradores. Esta arquitetura utilizada em processadores da famlia MIPS, por exemplo. Com esta arquitetura, o programa para avaliar a expresso aritmtica do exemplo : LD R1, A LD R2, B ADD R3, R1, R2 LD R1, C LD R2, D ADD R1, R1, R2 MUL R1, R1, R3 ST X, R1 R1 R2 R3 R1 R2 R1 R1 M[X] M[A] M[B] R1 + R2 M[C] M[D] R1 + R2 R1 x R3 R1
Arquitetura register-to-memory uma variao das duas arquiteturas anteriores, onde ambas referncias (para memria e para registradores) podem ser utilizadas em uma mesma instruo. O tamanho do programa e o nmero de acessos a memria tende a ser intermedirio entre as duas arquiteturas anteriores. Um exemplo de uma instruo de 2 endereos com um nico endereo a memria permitido : ADD R1, A R1 R1 + M[A]
Este tipo de arquitetura bastante encontrado em arquiteturas atuais, como na famlia X86.
10