Buscar

2ª Aula Curso de Ciências da Computação Projeto Logico de Computadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 1 de 7 
 
1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 
1.3. INSTRUÇÕES – Conceitos Básicos 
Já estudamos anteriormente que os processadores funcionam (ou melhor, o seu hardware 
funciona) através de ordens simples e básicas, tais como: 
 Efetue a soma de dois números; 
 Mova um dado de um local para outro; 
 Adicione 1 ao valor de um número; 
 Transfira 1 byte de dados da memória para uma porta de saída. 
Estas ordens são simples porque o hardware não é capaz de manipular diretamente ordens 
mais complexas. 
Ainda sabemos que essas ordens são transmitidas ao hardware (componentes do 
processador) para serem interpretadas e executadas por meio de sinais elétricos que 
representam ou o bit “1” ou o bit “0”, ou seja, por um conjunto de bits, que chamamos 
formalmente de instrução de máquina. Todo processador já é fabricado de modo a conter em 
seu interior um grupo dessas instruções, que são chamadas em bloco de: “conjunto de 
instruções” (“instruction set”). A escolha das operações que o processador poderá realizar 
diretamente (ou seja, quais “instruções” irão realizar) e como cada uma delas será realizada, 
passo a passo, são dois itens importantes no projeto e na fabricação de um processador. 
Nesse ponto, nos referimos à fronteira entre: 
O entendimento do programador – que deseja obter solução para seu problema e elabora 
um programa em uma linguagem que seja próxima de seu entendimento (de sua lógica) contendo 
operações complexas, em linguagens como: “Pascal”; “C” ou “Java”, e: 
O hardware do processador – que aceita apenas operações simples para ser executadas. 
O programador (em linguagem de baixo nível) pode ver e manipular alguns poucos 
elementos do hardware, como os registradores de dados, a parte de cima da tal fronteira, 
enquanto outro nível, chamado de microarquitetura (contendo micro-operações e 
microprogramação), se encarrega de interpretar essas instruções e efetivamente providenciar sua 
execução, passo a passo (micro-operação por micro-operação). Obs. Existem alguns processadores, no 
entanto, (p.ex., os de arquitetura RISC) que usam o controle por meio de programação direta no hardware, sem o uso de 
microprogramação. 
 
Fig. 1.3 Instruções passadas aos níveis inferiores ao nível de Máquina convencional. 
Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 2 de 7 
 
Vamos acrescentar um exemplo que deve auxiliar o entendimento sobre o conceito e o 
papel das instruções de máquina e como, por isso, funcionam os processadores de emprego 
geral, assim comercialmente denominados. 
Exemplo 1: 
Considere uma máquina, um robô, construído de forma a possuir dois braços mecânicos, 
com terminações capazes de se mover para cima e para baixo (o braço da esquerda e o braço da 
direita) e cada uma das terminações sendo capaz de girar no sentido horário ou contrariamente ao 
sentido horário. Os outros movimentos deste Robô são irrelevantes para o exemplo, por isso só 
mencionaremos oito movimentos. 
Para que ele possa realizar cada um desses movimentos e tenha flexibilidade de realizar 
outros mais complexos, projetou-se um conjunto de instruções primitivas (simples) que acionam o 
hardware (efetivam os movimentos das articulações, braços): cada uma dessas instruções foi 
identificada por um código numérico de 0 a 7, conforme mostrado na Tabela 1.1. 
 
Tabela 1.1 Codificação e descrição de movimentos executados pelo robô no Exemplo 1. 
Essa máquina pode ser usada por uma empresa, por exemplo, para aparafusar algum 
objeto em uma parede ou desparafusar; a operação (de aparafusar) pode ser realizada em 
qualquer posição (como, p.ex., inclinada para baixo, cerca de 45° ou na perpendicular do chão, 
(90°), usando qualquer um dos dois braços articulados, e assim por diante). 
Se, em determinado momento, se quiser aparafusar um objeto na perpendicular do chão 
(90°), pode-se, a partir da posição de repouso do robô (braços estendidos para baixo), comandar 
a execução de um programa do tipo: 
Contador A = 1 
Contador B = 100 
Enquanto contador A < 90 
Iniciar 
Instrução cod. 0 
Contador A = contador + 1 
Fim 
Enquanto contador B < 100 
Iniciar 
Instrução cod. 2 
Contador B = Contador B + 1 
Fim 
Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 3 de 7 
 
A essência do conceito aqui mostrado é apenas a capacidade de a máquina poder realizar 
operações complexas diferentes (e, pois, uma máquina de emprego geral) usando as mesmas 
instruções primitivas (da Tabela 1.1), as quais podem ser manipuladas de forma diferente para 
obterem-se resultados diferentes. 
O programa mostrado é bastante incompleto, porém sua única finalidade é mostrar a 
diferença entre uma instrução primitiva, que realiza uma operação básica simples, e uma outra 
operação, mais complexa, que requer várias instruções básicas (um programa) para ser realizada. 
Além disso, teremos grande flexibilidade de ações complexas a realizar, pois podemos variar a 
combinação das primitivas, obtendo-se, com isso, resultados diferentes. 
Essa é uma das características essenciais dos computadores de emprego geral. Ou 
seja, possuem um conjunto básico de instruções primitivas e o usuário (programador) pode 
combina-las de diferentes modos (criar diferentes programas), obtendo diferentes 
resultados. 
Assim é que um determinado computador (pode ser um dos sistemas baseados em um 
processador Pentium 4 ou AMD Athlon XP), com seu conjunto de instruções de máquina 
(primitivas) pode ser empregada para o desenvolvimento de textos (com o MS Office ou Open 
Office), mas também pode ser empregado para controlar o fluxo de carros em uma região 
(controlando a abertura e o fechamento dos sinais de trânsito) e, em determinadas circunstâncias, 
poderá, também, ser empregado como plataforma para um sistema de controle bancário e outras 
aplicações. O que se quer demonstrar e que a inteligência e a versatilidade do sistema estão 
na combinação dessas instruções primitivas (nos programas), no software, visto que o 
hardware e imutável (pelo menos para o usuário). 
1.4. FORMATO DE UMA INSTRUÇÃO DE MÁQUINA 
Como já estudamos, o conjunto de instruções de um processador define o que ele 
é capaz de realizar em si, permitindo ao programador do programa compilador escrever seu 
código de acordo. 
Lembramos que esta é a razão de, por exemplo, um programa escrito em um programa 
compilador para “PC” ® não “rodar” em uma plataforma “Apple” ®. As instruções dos 
processadores são diferentes, por isso o programa deve ser ajustado à plataforma do 
processador. 
Uma instrução de máquina deve, então, especificar para o hardware 
(especificamente a unidade de controle do processador) que determinada operação deve ser 
realizada (soma de dois números, movimento de um dado, etc.). Em função da interpretação do 
que é a instrução, a UC, que já possui a sequência de execução (programação) de todas as 
instruções daquele especifico processador, "dispara" (emite os sinais elétricos de controle 
correspondentes a cada microação) a sinalização para efetivação das ações subsequentes 
para a completa execução da operação. 
A Fig. 1.4 mostra exemplos de diversas operações primitivas que podem redundar em 
instrução de máquina de um determinado processador. 
Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 4 de 7 
 
 
Fig. 1.4 Exemplo de operações primitivas típicas. 
Quaissão os elementos requeridos para execução de uma operação? Como eles 
são projetados para formatar, em binário, uma instrução de máquina? Qual ou quais tipos 
de dados ela manipulara? Por exemplo, uma operação de somar dois números requer a 
indicação da operação em si (como ela ocorrera) e a localização dos dados envolvidos: a 1ª 
parcela, a 2ª parcela e o resultado; é também necessário indicar se os valores são números 
inteiros ou números fracionários (ponto flutuante – conforme visto em Circuitos Digitais). 
A resposta a essas e outras questões pertinentes configura o projeto do conjunto de 
instruções de um determinado processador ou "família" de processadores. 
O projetista do conjunto de instruções define, então, que operações aquele 
processador irá realizar e especifica, para cada uma delas, todos os detalhes de 
identificação e execução da operação, estabelecendo, assim, o formato de cada instrução 
da máquina. Além disso, é necessário detalhar sua execução, ou seja, criar uma sequência 
de micro-operações para efetivamente realizar a tarefa. 
 
Fig. 1.5 Formato básico de uma instrução de máquina. 
 
Fig. 1.6 Três formatos típicos de instrução: (a) instrução sem endereço; 
(b) instrução de um endereço; 
(c) instrução de dois endereços. 
Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 5 de 7 
 
A Fig. 1.6 mostra vários formatos típicos para as instruções de nível 2. Em algumas 
máquinas de nível 2 todas as instruções possuem o mesmo comprimento, já em outras podem 
existir dois ou três comprimentos. Alem disso, as instruções podem ser mais curtas, do mesmo 
tamanho ou mais longas do que o comprimento de uma palavra. 
1.4.1. Campo Operando (Op.) 
O “campo operando”, ou “campos operando” (pois pode haver mais de um campo, 
indicando a localização de mais de um dado ou endereço), de uma instrução indica 
genericamente o dado que se deseja manipular em um endereço para buscar ou armazenar 
um dado ou resultado de uma determinada operação. O dado pode estar explicitamente 
colocado: 
 No próprio campo operando da instrução, ou; 
 Estar armazenado em uma posição de memória, ou ainda: 
 Em um registrador de dados do processador, cujo endereço é o que se encontra 
no Campo Operando da instrução. 
Essa diversidade de apresentação do dado na instrução denomina-se genericamente 
modo de endereçamento. 
Na prática, o conjunto de instruções definido para um determinado processador ou 
família de processadores (como é o caso da arquitetura x86) é sempre constituído de uma mistura 
de formatos diferentes, justamente para permitir a melhor aplicação em cada caso, exceto em 
arquiteturas do tipo RISC. 
No que se refere ao Campo Operando, podem-se analisar dois aspectos: 
 Quantidade de operandos (3, 2, 1 e 0 operandos); 
 Modo de endereçamento do dado (modo de interpretação do valor armazenado no 
campo operando). 
1.5. MODOS DE ENDEREÇAMENTO 
Ao analisarmos o formato básico de instruções de máquina e o ciclo de execução de 
cada instrução, concluindo que: 
a) O endereçamento de uma instrução é sempre realizado através do valor 
armazenado no Contador de Instrução (Cl). Todo ciclo de instrução é iniciado 
pela transferência da instrução para o Rl – Registrador de Instrução (usando-se o 
endereço contido no Cl). 
b) Toda instrução consiste em uma ordem codificada (código de operação), para o 
processador executar uma operação qualquer sobre dados. No contexto da 
interpretação de uma instrução, o dado pode ser um valor numérico, um caractere 
alfabético, um endereço (instrução de desvio). 
c) A localização do(s) dado(s) pode estar explicitamente indicada na própria 
instrução por um ou mais conjuntos de bits, denominados campo do operando, 
ou implicitamente (quando o dado estiver armazenado no único registrador existente no 
processador para este fim, como era o caso quando os processadores possuíam o ACC 
- acumulador). 
Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 6 de 7 
 
Todos os exemplos apresentados até esse ponto definiram o campo operando como 
contendo o endereço onde esta localizado o dado referido na instrução; no entanto, essa não é a 
única maneira de indicar a localização de um dado, havendo outros modos de endereçamento. 
A existência de vários métodos para localizar um dado que está sendo referenciado em 
uma instrução se prende a necessidade de dotar os sistemas de computação da necessária 
flexibilidade no modo de atender aos diferentes requisitos dos programas, o que é uma 
característica típica de arquiteturas ClSC. 
Algumas relações possíveis entre comprimento de instrução e comprimento de palavra 
são mostradas na Fig. 1.7. 
 
Fig. 1.7 Algumas relações possíveis entre comprimento de uma instrução e comprimento de uma palavra. 
Para justificar a existência de muitos métodos de indicar a localização do dado 
referenciado na instrução pode-se citar o caso de instruções em que e ineficiente usar 0 dado 
armazenado na MP, como, por exemplo, o de um contador, o qual tem um valor fixo inicial e, 
durante a execução do programa, e sistematicamente atualizado. Nesse caso, melhor seria se 0 
referido contador (dado) fosse inicialmente transferido para um registrador, dentre os que 
estivessem disponíveis no processador ela permanecesse (sendo diretamente atualizado no 
processador até o final da execução do programa, caso contrário poderia acarretar um 
considerável gasto de tempo para os repetidos ciclos de leitura e gravação). 
A manipulação de vetores acarreta a necessidade de se estabelecer um método eficaz 
de endereçamento para variáveis que ocupam posições contiguas de memória, ocasionando outro 
tipo de necessidade de indicar se o dado de forma diferente. E assim por diante. 
 
 
Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 7 de 7 
 
Dentre os diversos modos de endereçamento desenvolvidos para processadores, os 
principais são: 
• imediato; 
• direto; 
• indireto; 
• por registrador; 
• indexado; 
• base mais deslocamento. 
A existência de muitos modos de endereçamento de dados em um mesmo conjunto de 
instruções e típico de arquiteturas ClSC, pois sem duvida aumenta a complexidade da 
decodificação de cada instrução e aumenta a quantidade delas, com isso acarretando todas as 
desvantagens já mencionadas quando analisamos a largura do campo código de operação. 
Nem todos esses modos estão incluídos nos conjuntos de instruções dos 
processadores contemporâneos, mas devem ser descritos não só por razões históricas, mas para 
percepção do processo evolutivo da tecnologia.

Continue navegando