Baixe o app para aproveitar ainda mais
Prévia do material em texto
Conjunto de Instruções SST Moreira, Marcelo dos Santos Conjunto de Instruções / Marcelo dos Santos Moreira Ano: 2020 nº de p. : 12 Copyright © 2020. Delinea Tecnologia Educacional. Todos os direitos reservados. Conjunto de Instruções 3 Apresentação Neste momento, estudaremos os modos de endereçamento em áreas de memória e registradores, como o modo direto, indireto, por registrador, indexado, modo base mais deslocamento. Em um segundo momento, compreenderemos a representação de dados, seus tipos, dados numéricos, dados não numéricos e dados lógicos. Por fim, compreenderemos o conjunto de instruções e os tipos de instruções para serem interpretadas e executadas pelo processador. Modos de endereçamento • Modo Direto No modo direto, o valor binário armazenado no campo “operando da instrução” representa o endereço da memória em que se localiza o dado. Atualmente, o modo direto é o que é mais utilizado. O endereço pode ser tanto uma célula, que armazena o dado, como pode ser o endereço da célula inicial. Vale ressaltar a simplicidade de acesso do método, haja vista a necessidade de apenas uma única referência à memória principal para se executar a busca do dado. Porém, o método direto é mais lento do que o método imediato devido à necessidade de referenciamento à memória. Para os casos de um dado que tem o seu valor variado em cada execução do programa, a recomendação é armazená-lo na memória principal e, a partir disso, o programa passa a utilizá-lo por meio do modo direto, ou seja, a instrução indicará apenas o endereço onde o dado se localiza. Com relação às desvantagens do modo direto, podemos citar a limitação de memória a ser usada, conforme o tamanho do campo. Ou seja, considere um campo com tamanho de 12 bits. No modo direto, somente as células de endereçamento de 0 a 4095 (sistema decimal) poderão ser acessadas – sistema binário 000000000000 a 111111111111. 4 As arquiteturas de processadores atuais têm o espaço de endereçamento que varia de 32 bits a 4GB, o que torna inviável a criação de instruções com um campo operando dessa magnitude. No sentido de se evitar tal situação, basta reduzir o tamanho do campo operando por meio do modo de endereçamento base mais deslocamento. Saiba mais • Modo Indireto No modo indireto, o valor binário do campo operando representa o endereço de uma célula, porém o conteúdo dela não representa o valor de um dado, mas um outro endereço de memória cujo conteúdo é o valor do dado. Dessa forma, o modo indireto é caracterizado pelo duplo endereçamento de acesso a um dado, necessitando de múltiplos ciclos de memória para buscar o dado. Para que isso aconteça, esse método utiliza um ponteiro que aponta para o endereço do dado. Com esse recurso, o problema de limitação do valor de endereçamento de dado descrito no modo direto é sanado, haja vista que o endereço armazenado na memória ocupará o tamanho necessário para a representação do maior endereço da memória principal da arquitetura computacional utilizada. De modo similar ao direto, o modo indireto traz consigo, como desvantagem, a grande quantidade de ciclos de memória requerida pelo computador para completar o ciclo de instrução. Isso acontece porque, para acessar um dado, é necessário que o processador efetue dois acessos à memória: um para buscar o endereço do dado; e outro para efetivar a busca do dado. Memória computacional. Fonte: Plataforma Deduca (2020). 5 • Modo de Endereçamento por Registrador Similar aos modos diretos e indiretos, o método de endereçamento por registrador se diferencia dos métodos anteriores, no que se refere à célula de memória referenciada na instrução, a qual é substituída por um dos registradores do processador. Dessa forma, o endereço mencionado na instrução passa a ser o endereço de um dos registradores e não uma célula da memória principal, como nos métodos anteriores. Esse artifício resulta em um menor número de bits necessários ao endereçamento dos registradores, pois eles existem em muito menor quantidade de células de memória e, consequentemente, o tamanho geral da instrução é reduzido. Também como vantagem do método de endereçamento por registrador, podemos citar o próprio emprego do dado, pois ele passa a ser armazenado em um registrador que tem um acesso muito mais rápido do que o da memória. • Modo Indexado Ao se executar um programa, pode ser que haja a necessidade de se manipular endereços de acesso a tipos específicos de dados. Esses endereços são denominados “ponteiros” desses tipos específicos de dados. Considere o acesso aos elementos de um vetor, os quais são armazenados sequencialmente na memória. O ponteiro (endereço) faz referência à sua localização e ele é alterado para indicar o elemento desejado. Essa descrição demonstra que a obtenção do endereço de um dado (nesse caso, elemento do vetor) se relaciona com o seu índice de forma unívoca. Assim, o endereço do dado é obtido pela soma do valor do campo operando – valor fixo para todos os elementos do vetor – e de um valor armazenado em um dos registradores do processador, o qual varia para o acesso de cada elemento do vetor. • Modo Base Mais Deslocamento O modo base mais deslocamento se assemelha ao modo indexado, pois o endereço de acesso a uma célula de memória é obtido pela soma de dois valores: o valor do campo apropriado da instrução – denominado “base” – e o outro valor de um determinado registrador – denominado “registrador base”. Na prática, a diferença entre os dois modos está na aplicação, no propósito e na forma de implementação. O valor que deverá ser mantido fixo é o do registrador base, variando apenas o valor do campo deslocamento de cada instrução, diferentemente do modo indexado, no qual o que se altera é o conteúdo do 6 registrador. Esse modo não exige que o campo operando tenha um tamanho correspondente à capacidade total de endereçamento da memória principal, bastando simplesmente que o endereço desejado seja obtido pela soma de um valor existente em um dos registradores da CPU com um valor contido na instrução. Daí o nome base mais deslocamento, devido à utilização de dois campos na instrução, os quais substituem o campo operando: • um campo com o endereço de um registrador – base; • um campo com um valor denominado “deslocamento” – contendo um valor relativo, o qual se desloca em relação à primeira instrução. Por fim, ao compararmos os modos indexado e base mais deslocamento, chegamos à conclusão de que o processo de cálculo do efetivo endereço de acesso é o mesmo. Representação dos dados A organização dos computadores está diretamente relacionada à forma como eles representam números, caracteres e informações de controle. Também, padrões e convenções estabelecidos ao longo dos anos determinam certos aspectos da organização do computador. A unidade mais básica de informação utilizada por um computador digital é denominada bit, representando a contração da língua inglesa binarydigit – ou dígito binário: 0 ou 1. Na prática, 0 ou 1 representa “ligado” ou “desligado” em um circuito computacional. Em 1964, os projetistas do computador mainframe IBM System/360 estabeleceram uma convenção de processamento de dados, usando grupos de 8 bits como a unidade básica de armazenamento de computador endereçável. Nominaram essa coleção de 8 bits de byte. Palavras em um computador consistem em dois ou mais bytes adjacentes que, por vezes, são endereçados e quase sempre são manipulados coletivamente. O tamanho da palavra representa o tamanho dos dados, que é tratado com mais eficiência por uma arquitetura específica. 7 Bits e bytes. Fonte: Plataforma Deduca (2020). As palavras podem ter 16 bits, 32 bits, 64 bits ou qualquer outro tamanho que faça sentido no contexto da organização de um computador. Os bytes de oito bits podem ser divididos em duas metades de 4 bits, as quais são denominadas “nibbles”. Como cada bit de um byte tem um valor dentro de um sistema de numeraçãoposicional, o nibble que contém o dígito binário de menor valor é chamado de nibble de baixa ordem, e a outra metade de nibble, de alta ordem. • Tipos de Dados Antes de apresentarmos os tipos de dados, vale conceituar o nível ISA – Instruction Set Architecture ou Arquitetura do Conjunto de Instruções. Trata-se da interface entre software e hardware que representa o nível mais próximo ao hardware em que um usuário pode programar. Como vimos, os dados em um sistema computacional têm de ser representados na forma binária. No nível ISA, são utilizados vários tipos diferentes de dados. Vamos subdividi-los em tipos de dados numéricos e não numéricos. • Dados Numéricos O principal tipo de dados numéricos são os dados numéricos inteiros, podendo ter muitos comprimentos – geralmente 8, 16,32 e 64 bits. Números inteiros quantificam coisas: quantidade de funcionários de uma empresa, quantidade de itens em estoque etc. Identificam coisas: número do registro de um automóvel no departamento de trânsito, número do seguro social de um cidadão etc. Esses números inteiros são armazenados pelos computadores na forma binária. Computadores suportam tanto 8 números inteiros sem sinal como números inteiros com sinal. Em se tratando de um número inteiro sem sinal, não existe o bit de sinal e, consequentemente, todos os bits contêm dados. Já na necessidade de se expressar um número não inteiro – por exemplo 2,8 – são utilizados números de ponto flutuante, os quais podem ter o comprimento de 32, 64 ou 128 bits. • Dados Não Numéricos Nos dias atuais, a necessidade de processamento de dados exige que os computadores modernos sejam utilizados também para aplicações não numéricas: e-mail, navegação web, edição de imagens digitais, criação e reprodução de multimídias. Essas aplicações demandam outros tipos de dados e a clara importância dos caracteres, dos quais destacamos os padrões ASCII – American Standard Code for Information Interchange ou Padrão Americano de Código para o Intercâmbio de Informações – e o Unicode. Ambos os padrões suportam caracteres de 7 bits e 16 bits, respectivamente. O código ASCII não foi criado especificamente para uso em computadores. Ele foi criado para ser utilizado por telégrafos e apresenta apenas sete bits, possibilitando, no máximo, 128 valores diferentes. Curiosidade • Dados Tipo Lógico Vale destacar a importância dos dados do tipo lógico, conhecidos como valores booleanos, que podem assumir um de dois valores: verdadeiro – bit 1 – ou falso – bit 0. Com os dados do tipo lógico, é possível realizar uma série de operações utilizando-se, para isso, as simbologias AND, OR e NOT, com a tabela-verdade (PAIXÃO, 2014). Nos quadros a seguir, observe as suas aplicações. 9 Aplicação do operador lógico AND. Variável 1 Variável 1 Resultado Operador and Verdadeiro Verdadeiro Verdadeiro Resulta em um valor verdadeiro se os dois valores de entrada da operação forem verdadeiros. Verdadeiro Falso Falso Falso Verdadeiro Falso Falso Falso Falso Fonte: Adaptado de Monteiro (2007, p. 211-215). Aplicação do operador lógico OR. Variável 1 Variável 1 Resultado Operador or Verdadeiro Verdadeiro Verdadeiro Resulta um valor verdadeiro se ao menos um dos dois valores de entrada da operação for verdadeiro. Verdadeiro Falso Verdadeiro Falso Verdadeiro Verdadeiro Falso Falso Falso Fonte: Adaptado de Monteiro (2007, p. 211-215). Aplicação do operador lógico NOT. Variável 1 Resultado Operador not Verdadeiro Falso Verdadeiro Tem por função inverter os valores de entrada. Falso Verdadeiro Fonte: Adaptado de Monteiro (2007, p. 211-215). Como pôde ser observado, os operadores lógicos podem ser utilizados de diferentes formas em programas de computador, pois, por meio das tabelas-verdade, apresentam todas as possibilidades de combinação dos seus operadores. 10 Conjunto de Instruções Todo computador tem como base de funcionamentos ordens simples e básicas: (1) efetuar a soma de dois números; (2) mover um dado de um local para outro (3) incrementar 1 ao valor de um número etc. As referidas ordens são simples porque o hardware não é capaz de manipular diretamente ordens mais complexas. Tais ordens são transmitidas ao processador para serem interpretadas e executadas por meio de sinais elétricos representados pelos bits 1 ou 0. Instruções de máquinas e todos os processadores são fabricados contendo em seu interior esse conjunto de instruções. Pense em um game que realiza diversas funções durante a sua execução: uma personagem pode correr para frente, correr para trás, andar para frente, andar para trás, pular, deitar e atirar. Reflita Para a execução de tais funções, os desenvolvedores projetaram um conjunto de instruções primitivas. Dessa maneira simples, pudemos exemplificar o funcionamento dos computadores. Por meio de um conjunto básico de instruções primitivas, um programador pode combiná-las de diferentes maneiras, de modo a obter diferentes resultados. Um computador, com o seu conjunto de instruções de máquina (primitivas), pode ser utilizado para o desenvolvimento de textos, planilhas, para processar e tratar imagens, bem como realizar o pagamento de uma conta por meio do internet banking. • Tipos de Instruções A maioria das instruções opera sobre dados e outras não, como comenta Null e Lobur (2010). Fabricantes de computadores regularmente agrupam instruções nas seguintes categorias: movimentação de dados, aritméticas, booleanas, manipulação de bits, E/S, transferências de controle e propósito especial. Para Stallings (2002, p. 344), podem ser catalogadas em: 11 1. Processamento de dados: instruções aritméticas e lógicas. 2. Armazenamento de dados: instruções de memória. 3. Movimentação de dados: instruções de E/S. 4. Controle: instruções de testes e de desvio. Com relação às operações de processamento de dados, para Null e Lobur (2010), elas incluem aquelas instruções aritméticas que usam números inteiros e de ponto-flutuante. As instruções aritméticas incluem operações de soma (ADD), multiplicação (MULTIPLY), divisão (DIVIDE), incremental (INCREMENT), decremental (DECREMENT) e de mudança de sinal (NEGATE). Já para as operações lógicas booleanas, Stallings (2002, p. 344) comenta que “as instruções lógicas operam sobre bits de uma palavra, como bits e não como números”. Instruções lógicas incluem AND, NOT, OR, XOR, TESTE e COMPARE. Com relação às operações de movimentação de dados (instruções de E/S), elas são necessárias para transferir dados e resultados da memória para o usuário. Já para as operações de armazenamento de dados (instruções de memória), existem instruções de memória para mover dados entre a memória e os registradores, de registradores para registradores e de registradores para a memória e incluem as instruções MOVE, LOAD, STORE, PUSH, POP, EXCHANGE e suas variações (NULL; LOBUR, 2010). Já nas operações de controle, as instruções de testes são usadas para testar o valor de uma palavra de dados ou o estado de uma computação. Instruções de desvio são utilizadas para desviar a execução de um programa para uma nova instrução, “[...] dependendo do resultado de um teste.” (STALLINGS, 2002, p. 344). Incluem instruções de desvio e paradas: JUMP, RETURN, SKIP, HALT, WAIT. Fechamento Chegamos ao final do estudo sobre conjunto de instruções e compreendemos a importância e os tipos de modos de endereçamento de memórias tanto para acesso a memórias RAM e para processadores. Na sequência, compreendemos a representação de números, caracteres e informações de controle, de acordo com padrões e convenções estabelecidos ao longo dos anos e que determinam certos aspectos da organização do computador. Por fim, estudamos os tipos de conjuntos de instruções utilizadas pelo processador para interpretar, executar, armazenar, movimentar e controlar dados. 12 Referências NULL, L.; LOBUR, J. Princípios Básicos de Arquitetura e Organização de Computadores. Porto Alegre: Bookman, 2010.MONTEIRO, M. A. Introdução à organização de computadores. Rio de Janeiro: LTC, 2007. ISBN: 978-85-216-1973-4. PAIXÃO, R. R. Arquitetura de computadores: PCs. São Paulo: Érica, 2014. ISBN: 9788536518848. STALLINGS, W. Arquitetura e Organização de Computadores: projeto para o desempenho. São Paulo: Prentice Hall, 2002.
Compartilhar