












Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
funcionamento da cpu
Tipologia: Notas de estudo
1 / 20
Esta página não é visível na pré-visualização
Não perca as partes importantes!
subtracção. São também suportadas por todos os processadores operações lógicas básicas, como a disjunção
e a conjunção, e operações de deslocamento. Muitos processadores executam
também operações aritméticas mais complexas como multiplicação, divisão e outras funções matemáticas sobre números inteiros ou reais.
Entre estas instruções encontram-se, tipicamente, instruções como ADD, SUB, INC, MULT, AND, OR e XOR. Por exemplo, no processador, a instrução ADD R1,M[00B0h] soma o conteúdo do registo R1 ao conteúdo da posição de memória 00B0h, guardando o resultado no registo R1.
A sequência de instruções a executar é controlada por um registo especial, o contador de programa. Na maioria dos processadores, este registo é designado por PC (program counter). Este registo contém o endereço de memória onde se encontra a próxima instrução a ser executada. Tipicamente, as instruções de transferência e de manipulação de dados incrementam o contador de programa para o valor correspondente à posição de memória onde se inicia a instrução que se segue na sequência normal de execução, o que faz com que essa instrução seja a próxima a ser executada.
As instruções de controlo permitem alterar a ordem de execução de instruções, incondicionalmente ou, em alternativa, apenas se a operação anterior produzir um resultado que satisfaça certas condições. Mais especificamente, as instruções de controlo permitem especificar qual o endereço da próxima instrução a executar, através da alteração do registo contador de programa, PC.
Este tipo de instruções permite tomar decisões em função dos resultados de cálculos anteriores ou de acontecimentos externos, sendo, portanto fundamentais para o funcionamento correcto de qualquer programa.
Um exemplo de uma instrução de controlo no processador é a instrução JMP. Por exemplo, a instrução JMP 00CCh faz com que a próxima instrução a ser executada seja a instrução na posição de memória 00CCh.
A combinação de bits que corresponde a cada instrução codifica, de forma única, quais as operações a executar, quais os operandos e qual a localização onde deve ser guardado o resultado. Assim, cada instrução máquina contém, necessariamente, três componentes, que se reflectem na estrutura da instrução: A r q u i t e c t u r a e O r g a n i z a ç ã o d e C o m p u t a d o r e s - 2 0 0 6 3 UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE F i c h a 5
Toda linguagem de máquina inclui tipos de dados númericos. Mesmo o processamento de dados nao numéricos requer o uso de números, como tamanho de campos.
Tipos de dados numéricos comuns em computadores : 1 0 0 0 3 9
F 0 2 0 Número inteiro ou de ponto fixo 1 0 0 0 3 9
F 0 2 0 Número de ponto flutuante 1 0 0 0 3 9
F 0 2 0 Número decimal
Embora toda operaçao interna de um computador é de natureza binária, usuários do sistema lidam com números decimais. Portanto, números decimais devem ser convertidos para binários, na entrada, e números binários devem ser convertidos para decimais, na saída.
Uma forma comum de dado é o texto ou sequencia de caracteres. Essa representaçao é conveniente para o ser humano, mas eles nao podem ser armazenados ou transmitidos facilmente, na forma de caracteres, por sistemas de processamento de dados ou de comunicaçao, uma vez que estes estao projectados para amnipular dados binários. Portanto é nessa sequencia que diversos códigos foram criados, onde caracteres sao representados em sequencia de bits, destacando –se o alfabeto de referencia internacional (International Reference Alphabet) – IRA , conhecido por código ASCII (American Standard Code for Information Interchange). Existem outros como EBCDIC (Exterbded Binary Coded Decimal Interchange Code).
Normalmente, cada palavra ou unidade endereçavel (byte, meia palavra, etc) é tratada como uma unidade única de dado. Entretanto, algumas vezes é útil considerar uma unidade de n bits como composta de n itens de dado, n itens de dado, de um 1 bit cada, com valor 0 e 1.quando isso acontece, esse dado é considerado um dado lógico.
TOMÁS DE MOÇAMBIQUE F i c h a 5
Vantagens :
1 0 0 0 3 9
F 0 2 0 Economia de memória obtida quando queremos armazenar vectores de dados booleanos (verdadeiro ou falso). 1 0 0 0 3 9
F 0 2 0 É a possibilidade de manipulaçao de bits de um item de dado, o que pode ser requerido em determinadas situaçoes.
Técnicas de endereçamento mais comum:
1 0 0 0 3 9
F 0 2 0 Endereçamento imediato – Operando=A, valor de operando especificado directamente na instruçao; 1 0 0 0 3 9
F 0 2 0 Endereçamento directo – EA=A:^ EA – Efective Address,^ neste, o campo de endereço contém o endereço efectivo do operando.
1 0 0 0 3 9F 0 2 0Endereçamento indirecto – EA=(A), neste se a palavra tem n bits, o espaço de endereçamento tem tamanho 2n.
1 0 0 0 3 9
F 0 2 0 Endereçamento de registador – EA=(R), o campo de endereço especifica a um registador. 1 0 0 0 3 9
F 0 2 0 Endereçamento indirecto via registador –EA=(R), semelhante ao endereçamento de registador, mas requer um acesso a menos que no caso anterior.
1 0 0 0 3 9
F 0 2 0 Endereçamento por deslocamento – EA=A+(R), combinaas capacidades do endereço directo e indirecto via registador. 1 0 0 0 3 9
F 0 2 0 Endereçamento a pilha
Pilha é bloco reservado de posiçoes na memória. A r q u i t e c t u r a e O r g a n i z a ç ã o d e C o m p u t a d o r e s - 2 0 0 6 6 UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE F i c h a 5
Isto leva a que as instruções que utilizam apenas registos necessitem de menos bits para a sua codificação,
ocupando menos memória e sendo lidas e executadas mais rapidamente.
Os registos internos podem estar organizados de diversas formas. 1 0 0 0 3 9
F 0 2 0 Na sua forma mais simples, os registos internos são simplesmente um conjunto de registos, com igual funcionalidade, organizados num banco de registos e especificados pelo seu número.
Outros processadores têm organizações mais complexas. Podem existir registos com funções específicas, que são sempre usados em determinadas operações.
Em processadores que tenham um registo especial denominado acumulador, este guarda o resultado das operações e é também muitas vezes usado para especificar o endereço de acesso à memória.
Processadores complexos, como, por exemplo, a família x86 da Intel, tem diversos registos com funções específicas, como a manipulação de cadeias de caracteres em memória e a gestão da memória do processador.
Mesmo os processadores simples e com organizações muito regular dos registos possuem, geralmente, dois registos de uso específico, que podem ou não ser acessíveis directamente ao programador.
1 0 0 0 3 9
F 0 2 0 Estes dois registos são o contador de programa (PC), 1 0 0 0 3 9
F 0 2 0 e o apontador para a pilha (em inglês,^ stack pointer , SP).
Utilização de Pilhas
Uma opção muito utilizada para aceder e guardar operandos em memória consiste no uso de uma pilha (em inglês, stack.). Uma pilha é um conjunto contíguo de posições de memória cujo acesso é gerido por um registo especial, o apontador de pilha, geralmente denominado SP (em inglês, stack pointer). Conceptualmente, a pilha consiste num conjunto de posições de memória sobrepostas umas às outras, e às quais apenas é possível aceder uma a uma, a partir do topo, quer para colocar um dado ( operação de PUSH ) quer para o retirar ( operação de POP).
A pilha tem uma base que corresponde à posição inferior, que não deve ser ultrapassada, o que significa que não devem ser retirados dados que não foram lá colocados. Em alguns processadores, a base da
A r q u i t e c t u r a e O r g a n i z a ç ã o d e C o m p u t a d o r e s - 2 0 0 6 8 UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE F i c h a 5
verificação não é efectuada pelo processador. A forma mais simples de utilização permite apenas aceder ao valor guardado no topo da pilha, e que corresponde ao último valor lá colocado. Assim, é possível guardar-se um valor no topo da pilha usando a operação de PUSH (ou semelhante) ou recuperar o valor guardado no topo da pilha através da operação de POP (ou semelhante).
Quase todos os processadores podem executar instruções em que um ou mais operandos são valores constantes, especificados na própria instrução. Por exemplo, a instrução ADD R1,0005h soma ao conteúdo do registo R1 o valor 5, valor este que se encontra especificado na própria instrução.
Embora este método possa parecer tanto ou mais eficiente que a utilização de um valor em registo, isso não é, geralmente, verdade. De facto, a especificação de uma constante na própria instrução obriga, na prática, a utilizar mais uma palavra de memória para codificar a instrução, onde é guardada a constante.
Assim, para carregar este valor, é geralmente necessário fazer um acesso extra a memória1 o que se revela muito mais lento que um acesso a um registo interno. Desta forma, emtermos de velocidade, o uso de uma constante especificada na própria instrução é, na prática, equivalente, em termos de velocidade de execução, ao uso de um operando guardado em memória.
Existem duas formas possíveis de tratar os dados provenientes de portos de entrada/saída. A r q u i t e c t u r a e O r g a n i z a ç ã o d e C o m p u t a d o r e s - 2 0 0 6 9 UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE F i c h a 5
Uma filosofia, adoptada em muitas famílias de processadores, consiste em disponibilizar um conjunto de
diferentes alternativas existentes para a especificação da localização de um operando, ou seja, os possíveis
modos de endereçamento.
FFoorrmmaattoo ddaass iinnssttrruuççõõeess
Em formatos pretende-se saber qual é o tamanho das instruçoes (em bits), o número de endereços por instruçao, o tamanho de vários campos, etc.
A codificação das instruções assembly para linguagem máquina deverá ser compacta para que as instruções ocupem pouca memória e para que a sua transferência para o CPU seja rápida.
As instruções do processador são codificadas em uma ou duas palavras de memória. A segunda palavra de memória só é usada quando o modo de endereçamento requer a especificação do endereço de uma posição de memória ou de um operando imediato, nomeadamente nos modos de endereçamento imediato e indexado. Assim, todas as instruções que usem um destes modos de endereçamento usam duas posições de memória, a segunda das quais especifica o valor da palavra W usada no endereçamento.
A Figura abaixo descreve o formato genérico de uma instrução do processador. Nesta figura, os campos marcados com um ponto de interrogação podem ou não estar presentes numa dada instrução. Os primeiros seis bits (bits 15 a 10) da primeira palavra de cada instrução especificam qual o código da operação a executar (em inglês, operation code, ou mais simplesmente, opcode ). A r q u i t e c t u r a e O r g a n i z a ç ã o d e C o m p u t a d o r e s - 2 0 0 6 11 UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE F i c h a 5
IInnssttrruuççõõeess ppaarraa ttoommaaddaa ddee ddeecciissõõeess
A execução de qualquer programa pressupõe normalmente a tomada de decisões quanto à próxima instrução a executar. As estruturas de controlo presentes nas linguagens HLL incluem essencialmente o "if...then...else" e os ciclos. As instruções em linguagem máquina que suportam estas estruturas são de nível mais baixo: apenas executam testes que poderão ser seguidos de saltos condicionais ou incondicionais para uma determinada localização de memória, onde se encontre o bloco de instruções para executar.
As instruções de controlo mais simples são os saltos incondicionais , normalmente designados em linguagem assembly por JUMP ou BRANCH. Estas instruções especificam qual o endereço da próxima instrução a ser executada, através da manipulação do valor do PC. Em linguagem assembly, este endereço é normalmente especificado através da utilização de um nome simbólico.
Em muitos casos, é necessário transferir o controlo apenas quando uma dada condição se verifica. Por exemplo, pode-se querer terminar um ciclo quando o valor de um contador guardado num dado registo atinge o valor _. Nestes casos, utilizam-se instruções de salto condicional, que apenas transferem controlo para o endereço especificado quando uma dada condição se verifica.
É comum fazer com que a condição de salto dependa da última operação efectuada, uma vez que isso evita que seja necessário especificar qual a localização do valor que deve ser testado. Assim, é necessário guardar num registo bits que mantenham o valor das condições que podem ser testadas por instruções de controlo.
Entre as condições que podem ser testadas por instruções deste tipo encontram-se, tipicamente, as seguintes:
1 0 0 0 3 9
F 0 2 0 Zero (Z): a condição é verdadeira se o resultado da última operação foi zero. 1 0 0 0 3 9
F 0 2 0 Negativo (N): a condição é verdadeira se o resultado da última operação foi negativo.
A r q u i t e c t u r a e O r g a n i z a ç ã o d e C o m p u t a d o r e s - 2 0 0 6 13 UNIVERSIDADE SÃO TOMÁS DE MOÇAMBIQUE F i c h a 5
1 0 0 0 3 9
F 0 2 0 Transporte (C): esta condição (carry) é verdadeira se o resultado da última operação aritmética teve transporte.
1 0 0 0 3 9
F 0 2 0 Excesso (O): esta condição (overflow) é verdadeira se o resultado da última operação excede a capacidade de representação do processador.
1 0 0 0 3 9
F 0 2 0 Positivo (P): esta condição é verdadeira se o resultado da última operação foi estritamente positivo.
Interrupções
Uma outra situação em que a sequência normal de execução das instruções é alterada acontece quando o processador recebe e atende um pedido de interrupção.
Em muitos sistemas, o processador temde reagir a sinais vindos do exterior, que sinalizam a necessidade de efectuar algum processamento específico ou operações de entrada/saída. Por exemplo, um periférico pode querer sinalizar o processador que uma tecla foi premida, ou que uma palavra foi recebida num porto série.
A r q u i t e c t u r a e O r g a n i z a ç ã o d e C o m p u t a d o r e s - 2