Organização E Arquitetura De Computadores

  • Uploaded by: Manoel Messias
  • 0
  • 0
  • January 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Organização E Arquitetura De Computadores as PDF for free.

More details

  • Words: 25,960
  • Pages: 162
Loading documents preview...
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES 53

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Série Bibliográfica Unit

Toniclay Andrade Nogueira

Organização e Arquitetura de Computadores

Jouberto Uchôa de Mendonça Reitor Amélia Maria Cerqueira Uchôa Vice-Reitora Jouberto Uchôa de Mendonça Junior Pró-Reitoria Administrativa - PROAD Ihanmarck Damasceno dos Santos Pró-Reitoria Acadêmica - PROAC Domingos Sávio Alcântara Machado Pró-Reitoria Adjunta de Graduação - PAGR Temisson José dos Santos Pró-Reitoria Adjunta de Pós-Graduação e Pesquisa - PAPGP Gilton Kennedy Sousa Fraga Pró-Reitoria Adjunta de Assuntos Comunitários e Extensão - PAACE Jane Luci Ornelas Freire Gerente do Núcleo de Educação a Distância - Nead Andrea Karla Ferreira Nunes Coordenadora Pedagógica de Projetos - Nead Lucas Cerqueira do Vale Coordenador de Tecnologias Educacionais - Nead Equipe de Elaboração e Produção de Conteúdos Midiáticos: Alexandre Meneses Chagas - Supervisor Ancéjo Santana Resende - Corretor Andira Maltas dos Santos – Diagramadora Bruno Costa Pinheiro - Webdesigner Claudivan da Silva Santana - Diagramador Edilberto Marcelino da Gama Neto – Diagramador Edivan Santos Guimarães - Diagramador Fábio de Rezende Cardoso - Webdesigner Geová da Silva Borges Junior - Ilustrador Márcia Maria da Silva Santos - Corretora Matheus Oliveira dos Santos - Ilustrador Monique Lara Farias Alves - Webdesigner Pedro Antonio Dantas P. Nou - Webdesigner Rebecca Wanderley N. Agra Silva - Designer Rodrigo Otávio Sales Pereira Guedes - Webdesigner Rodrigo Sangiovanni Lima - Assessor Walmir Oliveira Santos Júnior - Ilustrador Redação: Núcleo de Educação a Distância - Nead Av. Murilo Dantas, 300 - Farolândia Prédio da Reitoria - Sala 40 CEP: 49.032-490 - Aracaju / SE Tel.: (79) 3218-2186 E-mail: [email protected] Site: www.ead.unit.br Impressão: Gráfica Gutemberg Telefone: (79) 3218-2154 E-mail: [email protected] Site: www.unit.br

Banco de Imagens: Shutterstock

N778o

Nogueira, Toniclay Andrade. Organização e arquitetura de computadores. / Toniclay Andrade Nogueira. – Aracaju : UNIT, 2010. 160 p.: il. : 22 cm. Inclui bibliografia 1. Arquitetura de computador. 2. Organização de computador. 3. Informática. I. Universidade Tiradentes – Educação a Distância II. Titulo. CDU : 004.2 Copyright © Sociedade de educação Tiradentes.

Apresentação Prezado(a) estudante, A modernidade anda cada vez mais atrelada ao tempo, e a educação não pode ficar para trás. Prova disso são as nossas disciplinas on-line, que possibilitam a você estudar com o maior conforto e comodidade possível, sem perder a qualidade do conteúdo. Por meio do nosso programa de disciplinas on-line você pode ter acesso ao conhecimento de forma rápida, prática e eficiente, como deve ser a sua forma de comunicação e interação com o mundo na modernidade. Fóruns on-line, chats, podcasts, livespace, vídeos, MSN, tudo é válido para o seu aprendizado. Mesmo com tantas opções, a Universidade Tiradentes optou por criar a coleção de livros Série Bibliográfica Unit como mais uma opção de acesso ao conhecimento. Escrita por nossos professores, a obra contém todo o conteúdo da disciplina que você está cursando na modalidade EAD e representa, sobretudo, a nossa preocupação em garantir o seu acesso ao conhecimento, onde quer que você esteja.

Desejo a você bom aprendizado e muito sucesso!

Professor Jouberto Uchôa de Mendonça Reitor da Universidade Tiradentes

Sumário Parte 1: Arquitetura Computacional . . . . . . . . . . . 11 Tema 01: Introdução à arquitetura de computadores . . . . . . . . . . . 13 1.1 Níveis de abstração do hardware . . . . . . . . . . . . . . . . . . . . 14 1.2 Hardware/Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.3 História da Arquitetura de Computadores . . . . . . . . . . . . .31 1.4 História da Arquitetura de Computadores (4ª Geração – 1980, a Família Intel e a Família Motorola). . . . . . . . . . . 40 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Tema 02: Organização dos Sistemas de Computação . . . . . . . . . . . .49 2.1 Processadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.2 Arquitetura Risc X Cisc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 2.3 Arquiteturas Paralelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 2.4 Memória Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

Parte 2: Abordagem sobre Organização e Arquitetura de Computadores. . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Tema 03: Organização dos Sistemas Operacionais . . . . . . . . . . . . . .89 3.1 Memória . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 3.2 Entrada e Saída . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 3.3 ENTRADA E SAÍDA (teclado, porta paralela, portas seriais, Interrupções e Acesso direto à memória) . . . . . .107 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Tema 04: A Interface do Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 123 4.1 Formatos de Instruções em Linguagem de Máquina . . .124 4.2 Modos de Endereçamento . . . . . . . . . . . . . . . . . . . . . . . . .133 4.3 Tipos de Instruções em linguagem de máquina . . . . . . . 141 4.4 Noções de Programação em Assembly . . . . . . . . . . . . . . 149 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

Concepção da Disciplina Ementa Introdução à Arquitetura de Computadores: Níveis de Abstração do Hardware; Hardware/Software; História da Arquitetura de Computadores; História da Arquitetura de Computadores (4º Geração – 1980, a Família Intel e a Família Motorola). Organização dos Sistemas de Computação: Processadores; Arquitetura Risc x Cisc; Arquiteturas Paralelas; Memória Virtual. Introdução à Organização dos Sistemas de Computação: Memórias; Entrada e Saída; Entrada e Saída (teclado, porta paralela, portas seriais, Interrupções e Acesso direto à memória); Processo de Montagem de Microcomputadores. A Interface do Hardware: Formatos de Instruções em Linguagem de Máquina; Modos de Endereçamento; Tipos de Instruções em linguagem de máquina; Noções de Programação em Assembly.

Objetivos: Geral Levar ao aluno os conceitos necessários da Organização e da Arquitetura dos Computadores, visando à obtenção do conhecimento necessário à interpretação de seu funcionamento nos requisitos físicos e lógicos, bem como a sua aplicação na estruturas de processamento.

Objetivos Específicos •

Nívelar os conceitos básicos sobre Hardware.



Conhecer os conceitos sobre a estrutura de funcionamento e as principais partes de um computador.



Dominar e aplicar os recursos essenciais de um computador e seus recursos operacionais.



Compreender a importância do funcionamento dos componentes dos computadores.

Orientação para Estudo A disciplina propõe orientá-lo em seus procedimentos de estudo e na produção de trabalhos científicos, possibilitando que você desenvolva em seus trabalhos e pesquisas o rigor métodológico e o espírito crítico necessários ao estudo. Tendo em vista que a experiência de estudar a distância é algo novo, é importante que você observe algumas orientações: • Cuide do seu tempo de estudo! Defina um horário regular para acessar todo o conteúdo da sua disciplina disponível neste material impresso e no Ambiente Virtual de Aprendizagem (AVA). Organize-se de tal forma para que você possa dedicar tempo suficiente para leitura e reflexão;

• Esforce-se para alcançar os objetivos propostos na disciplina; • Utilize-se dos recursos técnicos e humanos que estão ao seu dispor para buscar esclarecimentos e para aprofundar as suas reflexões. Estamos nos referindo ao contato permanente com o professor e com os colegas a partir dos fóruns, chats e encontros presenciais, além dos recursos disponíveis no Ambiente Virtual de Aprendizagem – AVA. Para que sua trajetória no curso ocorra de forma tranquila, você deve realizar as atividades propostas e estar sempre em contato com o professor, além de acessar o AVA. Para se estudar num curso a distância deve-se ter a clareza de que a área da Educação a Distância pauta-se na autonomia, responsabilidade, cooperação e colaboração por parte dos envolvidos, o que requer uma nova postura do aluno e uma nova forma de concepção de educação. Por isso, você contará com o apoio das equipes pedagógica e técnica envolvidas na operacionalização do curso, além dos recursos tecnológicos que contribuirão na mediação entre você e o professor.

ARQUITETURA COMPUTACIONAL Parte 1

1

Introdução à arquitetura de computadores

Neste tema veremos uma introdução ao assunto abordado com alguns conceitos, bem como uma definição clara sobre Hardware e Software e uma breve história da evolução da Arquitetura de Computadores. A definição para Arquitetura de Computadores ou Organização de Computadores é o estudo de como projetar as partes de um computador que são visíveis aos programadores.

14

Organização e Arquitetura de Computadores

1.1 Níveis de abstração do hardware Para entender uma máquina digital, precisamos ler alguns conceitos. Primeiramente, temos que definir o que é um computador digital, que é uma máquina capaz de solucionar problemas através da execução de instruções que lhe são fornecidas. Em consequência desta definição já podemos definir o que é um programa. Então, temos que um programa é uma sequência de instruções que descreve como executar uma determinada tarefa ou também podemos definir como um conjunto de instruções. As instruções primitivas de um computador formam uma linguagem que torna possível a compreensão entre o ser humano e o computador. Esta linguagem é denominada Linguagem de Máquina e as Instruções de Máquina são instruções que o computador é capaz de reconhecer e executar. Exemplo de Instruções de Máquina: “Somar cinco números” “Verificar se um dos números é 1” “Mover um dado de uma parte da memória para outra” Exemplo de Linguagem de Máquina: 000010000100101111110000000000111 111111100000011010010100010000000 100000000000001001010010010101010 000001010101010101010000011110000 010101010101010100101010101010100 100101010101010101111100000110010 000010000100101111110000000000111 111111100000011010010100010000000 000010000100101111110000000000111 111111100000011010010100010000000

Tema 1

| Introdução à arquitetura de computadores

As instruções da Linguagem de Máquina devem ser simples, compatíveis com o uso da máquina, ser compatível com o desempenho e ter o custo e complexidade eletrônica reduzidos, pois a linguagem de máquina está muito distante de uma linguagem natural. A organização de computadores está dividida em várias camadas que representam abstrações do mundo real. A máquina virtual representa uma imagem de uma máquina que não existe no plano físico, mas que para funcionar precisa de uma linguagem definida e que, na maioria das vezes, a linguagem de máquina tem como características de ser simples, mas de difícil utilização. No parágrafo anterior vimos que a linguagem de máquina é simples mas de difícil utilização. Então, para resolver este problema temos duas maneiras, ambas envolvendo um novo projeto com um conjunto de instruções de uso mais conveniente para as pessoas do que instruções embutidas em máquina, pois, juntas, as novas instruções formam uma linguagem que chamamos de L2, enquanto que as instruções que estão embutidas na máquina chamamos de L1. Os dois são diferentes na maneira em que o programa escrito em L2 é executado pelo computador, e que o computador pode apenas executar o programa escrito em linguagem de máquina L1. O programa executado em L2 consiste em: •

Substituir cada instrução nele por uma sequência equivalente às instruções de L1.



O programa resultante é inteiramente composto de instruções de L1.

15

16

Organização e Arquitetura de Computadores



O computador executa um novo programa em L1 em vez do programa em L2, que se denomina Tradução.

O programa executado em L1 consiste em: •

Receber os programas escritos em L2 como dados de entrada e efetuar a execução examinando uma instrução de cada vez e executar a sequência equivalente à instrução L1, pois, esta técnica não requer a execução de um novo programa em L1 que se denomina em interpretação e o programa que executa denomina-se interpretador.



Uma máquina multinível: é um comutador que possui máquinas virtuais dispostas em camadas, uma sobre a outra. Agora veremos as camadas que existem em computadores atuais.

Tema 1

| Introdução à arquitetura de computadores

Computador com 6 níveis: Método pelo qual cada nível que é suportado é indicado abaixo do nível

O nível 0, ou nível de Lógica Digital, é o hardware verdadeiro da máquina, onde os seus circuitos executam programas em linguagem de máquina de nível 1. Existe ainda um nível mais baixo que o nível 0, que seria um nível da engenharia elétrica intitulado nível de dispositivo. O nível 1, ou nível de microprogramação, é o verdadeiro nível de linguagem de máquina, onde verdadeiramente existe um programa que denominamos microprograma. Cada máquina de nível 1 tem um ou mais microprogramas que são executados nela.

17

18

Organização e Arquitetura de Computadores

O nível 2 é o nível de máquina convencional, que a cada microprograma definido no nível 1 é uma linguagem que define uma linguagem de nível 2. O nível 3, ou nível de sistema operacional, é um nível considerado híbrido, pois a maioria das instruções desta linguagem está também no nível 2. Novas facilidades do sistema operacional são adicionadas a cada ano. O nível 4 é o nível de linguagem de montagem, pois é uma forma simbólica para uma linguagem subjacente. Este nível contém métodos para que pessoas escrevam nos níveis 1,2 e 3. (Não confunda ASSEMBLY, que é a linguagem de programação do nível 4, com ASSEMBLER, que é o programa utilizado para executar os códigos fontes criados em ASSEMBLY). O nível 5 é o nível em linguagem projetada para ser utilizado por programadores com aplicações, com problemas a serem resolvidos. Estas linguagens são denominadas de linguagens de alto nível. Exemplo de linguagem de alto nível: BASIC 10 SCREEN 0: CLS : WIDTH 100 20 LOCATE 1, 1: PRINT “Programas em Linguagem BASIC” 30 Ik$ = INKEY$: IF Ik$ = “” THEN GOTO 30 40 CLS : END

C #include <stdio.h> int main() { int a,b,c,soma; a = 4; b = 6; c = 23; soma = a + b + c; printf(“soma = %d\n”,soma); }

Tema 1

| Introdução à arquitetura de computadores

COBOL IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. * ENVIRONMENT DIVISION. * DATA DIVISION. * PROCEDURE DIVISION. PARA-1. DISPLAY “Hello, World!!”. * STOP RUN.

FORTRAN $ vi soma.f C Programa para realizar a soma de 3 valores e imprimir o resultado program sum C Declaracao de variaveis integer a, b, c, soma C Atribuicao de valores a = 33 b = 55 c = 34 C Soma das valores soma = a + b + c C Impressao do resultado print*, soma C Final do programa stop end :wq! $

O nível das linguagens de alto nível é representada pela linguagem e pelo compilador, utilizados para facilitar a construção de aplicações por parte do programa.

19

20

Organização e Arquitetura de Computadores

Evolução das Máquinas Multinível • Em 1940: Nesta época as máquinas multiníveis possuíam dois níveis: lógica digital, ou nível, e máquina convencional, e eram de difícil construção e o seu entendimento de máquina não confiável. • Em 1951: Nesta época as máquinas multinível acrescentaram mais um nível, passando a ter três níveis:microprogramação, lógica digital e máquina convencional e seu interpretador era embutido e imutável e hardware com execução de microprograsmas de confiabilidade. • Em 1950: Nesta época foram acrescentados às máquinas multiníveis os montadores e os compiladores. • Em 1960: Nesta época as máquinas multiníveis chegam ao nível de sistema operacional com Sistemas timesharing (tempo compartilhado) e Sistemas batchs ou em lotes. • Em 1970: Nesta década as máquinas multiníveis passam a ter microprogramação e a generalização da interpretação.

Tema 1

| Introdução à arquitetura de computadores

INDICAÇÃO DE LEITURA COMPLEMENTAR TANENBAUM, Andrew S. Organização estruturada de computadores. 3. ed. Rio de Janeiro: Prentice Hall, 2006. Em seu livro explica os níveis de abstração do Hardware com maior detalhamento no Capítulo 1. MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Nesse livro você encontrará mais informações sobre o assunto visto neste conteúdo.

PARA REFLETIR Hardware e software são equivalentes logicamente, ou seja, qualquer operação efetuada pelo software poderá também ser implementada pelo hardware e qualquer instrução poderá ser executada pelo hardware ou ser simulada pelo software. Tente perceber isso em um computador em sua casa ou no laboratório de informática. Sendo assim, coloque um comentário no fórum do AVA sobre essa relação.

21

22

Organização e Arquitetura de Computadores

1.2 Hardware/Software Para darmos início ao tema proposto neste conteúdo temos que, primeiramente, definir o que é software, que são os programas. Já o hardware, nada mais é do que um conjunto de três elementos: circuitos eletrônicos, memória e dispositivos de entrada e saída, ou, também podemos afirmar que hardware é composto por objetos tangíveis, placas, cabos, circuitos eletrônicos, fontes de alimentação e leitora de cartões. Hardware e software são logicamente equivalentes, pois posso embutir qualquer operação executada por software diretor no hardware e vice-versa. É importante destacarmos que também existe o firmware. Esta é uma forma intermediária entre o software e o hardware e consiste no software embutido em dispositivos eletrônicos durante sua fabricação. Notamos a presença de firmware na BIOS, em leitores ou gravadores de CDs e DVD e também em celulares e iPods, etc.

O firmware é o conjunto de instruções operacionais programadas diretamente no hardware de um equipamento eletrônico.

Quando dizemos que qualquer operação de Software pode ser implementada em Hardware, é porque a decisão de se colocar certas funções em hardware e outras em Software baseia-se em alguns fatores como custo, velocidade e confiabilidade. Não existe também uma regra para dizer que X deve ser implementado em Hardware e Y em Software.

Tema 1

| Introdução à arquitetura de computadores

Nos primeiros computadores era bem mais clara a definição em Hardware e Software, pois o Hardware executava algumas tarefas simples como o ADD (somar) e JUMP (saltar para), e tudo mais era programado.

MICROPROGRAMAÇÃO A microprogramação surgiu em 1951, com o nível lógico digital e Isa (circuitos complexos), pelo pesquisador Maurice WilKes, da Universidade de Cambridge, no trabalho intitulado como “the best way to design an automatic calculating machine”, onde ele descreve que as instruções ficaram mais simples, com menos circuitos eletrônicos e em consequência disso menos falha e mais confiabilidade. O Hardware da unidade de controle microprogramada é responsável por buscar, uma a uma, cada micro instrução do micro programa na memória de controle e armazená-las em um registrador próprio. (MIR – REGISTRADOR DE MICROINSTRUÇÃO). Uma das vantagens da microprogramação é a possibilidade de alteração do NÍVEL ISA, escrevendo outro microprograma com a concepção de FAMÍLIA DE PROCESSADORES. Os sinais de controle da CPU codificados na microinstrução que são armazenados na MIR são descodificados pelo hardware da unidade de controle. Com isso, o hardware da unidade de controle microprogramada e responsável por executar microinstruções e aplicar os sinais de controle no caminho de dados da CPU, de acordo com um tempo adequado. Atualmente, muitas das operações programadas no Nível de máquina convencional passaram a ser executadas pelo hardware ou microprogramas como:

23

24

Organização e Arquitetura de Computadores

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

Instruções para multiplicar; Instruções aritméticas; Instruções aritméticas de dupla precisão; Instruções para chamar e retornar procedimentos; Instruções para acelerar laços; Instruções de contagem; Instruções para manipular cadeias de caracteres; Matrizes; Características para permitir que os programas fossem movidos na memória; Relógios para temporizar programas; Sistemas de interrupção; Capacidade de parar um programa e iniciar outro utilizando poucas instruções.

Microprogramação: é o verdadeiro nível de máquina.

Tema 1

| Introdução à arquitetura de computadores

INVENÇÃO DO SISTEMA OPERACIONAL No início os sistemas operacionais eram complexos em suas estruturas, por conta de o sistema operacional não funcionar da mesma forma que um programa, ou seja, com início, meio e fim. Todos os computadores precisam de um sistema operacional. É ele que faz a parte física do computador funcionar, pois temos vários programas com diversas funções como editor de texto, desenho, calcular e muitos outros. Os sistemas operacionais são formados por conjuntos de procedimentos nos quais serviços são oferecidos aos usuários do sistema e as suas aplicações. Os computadores eram operados e gerenciados pelo próprio programador e executava apenas um programa por vez, que era disponível apenas para um usuário. O conjunto de rotina é chamado de Kernel. No Kernel temos algumas funções como o tratamento de interrupções, a criação e eliminação de processos, sincronização, escalonamento, gerenciamento da memória, gerenciamento do sistema de arquivo, as operações de entrada e saída e a contabilização e segurança do sistema. Existia uma grande preocupação no desenvolvimento de um sistema operacional que era o mecanismo de proteção do sistema de acesso aos seus serviços, pois caso uma aplicação tivesse acesso ao núcleo, poderia danificar e o mesmo ficar inoperante. Quando uma aplicação precisa de um serviço do sistema operacional ele realiza uma chamada e suas rotinas através de Systems Calls que são portas de entrada para o núcleo do sistema operacional. Para cada serviço existe um System Call associado e o sistema operacional tem o seu próprio conjunto de chamadas. Os System Calls são divididos em grupos de funções que são o gerenciamento da memória, ge-

25

26

Organização e Arquitetura de Computadores

renciamento de entrada e saída e gerenciamento de processos. Vamos observar no exemplo abaixo como era a execução de um programa em Fortran. O primeiro passo era reservar horário para execução do programa no computador e ir com pacotes de cartões perfurados. O segundo passo era ir ao armário da biblioteca de programas e pegar o maço rotulado “compilador FORTRAN” e inserir no leitor e clicar em START. O terceiro passo era inserir o programa e clicar CONTINUE. O quarto passo tinha como finalidade a execução da tradução. O quinto passo seria executado se não houvesse erro. Assim, caso os erros não acontecessem, o compilador perfurava o cartão com o programa traduzido para linguagem de máquina e o sexto passo era colocar o programa na leitora junto com suas subrotinas.

Cartões Perfurados

Quando o programa estivesse em execução e acontecesse algum erro, o programador teria que mexer na chave de controle e observar como estavam as luzes da console para tentar resolver o problema. Se tudo estivesse ok, pegava o compilador FORTRAN e reiniciava o processo.

Tema 1

| Introdução à arquitetura de computadores

Exemplo de 1 job para o sistema operacional FMS

Contudo, no final da década de 50 foi criado um sistema que automatizava o trabalho do operador que denominamos de sistema operacional. Com o objetivo de facilitar a operação do computador o sistema operacional era mantido todo o tempo no computador, onde os cartões de controle comandavam as instruções do sistema operacional.

27

28

Organização e Arquitetura de Computadores

Os sistemas operacionais evoluíram incorporando algumas instruções do ISA e tratamento de Entrada/ Saída. No ano de 1960 criou-se o Sistema operacional compartilhado com vários usuários. Este ficou conhecido como sistema de tempo compartilhado.

MICROCÓDIGOS A microprogramação se tornou comum em 1970, quando se permitia incluir instruções de máquina via programação. O microcódigo é escrito pelo coordenador do processador durante a fase de projeto. Os microcódigos tem a finalidade do armazenamento de pequenos programas, as microinstruções são realizadas uma a uma, sequenciadas ou escolhidas por um condicionador. Como exemplo temos dois condicionadores: o COND e o ADDR na microinstrução.

Microprogramada genérica

Tema 1

| Introdução à arquitetura de computadores

FUNÇÃO DOS SISTEMAS OPERACIONAIS O sistema operacional tem como função trabalhar de modo cooperativo com funções de administrar os recursos de hardware e auxiliar na execução de programas que o usuário precisa. O sistema operacional pode ser dividido a grosso modo em duas categorias: Programas do sistema são aqueles que gerenciam as operações do computador e os Aplicativos são os que resolvem os problema para o usuário.

FUNÇÕES DO COMPUTADOR O computador tem como função básica a execução de um programa básico, é constituído de um conjunto de instruções que fica armazenado em uma memória. É com o processador que se realiza o trabalho de executar instruções específicas no programa. Na sua forma simples o processador possui duas maneiras para que sejam processadas as instruções. A primeira, era o processo de se ler ou busca na memória, sendo uma de cada vez e a execução de um programa consiste na repetição do processo de busca e execução das instruções, e que cada instrução poderá envolver diversas operações a depender da natureza da instrução. Quando temos uma execução de processamento em uma instrução chamamos de ciclo de instrução. Neste, temos dois passos: o de ciclo de busca e o ciclo de execução. A execução de um programa é encerrada somente se a máquina for desligada, se ocorrer algum erro irrecuperável ou se for executada uma instrução de programa que pare a operação do computador.

29

30

Organização e Arquitetura de Computadores

Sistemas operacionais são programas que controlam os recursos do computador e fornecem a base para o desenvolvimento dos programas e aplicações

INDICAÇÃO DE LEITURA COMPLEMENTAR COUSTAN, Dave; FRANKLIN, Curt. Como funcionam os sistemas operacionais. Disponível em Acessado em 29/09/10. Nesta página da web você encontra mais informações de como funcionam os sistemas operacionais. MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro você terá mais detalhe sobre a história do Hardware/Software, capítulo 6.

PARA REFLETIR O sistema operacional tem como objetivo organizar e controlar o hardware e o software para que os dispositivos funcionem corretamente de maneira flexível e previsível. De acordo com o enunciado acima, verifique em sua máquina quais os hardwares que seu sistema operacional está gerenciando.

Tema 1

| Introdução à arquitetura de computadores

1.3 História da Arquitetura de Computadores Iremos estudar a história da arquitetura de computadores partindo da sua evolução com suas gerações, pois muito do que vamos ver já foi visto na disciplina Introdução à informática. A história do computador começou quando o homem sentiu a necessidade de efetuar cálculos complexos de maneira automática. Um dos primeiros elementos com que o homem contou para realizar seus cálculos foi o conjunto de dedos de suas mãos, daí veio a palavra digital. Todavia, com a evolução da humanidade, houve a necessidade de novas invenções.

O ÁBACO

Shutterstcok / dominique landau

Um antigo instrumento que era utilizado para realizar cálculos formado por uma moldura com bastões dispostos no sentido vertical onde cada posição significava unidades e dezenas. Provavelmente surgiu há mais de 5.000 anos.

No caso do inglês a palavra abacus é utilizada desde antes de 1387 e foi emprestada do latim abacus.

31

32

Organização e Arquitetura de Computadores

BASTÕES DE NAPIER (OSSOS DE NAPIER) Os Batões de Napier foram inventados pelo escocês John Napier (1550-1617). Também conhecidos como os ossos de Napier, estes eram tabelas de multiplicação gravadas em bastão, o que evitava a memorização da tabuada na qual trouxe grande auxílio para o uso de logaritmos, em execução de operações aritméticas. Ossos de Napier

RÉGUA DE CÁLCULO

Shutterstock/Graeme Dawes

A régua de cálculo foi criada por Edmund Gunter (1581-1628), professor de astronomia e matemática. A régua de cálculo é considerada uma evolução dos ossos de Napier (bastões de Napier).

Régua de cálculo

Tema 1

| Introdução à arquitetura de computadores

33

GERAÇÃO ZERO (1642-1945) Essa geração, que podemos também chamar da geração mecânica, foi marcada pela primeira máquina de calcular, criada pelo cientista francês Blaise Pascal (1623-1662), em cuja homenagem deu-se o nome da linguagem de programação Pascal. A máquina de calcular desta época só realizava duas operações matemáticas: a subtração e a soma. Já em 1964 o matemático alemão Gottfried Wilhelm Von Leibnitz (1646-1716) construiu uma outra máquina, mas muito parecida com a de Blaise Pascal, que realizava a subtração, soma, divisão e a multiplicação. Máquina de Blaise Pascal Nada mais aconteceu durante 150 anos da construção da máquina de Leibniz. Mas um professor da universidade de Cambridge, Charles Babbage, inventor do velocímetro, projetou uma máquina de diferenças, que só realizava soma e subtração, mas que servia para calcular tabelas de números para a navegação naval da época, calculando algoritmos simples, com o método das diferenças finitas utilizando polinômios. Um aspecto interessante desta máquina era o seu resultado, Máquina de Leibnitz que era impresso em uma placa de cobre. Apesar da máquina de Babbage funcionar bem ele queria construir uma máquina que executasse mais de um algoritmo, passando a trabalhar em seu novo projeto que se chamava máquina analítica. Esta possuía em seus componentes a memória, unidade de computação, unidade de entrada e unidade de saída. O seu armazenamento consistia em 1000 palavras de 50 dígitos decimais utilizadas para armazenar variáveis e resultados, pois a unidade de computação podia aceitar operandos do armazenamento e retornar o seu resultado ao armazenamento. O grande avanço da máquina analítica era o seu uso geral, pois ela lia instruções dos cartões perfurados e as executavas. Uma vez que a máquina analíti-

34

Organização e Arquitetura de Computadores

Univac: primeiro computador vendido comercialmente

ca era programável numa linguagem de montagem simples, ela precisaria de um software. Então, para produzir o software, Babbage contratou uma jovem chamada Ada Augusta Lovelace. Esta moderna linguagem de programação recebeu o nome de Ada em homenagem à jovem. A máquina analítica possuía muitas engrenagens e mecanismo de tamanha precisão que não era possível construir com a tecnologia da época, pois suas ideias para a época eram bastante avançadas. Outro grande marco ocorreu nos anos 30. Um estudante de engenharia construiu uma série de máquinas de calcular automáticas utilizando relés. O nome dele era Konrad Zuse, que não tinha conhecido o trabalho de Babbage, mas suas máquinas não foram além devido a sua destruição na guerra contra Berlim em 1944. Temos alguns marcos no desenvolvimento do computador digital moderno

8080 da Intel

1834

Máquina analítica

1936

Z1 (primeira máquina calculadora de relés).

1943

COLOSSUS

1946

Mark I

1951

Univac I

1952

IAS

1961

1401 da IBM

1964

360 da IBM.

1970

PDT-11 de DEC

1974

8080 da Intel

1978

VAX da DEC

Tema 1

| Introdução à arquitetura de computadores

35

PRIMEIRA GERAÇÃO (1945 - 1955) Esta geração se caracteriza pela utilização das válvulas e tem como seu primeiro computador o COLOSSUS. Este computador foi criado para se decifrar códigos da máquina ENIGMA, que era utilizada pelos alemães na segunda guerra mundial para passar mensagens cifradas. O COLOSSUS foi o primeiro computador digital eletrônico do mundo e ficou em segredo por mais de 30 anos. Depois do COLOSSUS veio o Eniac (Eletronic Numerical Integrator And Computer), que foi construído com o intuito de calcular tabelas de direção de tiro para o exército americano. O ENIAC possuía 18.000 válvulas e 1.500 relés, era onde se conectava um grande número de cabos e soquetes. Tinha 30 toneladas e consumia 140KW e programado com 6 mil interruptores. Nesta época Jay Forrester criou a memória de núcleos magnéticos. John von Neumann, que tinha participado do projeto do ENIAC, criou a máquina IAS (máquina de Von Neumann). Ele percebeu que o programa poderia ser representado em forma digital na memória do computador com seus dados e observou também que a aritmética decimal utilizada pelo ENIAC era representada por 10 válvulas e que poderia ser substituída por uma aritmética binária paralela. Em 1950 uma pequena empresa surgia na fabricação de máquina de cartões perfurados, a IBM, que também dominou o mercado da época com máquinas científicas. A máquina de Von Neumann possuía cinco partes básicas: a memória, unidade lógicoaritmética, unidade de controle de programa e os equipamentos ENIAC

36

Organização e Arquitetura de Computadores

Máquina original de Von Neumann

de entrada e saída. A memória consistia em 4096 palavras. Cada palavra possuía 40 bits e cada palavra armazenava duas instruções de 20 bits ou um inteiro de 39 bits com sinal. Quase na mesma época em que Von Neumann construía o IAS, pesquisadores do M.I.T também construíam um computador que, ao contrário do IAS o ENIAC e máquinas desse tipo, possuíam comprimentos longos de palavras que visavam ao cálculo numérico pesado.

SEGUNDA GERAÇÃO (1955 - 1965) Esta geração tem como características a utilização dos transistores, que foram inventados por John Bardeen, Walter Brattain e Willian Shockley. Estes foram contemplados com o prêmio Nobel de Física nos anos 50, pois nesta época os computadores a válvulas já estavam obsoletos. O primeiro computador de transitores foi o TX-0 (Transistorized eXperimental computer). Esse modelo era meramente experimental, pois a finalidade era me-

Tema 1

| Introdução à arquitetura de computadores

37

lhorar a fabricação do TX-2. A DEC em 1957 construiu uma máquina parecida com o TX-0 que ficou conhecido como PDP-1, que possuía 4K, palavras de 18 bits e um tempo de ciclo de 5 microssegundos, que esse era a metade de desempenho do IBM 7090. Um ponto muito importante da DEC foi a criação do PDP-8, que era uma máquina de 12 bits, mas muito mais barata que a versão anterior e que possuía um barramento único. Barramento é um conjunto de fios paralelos utilizados para conectar os componentes de um O omnibus (barramento único) do PDP-8 computador. A IBM construiu uma versão transitorizada: o IBM 709 e o IBM 7090 e, nos anos seguintes, o 7094 que possuía um tempo de ciclo de 2 microssegundos e 32K palavras de 36 bits de memória de núcleo e, com isso, marcou o fim das máquinas do tipo ENIAC.

Cronologia da segunda geração 1960

criação do PDP-1 da DEc

1961

1401 da IBM

1962

7094 da IBM

1963

B500 da Burroughs

1964

IBM 360

1964

6600 da CDC, primeiro computador com amplo uso de paralelismo internamente

38

Organização e Arquitetura de Computadores

TERCEIRA GERAÇÃO (1965 - 1980) Esta geração é conhecida como a geração dos circuitos integrados, a qual possibilitou a colocação de vários transistores em uma única pastilha e com isso passou-se à fabricação de computadores cada vez menores. A IBM lançou a série de computadores System 32, que era baseada em circuitos integrados e projetados tanto para computação científica como para o comercial. Este computador tinha várias inovações como uma mesma linguagem de montagem, com tamanho e potência crescentes e, com isso, os clientes já poderiam trocar seus modelos como o 1401 pelo 360, modelo 30 e seu 7094 por um 360 modelo 75. O 360 modelo 75 era um computador maior e mais rápido.

Circuito Integrado

Uma das inovações desta geração foi a multiprogramação que utilizava vários programas na memória do computador. O modelo 360, que poderia emular, ou seja, poderia simular outro computador, também resolveu o dilema do binário-paralelo

Tema 1

| Introdução à arquitetura de computadores

versus decimal serial. O 360 possuía um sistema operacional OS/360 e sua memória principal era orientada a byte, ou seja, cada célula de MP que armazena 8 bits de informação, independente do tamanho de bits definido para a palavra de dados.

INDICAÇÃO DE LEITURA COMPLEMENTAR MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro você terá mais detalhe sobre as gerações dos computadores no capítulo 1. ALVES, Carlos Antonio. Introdução aos microprocessadores e microcomputadores. Disponível em: Acessado em 29/09/10. Neste site você terá condições de verificar de forma reduzida as gerações de computadores.

PARA REFLETIR As gerações de computadores foram importantes para diferenciar a sua evolução desde as máquinas analíticas até os super computadores atuais. Então, observe os computadores em sua volta e tente detectar em que geração eles estariam.

39

40

Organização e Arquitetura de Computadores

1.4 História da Arquitetura de Computadores (4ª Geração – 1980, a Família Intel e a Família Motorola). Iremos estudar a 4º geração e as famílias de computadores Intel e Motorola como grande marco para a história dos computadores.

QUARTA GERAÇÃO (1980 – )

Intel 8080

Essa geração e conhecida como a geração dos computadores pessoais e VLSI (integração em larga escala, onde se tornou possível colocar várias dezenas de milhares de transistores em uma única pastilha). Nesta década os computadores ficaram menores e com preços mais acessíveis e com isso deu-se início à era do computador pessoal. Os computadores pessoais vinham em kits que possuíam um processador. Nestes kits não vinha nenhum software. Caso fosse necessário o próprio usuário teria que escrevê-lo. Os computadores pessoais eram utilizados diferentemente dos grandes computadores, pois eles eram utilizados para processamento de texto, planilhas e várias outras aplicações altamente interativas que os grande computadores não realizavam. Os computadores podem ser divididos em cinco categorias que se sobrepõem. Tais categorias são determinadas pelo tamanho físico, pelo desempenho e pela área de aplicação. Na categoria mais baixa temos os computadores pessoais, máquinas de mesa com apenas uma pastilha de processador, dedicados para um único usuário.

Tema 1

| Introdução à arquitetura de computadores

A Apple e o Apple II foram dois outros computadores pessoais criados na década de 80. Estes computadores foram projetados por Steve Jobs e Steve Wozniak, fundadores da Apple. O supermini era essencialmente um minicomputador muito grande, quase sempre se baseando em processador de 32 bits, geralmente equipado com vários megabytes de memória. Os superminis se diferenciavam dos mainframes pela capacidade de entrada e saída e nas aplicações para quais eram usados, pois um supermini tinha apenas um ou dois discos de 1 gigabyte, já o mainframe poderia ter 100 deles. Os Computadores inicialmente vinham com o sistema operacional MS-DOS, fornecido pela Microsoft, que já estava trabalhando para um novo sistema operacional que viesse com interface gráfica. A Microsoft criou o Windows, que rodava em cima do DOS.

41

Apple I

O Mainframe, o mais poderoso computador do mundo, quando foi lançado pela IBM.

Nesta época começou a surgir novos computadores com tecnologia RISC (computador com um conjunto reduzido de instruções).

DOS e Windows 3.1

42

Organização e Arquitetura de Computadores

A FAMÍLIA INTEL

8088

80286

A Intel foi criada em 1968 para a fabricação de pastilhas de memória. Nesta época a Intel era contactada por fabricantes de calculadoras para que produzisse uma pastilha para suas calculadoras, bem como por fabricantes de terminais, pois os mesmos queriam que seus controles estivessem em uma única pastilha, criando assim as pastilhas 4004 de 4 bits e a 8008 com 8 bits, sendo estas as primeiras CPUs numa única pastilha do mundo. A partir dessas criações houve um interesse muito grande por pastilhas de memória, então a INTEL começou a desenvolver uma pastilha que superasse o limite de 16K de memória do 8008, o que resultou na criação do 8080, uma CPU de uso geral. Em 1976 foram lançados pela INTEL mais dois modelos: o 8085 e o 8080, que tinham encapsulamento extra de entrada e saída. Depois dos dois modelos surgiu o 8086, que era uma verdadeira CPU de 16 bits em uma única pastilha de memória. Ele foi projetado para ter uma semelhança com seu antecessor, mas que não era completamente compatível com seu antecessor. Em seguida veio o modelo 8088, que tinha sua arquitetura igual ao 8086 e que executava os mesmos programas, porém possuía um barramento de 8 bits ao invés de 16bits, tornando-o mais lento. Mesmo assim a IBM tornou o 8088 como o IBM-PC original e rapidamente virou o padrão da indústria de computadores pessoais. Os modelos 80186 e o 80188 foram

Tema 1

| Introdução à arquitetura de computadores

os substitutos dos modelos 8086 e 8088. Esses modelos nunca foram amplamente utilizados. Os modelos 8086 e 8088 não podiam endereçar mais de 1 megabyte de memória, o que nos anos 80 tornou-se um problema. Sendo assim, a INTEL projetou o modelo 80286, que era uma versão compatível com o 8086, mas superior a ela. As instruções eram iguais aos modelos 8086 e 8088, mas sua memória era organizada de maneira muito diferente. Esta versão foi utilizada no IBM PC/AT e em seus modelos intermediários. O próximo passo da INTEL era criar uma CPU que verdadeiramente tivesse 32 bits. O 80386 e o 80286 eram compatíveis com os modelos anteriores. O modelo 80386SX era uma versão especial, pois foi projetada para ser compatível com o soquete do 80286 para prover um melhoramento parcial às máquinas 80286 existentes. A versão 80486, mais recente que o 80386, era superior, mas compatível com o 80386. Sua principal diferença era a presença de um co-processador de ponto flutuante, um controlador de memória e uma memória cache de 8K na pastilha. O 80846 era de duas a quatro vezes mais rápido que os 80386. A empresa INTEL, através de sua família de processadores, representa a evolução de computadores, pois em uma década a empresa saiu de uma CPU de 4 bits para uma CPU de 32 bits com ganho de desempenho superior a 1000 bits. Os computadores foram constituídos com as pastilhas da série INTEL, bem como o Sistema Operacional MS-DOS que na época era executado através desses processadores.

43

44

Organização e Arquitetura de Computadores

Principais momentos da evolução da família INTEL

1 Ou seja, reprojetado.

1971

Modelo 4004 (primeiro microprocessador em uma pastilha)

1972

Modelo 8008 (primeiro microprocessador de 8 bits)

1974

Modelo 8080 (primeira CPU de uso geral em uma pastilha)

1974

Modelo 8085 (8080 reencapsulado1)

1978

Modelo 8086 (primeira CPU de 16 bits em uma pastilha).

1980

Modelo 8088 (processador utilizado no IBM-PC)

1982

Modelo 80186 (suporte de entrada e saída em uma pastilha)

1982

Modelo 80286 (endereçamento aumentado para 16 megabytes)

1985

Modelo 80386 (CPU de 32 bits em uma pastilha)

1988

Modelo 80386SX (80386 com barramento de 80286)

1989

Modelo 80486 (versão mais rápida do 80386

1992

Pentium (versão melhorada do 80486)

1995

Pentium PRO ( Versão com cache nível 2)

Tema 1

| Introdução à arquitetura de computadores

A FAMÍLIA MOTOROLA A Motorola, uma fábrica de semicondutores e rival da INTEL, lançou sua versão 6800, que era uma máquina de 8 bits comparável ao 8080 da INTEL. Ela foi muito bem recebida pelas empresas onde era utilizada como controlador embutido em equipamentos industriais. Em 1979 a Motorola lançou uma pastilha 68000 totalmente diferente e compatível com o 6800 e com o 6809. Ela tinha como ideia ganhar do modelo 8086, pelo qual ganharia a atenção dos engenheiros. O 68000 na verdade foi uma grande mudança em relação ao passado, pois buscava na memória 16 bits de cada vez e seus registradores eram vistos pelo programador com 32 bits. O 68000 foi utilizado pela ATARI, MACINTOSH E AMIGA devido a sua ruptura limpa e seu comprimento de palavra de 32 bits, a qual fez muito sucesso e deu início à sequência de pastilhas Motorola 680X0. A 68008 foi a segunda pastilha da família Motorola. Ela tinha um barramento de dados de 8 bits. A UNIX começou a implementar seu sistema operacional no 68008, já o modelo 68012 possuía pinos de endereçamento de forma que poderia endereçar 2 gigabytes de memória ao invés de 16 megabytes. Os dois modelos, porém, foram eliminados com o surgimento do modelo 68020. Com uma pastilha de 32 bits, com um barramento também de 32 bits e instruções de multiplicação e divisão de 32 bits esse modelo foi um sucesso em estações de trabalho científico e na engenharia. O 68030 foi o substituto do 68020 e possuía uma unidade de gerenciamento de memória na pastilha. O modelo de pastilha 68040 contém uma CPU, co-processador de pontoflutuante, uma unidade de gerenciamento de memória e cache na mesma pastilha. 68000

45

46

Organização e Arquitetura de Computadores

INDICAÇÃO DE LEITURA COMPLEMENTAR MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro você terá mais detalhe sobre a história do Hardware/Software capítulo 1. WORLDLINGO. Família de Motorola 68000. Disponível em Acessado em 29/09/10. Neste site você encontra informações sobre a família de processadores 68000 da Motorola.

PARA REFLETIR A INTEL realmente é um marco na construção de pastilhas. Então, para que possamos refletir, veja em seu computador qual o processador que ele está usando e faça um breve comentário sobre o funcionamento dele com seu professor e publique no AVA.

Tema 1

| Introdução à arquitetura de computadores

RESUMO Você aprendeu neste primeiro tema sobre a introdução à arquitetura de computadores, com ênfase em níveis de abstração do hardware. Já na segunda parte você começou a aumentar seu conhecimento apreendendo sobre hardware e software, um pouco de microprogramação, bem como a invenção do sistema operacional e sobre os microcódigos. Na terceira etapa conhecemos a história da arquitetura de computadores, colocando os pontos mais importante. Na quarta etapa demos continuidade à história da arquitetura, mas já na última geração, quando começamos a abordar sobre a família de processadores Intel e Motorola.

47

2

Organização dos Sistemas de Computação

Este tema consiste em você estudar mais a fundo o funcionamento e a estrutura dos processadores, a estrutura RISC X CISC, as arquiteturas paralelas e o paralelismo de instruções e sobre a memória.

50

Organização e Arquitetura de Computadores

2.1 Processadores Vimos no tema anterior diversos processadores da família INTEL e da MOTOROLA, pois a evolução dos computadores passa pela evolução dos processadores, já que ele é considerado como o cérebro do computador. A figura abaixo mostra uma organização simples do processador orientado a barramento (CPU).

Organização de um computador com 1 CPU e 2 i/o

A unidade central de processamento, que chamamos de CPU, é o cérebro do computador e tem como função executar programas armazenados na memória principal, buscando suas instruções e examinado-as, executando uma após a outra. O processador é um componente que é vital para um sistema operacional, pois ele não apenas realiza o processamento, ele também controla todo o funcionamento do sistema que chamamos de instrução. O processador tem que ser capaz de realizar inúmeras operações, tais como somar, subtrair, dividir, multiplicar, ser capaz de modificar um dado de um lado para o outro no armazenamento e transferir valores para um dispositivo de saída. As atividade realizadas pela CPU podem ser dividas em duas grandes categorias: a de processamento e a de função de controle.

Tema 2 | Organização dos Sistemas de Computação

A CPU é composta de várias pastas como a Unidade de Controle (UC), pois é responsável pela busca de instruções na memória principal e pela determinação do tipo de cada instrução. Ela envia ordens de cálculo para a Unidade Lógica Aritmética (ULA), que indica os valores a processar e os coloca nos registradores, depois os valores são transferidos para outras partes que constituem o computador.

Componentes do computador

A Unidade Lógica e Aritmética (ULA) é a responsável por fazer operações tais como adições e booleano, que são necessárias para a execução das instruções. Sua função é a efetiva execução das instruções. A unidade lógica trata-se de um aglomerado de circuitos lógicos e componentes eletrônicos que integrados realizam as operações aritméticas e lógicas (soma, subtração, multiplicação, divisão, AND, OR). Já os registradores são pequenas memórias de alta velocidade que são usadas para armazenar resultados temporários e certas informações de controle e, por estarem situadas dentro do processador, os registradores podem ser lidos e escritos a uma velocidade bastante alta e servem também como memória auxiliar para UNIDADE LÓGICA E ARITMÉTICA.

51

52

Organização e Arquitetura de Computadores

O registrador mais importante é o Program Counter (PC), que aponta para a próxima instrução a ser buscada da memória para ser executada no processador. O nome contador de programa é um tanto enganador porque ele não tem nada a ver com a contagem de alguma coisa, mas é o termo universalmente usado. Outro registrador importante é o Registrador de Instruções (IR) que armazena instruções que estão sendo executadas. Os registradores especiais de estado auxiliam e complementam a realização de operações matemáticas indicando a ULA, indicando o seu estado de vários elementos referentes à operação em si. Essa operação é denominada por alguns fabricantes como sendo PSW (Palavra de estado do sistema). No projeto de um processador outros registradores podem ser incluídos, sejam eles de propósitos específico ou geral. O barramento é um conjunto de fios paralelos que permitem a transmissão de dados, endereços, sinais de controle e instruções, que pode ser interno ou externo ao processador.

Barramento

Tema 2 | Organização dos Sistemas de Computação

A instrução registrador-memória permite que uma palavra de memória (são unidades de dados movidas entre a memória e os registradores) seja armazenada no registrador e vice-versa. Já a instrução registrador-registrador opera sobre dois registradores e coloca a saída em outro registrador e a instrução memória-memória opera as instruções aritméticas que usam três operando e todos os operandos podem estar na memória. O acumulador (registrador de dados especiais) armazena um resultado de entrada ou de saída na execução de várias instruções. Grupo de instruções: • • • • • • •

Instruções aritméticas – ADD, SUBTACT, COMPARE; Instruções Lógicas – AND, OR, NOT; Instruções de transferências de dados – LOAD, STORE; Instruções de desvio – BRANCK IF POSITIVE; Instruções de chamada de subrotina – CALL; Instruções de retorno – RET; Instruções diversas – PUSH, WAIT, HALY.

Tipos de categorias de instruções: • • •

registrador – memória; registrador – registrador; memória-memória.

EXECUÇÃO DE INSTRUÇÕES Para que um programa possa ser executado por um computador, ele deve ser constituído de várias instruções de máquina e estar armazenado em células na memória principal. A unidade central de

53

54

Organização e Arquitetura de Computadores

processamento que chamamos de UCP é que tem a responsabilidade de executar as instruções que estão na memória do computador. A CPU executa a instrução em uma série de pequenos passos. 1. Busca a próxima instrução na memória para o registradores de instruções (IR). 2. Atualiza o contador de programa para que ele aponte para a instrução seguinte. 3. Determina o tipo de instrução. 4. Determina os endereços dos dados, se a instrução usa dados da memória. 5. Busca dados na memória, caso seja necessário. 6. Executa a instrução. 7. Armazena os resultados em locais apropriados. 8. Volta ao passo um para nova execução da próxima instrução. Essa sequência que vimos acima é referida como “BUSCA-DECODIFICA-EXECUTA”. Ela é o centro da operação de todos os computadores. Exemplo de uma Execução de Instruções: PROGRAMA: • PRESSIONE A LETRA B DO TECLADO; • ARMAZENE A LETRA B NA MEMÓRIA; • IMPRIMA A LETRA B NA TELA DO MONITOR DE VÍDEO.

Tema 2 | Organização dos Sistemas de Computação

INSTRUÇÕES: • ENTRE COM OS DADOS NA PORTA 1 DE ENTRADA; • ARMAZENE OS DADOS DA PORTA 1 NA POSIÇÃO DE MEMÓRIA 200; • SAIA COM OS DADOS PARA A PORTA 10 DE SAÍDA.

Exemplo de uma execução de instruções

Um conjunto de instruções disponível ao programador em um nível é chamado de conjunto de instruções daquele nível. Em um conjunto de instrução, o número de instruções varia de máquina para máquina e de nível para nível. No nível de máquina convencional o tamanho do conjunto de instruções era tipicamente entre as faixas de 20 a 300. Pois um conjunto numeroso de instruções não é necessariamente melhor que um pequeno. De fato o oposto tende a ser verdade. Quando temos um conjunto de instruções numerosas, muitas das vezes as instruções não são gerais. Um fabricante de processador precisa, antes de produzir um chip, definir qual linguagem ele irá utilizar e quais instruções seu processador irá executar.

55

56

Organização e Arquitetura de Computadores

Algumas das vantagens de utilizar um interpretador: • É mais fácil corrigir erros de implementação; • É mais fácil incorporar novas instruções em um programa; • O desenvolvimento, realização de teste e geração de documentação de um programa lógico é mais simples. Algumas desvantagens de utilizar um interpretador: • A execução do programa é mais lenta; • O código original sempre será lido quando for executado; • A estrutura de dados simples; • Sempre é necessário o fornecimento do programa fonte para o utilizador. Para que possamos ter um processador com um potencial de utilização, temos que analisar alguns itens: 1. O clock tem que ter sua velocidade em pulsos por segundos com um valor alto. Quando temos um processador com um clock alto o aquecimento é maior. 2. Quantidade de registradores, ou seja, quanto mais registradores melhor. 3. Velocidade do barramento. 4. Quantidade de memória cache. 5. Quanto ao Bits, se ele é de 32 ou 64, pois os de 32 são capazes de endereçar 2 ao elevado de 32, ou seja 4 gb, já os de 64 bits passam para 16 gb. Quanto mais o processador puder endereçar melhor.

Tema 2 | Organização dos Sistemas de Computação

INDICAÇÃO DE LEITURA COMPLEMENTAR MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Nesse livro, no capítulo 06, você poderá ler mais informações sobre o funcionamento do Processador. TANENBAUM, Andrew S., Organização estruturada de computadores. 5. ed. Rio de Janeiro: Prentice Hall, 2006. Este livro, no capítulo 02, possibilita um estudo mais amplo das memórias virtuais.

PARA REFLETIR A unidade de controle é responsável pela busca de instruções da memória principal e determinação dos seus tipos. Faça um comentário com seus colegas no AVA sobre o funcionamento da unidade de controle.

57

58

Organização e Arquitetura de Computadores

2.2 Arquitetura Risc X Cisc A evolução da tecnologia de semicondutores, que levou a indústria a criar processadores mais velozes, proporcionou o surgimento de diversos estudos sobre arquitetura de computadores, com início na década de 80. Esses estudos foram os precursores de um novo tipo de arquitetura que se denominou RISC. RISC vem da abreviatura de Reduced Instruction Set Computer em contraste com as máquinas CISC que são Complex Instruction Set Computer. Praticamente todos os microcomputadores lançados no mercado, desde os processadores de 8 bits até os de 32 bits tiveram sua arquitetura com característica CISC, ou seja, uma grande quantidade de instruções com variedades de modos de endereçamento, poucos registradores de dados na UCP e processamento controlado por microprograma. Com o aparecimento das estações de trabalho SPARC, na década de 80 pela Sun Microsystems, dos EUA, a arquitetura RISC tornou-se de interesse para grandes empresas de computador. A partir de 1992, a IBM também passou a apostar na arquitetura RISC com o lançamento das estações de trabalho Alpha, a MIPS é uma companhia que se especializou em estações de trabalho com arquitetura RISC. A arquitetura RISC teve início por três caminhos. 1. Um projeto da IBM, que foi desenvolvido na década de 70, resultou na criação de uma máquina de baixo desempenho e que não teve valorização comercial. A IBM só veio a ter um respaldo comercial nesta área no ano de 1990 com a família de processadores RS/6000 e com a família POWER PC em parceria com a Motorola e a Apple.

Tema 2 | Organização dos Sistemas de Computação

2. Alguns estudos na Universidade Stanford, Califórnia, por John Hennessy. 3. Estudos na Universidade de Berkeley, Califórnia, por David Patterson. Nos anos 80 foram realizados vários estudos para verificar o comportamento das instruções de máquina em relação ao seu desempenho dos sistemas na execução de programas escritos em linguagem de alto nível. As linguagens de alto nível possuíam comandos poderosos, que foram criados para facilitar a vida dos programadores mais do que o desempenho dos computadores, ou seja, facilitando o processamento pelo hardware. Era uma das grandes vantagens que os programadores tinham em desenvolver programas complexos com menor esforço, tendo em vista os comandos disponíveis na linguagem, pois as instruções de máquinas eram primitivas, já que realizavam tarefas simples e diretas. O gap semântico é a separação acentuada entre as operações em linguagem de alto nível e em linguagem de máquina. Para reduzir o gap semântico os arquitetos de processadores imaginaram algumas soluções: •

Aumentar a quantidade de instruções de máquina e aperfeiçoar algumas delas para atender aos requisitos de processamento de um comando, tornando mais complicada;



Incluir mais modos de endereçamento em um conjunto de instruções;



A utilização da microprogramação para realização de certas operações por firmware.

59

60

Organização e Arquitetura de Computadores

CISC x RISC

Tema 2 | Organização dos Sistemas de Computação

61

62

Organização e Arquitetura de Computadores

Depois de alguns estudos, a IBM desenvolveu uma arquitetura de sistema de computação que contemplava conclusões, com o propósito de reduzir o “gap semântico” entre as linguagens de programação.

CARACTERÍSTICAS DAS ARQUITETURAS RISC •

Menor quantidade de instruções e tamanho fixo, o INTEL 80486 foi lançado com 147 instruções de máquina. Hoje, os atuais Pentium possuem mais de 200 instruções.



Execução otimizada de chamada de funções. Umas das características que a distingue da arquitetura CISC é o modo de realizar chamadas de rotinas e passagem de parâmetros.



Menor quantidade de endereçamento. As máquinas RISC buscam por soluções mais simples, o que conduziu à criação de um modo geral de apenas dois tipos de instruções: a LOAD e a STORE, para terem acesso à memória utilizando-se apenas o modo direto.



Modo de execução com Pipelining (é uma técnica usada em microprocessadores, onde uma segunda instrução é realizada antes da primeira instrução), uso altamente produtivo, obtido em face do formato simples e único das instruções de máquina.

As máquinas com arquitetura RISC podem diferir da arquitetura CISC em oito formas críticas, como listado abaixo. RISC – instruções simples levando 1 ciclo.

Tema 2 | Organização dos Sistemas de Computação

CISC – instruções complexas levando múltiplos ciclos. RISC – Apenas LOADs/STOREs referênciam na memória. CISC – Qualquer instrução pode referênciar a memória. RISC – Altamente pipelined. CISC – Não tem pipeline, ou tem pouco. RISC – Instruções executadas pelo hardware. CISC – Instruções interpretadas pelo microprograma. RISC – Instruções com formatos fixos. CISC – Instruções com vários formatos. RISC – Poucas instruções e modos. CISC – Muitas instruções e modos. RISC – A complexidade está no compilador. CISC – A complexidade está no microprograma. RISC – Múltiplos conjuntos de registradores. CISC – Conjunto único de registradores.

NENHUM MICROCÓDIGO Em uma máquina com arquitetura RISC, suas instruções são geradas pelo compilador diretamente no hardware, ou seja, não são interpretadas por microcódigos. Sendo assim, elimina esse nível de interpretação, sendo este o segredo da velocidade nas máquinas com arquiteturas RISC. Uma vantagem da implementação da arquitetura CISC é a economia em um pouco de memória.

INSTRUÇÕES REDUZIDAS Neste ponto as máquinas RISC foram nomeadas, pois não existe nenhuma objeção em relação a ter várias instruções, sendo que cada uma seja executada em ciclo. Neste caso existe um problema, que é a complexidade dos blocos decodificador, que crescem com o número de instruções e, sendo assim, consomem uma quantidade da área da pastilha.

63

64

Organização e Arquitetura de Computadores

Os modos de endereçamento são diferentes por razões da velocidade e da sua complexidade, pois não é desejado ter mais de um número mínimo de modos de endereçamentos.

MEDIDAS DE DESEMPENHO Existem no mercado vários métodos de se medir e divulgar o desempenho de processadores e sistemas de computação, bem como as unidades de medidas decorrentes. Umas das unidades de medidas mais conhecida é o MIPS (milhões de instruções por segundo). Contudo, o MIPS não é uma boa unidade de medida de comparação entre a arquitetura RISC e a arquitetura CISC devido ao princípio conceitual de ambas as arquiteturas. O MFLOPS (milhões de operações de ponto flutuante por segundo) é uma unidade que é mais apropriada para medir velocidade com cálculos matemáticos pelo processador. Os MFLOPS são os que mais interessam aos pesquisadores e cientistas. Atualmente os MFLOPS vêm sendo empregados para medir o desempenho de máquinas RISC a unidade SPECmark, denominada assim devido à sigla do comitê que a criou.

OBSERVAÇÕES RISC X CISC Existem inúmeras máquinas com a arquitetura RISC, e uma grande quantidade daqueles que relacionam diversas desvantagens desses processadores em prol da arquitetura CISC.

Tema 2 | Organização dos Sistemas de Computação

O VAX foi projetado como um exemplo perfeito da arquitetura CISC

O desempenho entre RISC x CISC geralmente são medidos pelos seus vendedores através de programas de testes chamados “benchmarks”.

Máquinas com arquitetura RISC

Os defensores da arquitetura CISC alegam ter mais rapidez quando executam os programas escritos em linguagem de alto nível devido à pouca quantidade de códigos binários executáveis. As máquinas RISC tendem a executar instruções mais rapidamente devido as instruções possuírem Códigos de operações com menor quantidade de bits, tendo como consequência um tempo de decodificação menor. Outro ponto é que as instruções são executadas diretamente pelo hardware e não por microprogramas. Os processadores RISC são otimizados em operações de uma única tarefa devido ao grande número de registradores que possuem e a grande quantidade de pipelining.

65

66

Organização e Arquitetura de Computadores

SISTEMAS COMERCIAIS RISC Há no mercado diversos sistemas com a arquitetura RISC, e suas aplicações estão crescendo com o passar do tempo, com grande interesse na área das estações de trabalho e servidores de redes locais. Entre alguns sistemas que existem podemos citar: SPARC, RS/6000, ALPHA e o POWER -PC.

PROCESSADORES SPARC Vamos estudar um pouco sobre a arquitetura dos processadores SPARC, sigla que vem do inglês Scalable Processor Architecture, que a empresa SUN denominou de unidade de inteiro (IU), na unidade de ponto flutuante (FPU), no coprocessador (CP), em um gerenciador de memória de (MmU) e em uma memória cache, além do barramento interno, que interliga os diferentes dispositivos e barramentos do sistemas para ligar com a memória principal externa e periféricos.

Diagrama de bloco da arquitetura SPARC

Tema 2 | Organização dos Sistemas de Computação

Os processadores SPARC compartilham um mesmo conjunto de instruções e um espaço linear de memória. O SPARC tem em sua arquitetura do tipo LOAD/STORE, ou seja, as operações restantes, executadas nos registradores. Os processadores SPARC em sua maioria são constituídos por mais de uma pastilha, sendo uma para UCP, uma para UI, uma para FPU, uma para MmU e outra para memória cache.

INDICAÇÃO DE LEITURA COMPLEMENTAR MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro, no capítulo 11, você vai pode conhecer mais detalhadamente os processadores e sua estrutura. TANENBAUM, Andrew S. Organização estruturada de computadores. 5. ed. Rio de Janeiro: Prentice Hall, 2006. Neste livro, no capítulo 2, você vai pode conhecer mais sobre RISC e CISC.

PARA REFLETIR Os processadores com arquitetura RISC são realmente melhores que os processadores com arquitetura CISC? Com essa pergunta procure na internet ou nas literaturas a diferença entre as arquiteturas e poste no AVA o seu comentário.

67

68

Organização e Arquitetura de Computadores

2.3 Arquiteturas Paralelas A estrutura tradicional de um computador com uma única CPU que envia requisições sequenciais através do barramento para memória a qual responde uma requisição por vez ficou conhecida como GARGALO DE VON NEUMANN. As tentativas de se quebrar o gargalo de Von Neumann começam assumindo que um computador consiste em algum número de unidades de controle: a Unidade Lógico-Aritmética (ULA) e módulos de memória, que podem operar em paralelo. Essas tentativas divergem quanto a unidades existentes, como elas são e como elas estão conectadas.

VISÃO GERAL DOS COMPUTADORES PARALELOS Existem três questões que são fundamentais para que possamos nos aproximar de novos sistemas de computação paralelos. A primeira é descrever a natureza, tamanho e número de elementos do processador, a segunda é descrever a natureza, tamanho e número de módulos de memória e a terceira é descrever a estratégia de interconexão entre processadores e memórias.

Tema 2 | Organização dos Sistemas de Computação

Os elementos dos processadores podem variar de mínimas ULAs até CPUs completas, cujos tamanhos vão desde uma pequena porção de uma pastilha a vários metros cúbicos de circuitos por elemento. Um computador pode se equipar então de vários elementos de processador. Quando temos um elemento processador, somente é possível construir sistemas contendo cerca de 1000 CPUs. Os sistemas de memória são divididos com frequência em módulos que podem ser operados independentemente um do outro e em paralelo. Em uma das suas extremidades estão os sistemas com milhares de elementos processadores, cada qual com sua memória e no outro estão os sistemas que consistem em alguns módulos. Um dos fatores críticos do elemento de processador é a velocidade relativa da memória. Porém, se a memória é relativamente lenta, os processadores terão que esperar as requisições de memória. Neste caso, se a memória é rápida, o pipeline poderá ser dispensado. Temos dois esquemas de interconexão que são os estáticos e os dinâmicos, onde as interconexões estáticas podem ligar os componentes de forma fixa, tal como estrela, anel ou grade, enquanto que no esquema de interconexão dinâmico as suas partes são ligadas a uma rede de interconexão que pode dinamicamente rotear mensagens entre componentes. Alguns computadores em paralelos têm condições de realizar tarefas independentes um do outro e simultaneamente. O paralelismo de granularidade grossa é a execução de grandes porções de software em paralelo e com pouca ou nenhuma comunicação entre elas. O extremo oposto do paralelismo de granularidade grossa é chamado de paralelismo de granularidade fina.

69

70

Organização e Arquitetura de Computadores

As CPUs que são chamadas de fracamente acopladas são aquelas que seus sistemas possuem um número pequeno de CPUs grandes e independentes, que suas conexões são de baixa velocidade entre as CPUs. O oposto aos fracamente acoplados são chamados de fortemente acoplados, onde seus componentes são geralmente pequenos, muito próximos e frequentemente se interagem através de redes de comunicação de altíssima velocidade. Algumas vezes os sistemas com problemas de paralelismo com granularidade grossa funciona melhor do que o sistema fracamente acoplado, já o problema de paralelismo com granuralidade fina funciona melhor em sistemas fortemente acoplados. Inúmeros pesquisadores têm tentado produzir um esquema de classificação e taxonomia para computação paralela, mas sem êxito. Com isso, o único esquema é o Flynn, que é muito utilizado. O FLYNN se baseia em dois conceitos, que são fluxo de instruções e fluxo de dados, onde o fluxo de instruções corresponde a um contador de programa e o fluxo de dados consiste em um conjunto de operadores. Em certo ponto os dois fluxos são independentes e, sendo assim, existem quatro combinações conforme abaixo. Fluxo de instruções

Fluxo de dados

Nome

Exemplo

1

1

SISD

Máquinas Von Neumann clássicas

1

múltiplos

SIMD

Supercomputadores vetoriais

múltiplos

1

MISD

Questionável, nenhum

múltiplos

múltiplos

MIMD

Multiprocessadores

Tema 2 | Organização dos Sistemas de Computação

Precisamos agora analisar as combinações e vamos começar com SISD, que nada mais é do que o computador de Von Neumann. Ele por vez possui um fluxo de instruções, um fluxo de dados e realiza uma operação de cada vez. Já as máquinas SIMD possuem uma única unidade de controle que executa uma instrução de cada vez, porém, ela possui múltiplas ALUs para executar esta instrução em múltiplos conjuntos de dados simultaneamente. O SIMD tem como protótipo o ILLIAC IV. As máquinas MISD são de uma categoria com múltiplos fluxos de instruções operando na mesma porção de dados. Temos também a MIMD, que são múltiplas CPUs independentes operando como parte de um sistema maior. A maioria dos processadores paralelo caem nesta categoria. A categoria MIMD foi dividida em máquinas que possuem a memória principal compartilhada, que chamamos de multiprocessadores, e as que não possuem são chamadas de multicomputadores, computadores de memória privada ou computadores com memória disjunta.

Modelo Computacional SIMD

71

72

Organização e Arquitetura de Computadores

Modelo Computacional MISD

Modelo Computacional MIMD

Tema 2 | Organização dos Sistemas de Computação

Temos como exemplo três situações diferentes da simulação compartilhada em computadores disjuntos. Primeiro o Kai Li de 1988, que sugere um único espaço virtual páginado abrangendo todos os processos que trabalham juntos. O segundo é o Linda, um modelo de programação baseada em um espaço abstrato de tuplas, onde cada tupla contém um ou mais itens de dados, como um registro em pascal. O terceiro e último é Orca, que é uma linguagem que permite aos programadores definir objetos abstratos em conjunto com as operações com esses objetos.

COMPUTADORES MIMD COM MEMÓRIA DISJUNTA O nosso primeiro sistema paralelo consiste em computadores com CPU que tem sua própria memória local, pois nenhuma memória é fisicamente compartilhada. Sendo assim, toda comunicação é realizada através de passagem de mensagens. Quando precisamos passar estas mensagens são necessários canais de comunicações. Um computador possui em sua estrutura simples uma conexão com outro computador. Embora a computação paralela possa ser feita em uma rede cheia de estações, a medida que a carga aumenta, o barramento satura, então, nenhum dos extremos, interconexão completa ou canal único é inteiramente satisfatório.

73

74

Organização e Arquitetura de Computadores

Topologias de Rede

MULTIPROCESSADORES SIMÉTRICOS Até pouco tempo, a maioria dos computadores pessoais e as estações de trabalho possuíam um único microprocessador. Com a necessidade de se ter um maior desempenho os fabricantes introduziram o sistema SMP, que tem essa denominação porque refere-se à arquitetura de hardware do computador quanto ao funcionamento do sistema operacional que reflete nesta arquitetura.

Tema 2 | Organização dos Sistemas de Computação

O SMP é definido como um sistema de computador independente que possui em suas características a existência de dois ou mais processadores similares. Os processadores compartilham a mesma memória principal com facilidades na entrada e saída dos dados, são conectados entre si através de um barramento ou de um outro tipo de conexão interno. Os processadores compartilham acesso aos dispositivos de entrada e saída através de canais comuns ou por canais distintos que venham a fornecer caminhos para os mesmos dispositivos. Os processadores podem desempenhar as mesmas funções e o sistema é controlado por um sistema operacional integrado que prove uma interação entre processadores e programas em seu nível de tarefa, de arquivos e de dados. O sistema operacional de um SMP efetua um escalonamento de processos sobre todos os processadores. Sendo assim, a arquitetura SMP possui várias vantagens sobre uma arquitetura uniprocessador (um só processador). Vantagens: • No desempenho, um computador com múltiplos processadores possui mais vantagens do que um computador com um processador, pois os de múltiplos processadores podem se organizar de maneira que alguns trabalhos possam ser feitos em paralelo. •

Na disponibilidade, em multiprocessadores, em que os mesmos possuem a capacidade de realizar a mesma tarefa simultaneamente, uma falha em um único processador não causa a parada do sistema, mas compromete o seu desempenho.

75

76

Organização e Arquitetura de Computadores



No crescimento incremental: se houver necessidade o usuário poderá incrementar mais processadores para melhora o seu desempenho.



Na escabilidade: os fabricantes podem oferecer um grande número de produtos com desempenho e custos diferentes, tendo como base o número de processadores.

TRANSPUTERS O transputer é uma máquina RISC que foi projetada especialmente para computadores paralelos construídos a partir de um grande número de transputers arranjados em uma grade retangular. O transputer possui três registradores, ao contrário das máquinas RISC.

INDICAÇÃO DE LEITURA COMPLEMENTAR GALANTE, Guilherme. Computação científica paralela: uma introdução. 2007. Disponível em . No link cursos nesse site você encontrará um texto sobre introdução de computação cientifica paralela. MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro, no capítulo 06, você terá mais informações sobre arquitetura de computadores.

Tema 2 | Organização dos Sistemas de Computação

PARA REFLETIR Os Computadores paralelos podem ser divididos em MIMD e SIMD. Coloque no Ava a diferença entre eles, criando assim um debate sobre o tema.

2.4 Memória Virtual No início da era dos computadores as memórias eram pequenas e muita caras. Um exemplo era o IBM 650, o melhor computador da época (1950), que possuía 2000 palavras de memória. Naquela época os programadores tinham que espremer o máximo possível seus códigos para caber nas pequenas memórias, os programadores na época tinham que dividir os seus programas em vários pedaços. Esse método era chamado de overlays, pois funcionava com a colocação do primeiro pedaço na memória e ele era lido por algum tempo, depois que ele era lido se colocava o outro pedaço e assim por diante. Em 1961 um grupo de pessoas, na Inglaterra, propôs um método para realizar o processo de overlays automaticamente sem que o programador sequer soubesse o que estava acontecendo. Esse método ficou conhecido como memória virtual, que é uma técnica bastante poderosa no gerenciamento da memória, onde a memória principal e secundária são combinadas, oferecendo ao usuário uma impressão de existir uma memória muito maior que a memória principal. O seu conceito está baseado em desvincular o endereçamento feito pelo processo dos endereços físicos da memória principal, pois

77

78

Organização e Arquitetura de Computadores

desta maneira os processos e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível. Na década de 70 a maioria dos computadores já possuía a memória virtual.

Um programa que está no ambiente de memória virtual não faz referência a endereços físicos de memória, mas ao endereço virtual. No momento da execução de uma instrução o endereço virtual é traduzido para o endereço físico para poder ser atendido pela CPU. O mecanismo de tradução do endereço virtual para endereço físico é chamado de mapeamento e o conjunto de endereços virtuais que os processos endereçam são chamados de espaço de endereçamento virtual. A maneira do conjunto de endereços reais é chamado de espaço de endereçamento real.

Tema 2 | Organização dos Sistemas de Computação

Memória virtual

MAPEAMENTO Todo programa quando executado em seu contexto precisa estar no espaço de endereçamento real para poder ser referênciado pelo processador. Sendo assim, deve existir um mecanismo que transforme endereços virtuais em endereços reais, sendo que cada processo tem que ter o mesmo espaço de endereçamento virtual, como se ele possuísse sua própria memória. O mecanismo de tradução fica responsável em manter as tabelas de mapeamento exclusivas para cada processo, relacionando os endereços virtuais do processo a sua posição na memória física.

Processo de mapeamento de parte da memória virtual para uma memória de 4096 palavras - memória virtual

79

80

Organização e Arquitetura de Computadores

Paginação Os pesquisadores tinham a ideia de separar os conceitos de espaço de endereçamento e de posições de memória. A técnica de overlay automático que chamamos de paginação e as porções de programas que são lidos na memória secundária são chamadas de páginas, que em seu espaço virtual tem denominação de páginas virtuais, enquanto que as páginas no seu espaço real são chamadas de páginas reais.

(a) Os primeiros 64 K do espaço de endereços virtuais são divididos em 16 páginas de 4 K cada uma. (b) Memória principal de 32 K dividida em 8 molduras de página, de 4 k cada

Tema 2 | Organização dos Sistemas de Computação

O mapeamento é realizado através de tabelas de páginas, pois cada página do processo possui uma entrada com informações de seu mapeamento. Para que possamos enfatizar melhor, a paginação dá ao programador uma ilusão de uma memória principal grande, contínua e linear com o mesmo tamanho no espaço de endereçamento, quando na verdade a memória principal disponível pode ser menor ou maior que o espaço de endereçamento. A simulação da memória principal grande através da paginação não pode ser detectada pelo programa. Quando quer que um endereço seja referênciado, a instrução ou dado apropriado parece estar presente. Como o programador pode programar como se não existisse paginação, o mecanismo fica conhecido como transparência.

Paginação POR DEMANDA (DEMAND PAGINP) No tema, temos que a página virtual referênciada estava na memória principal, entretanto podemos afirmar que esta afirmação nem sempre é verdadeira, porque não existe lugar na memória principal para todas as páginas virtuais. Quando temos uma referência para um endereço em página que não está presente na memória principal chamamos de falta de paginação. Sabemos também que é possível iniciar a execução de um programa em máquina com memória virtual mesmo quando nada do programa está na memória principal. A tabela de página deverá ser usada meramente a ser estabelecida para indicar que toda e qualquer página virtual está na memória secundária, e não na memória principal.

81

82

Organização e Arquitetura de Computadores

Paginação POR ANTECIPAÇÃO (ANTECIPATORY PAGING) São as páginas próximas àquelas referênciadas e carregadas, simulando uma previsão de quais páginas serão necessárias, trazendo-as antecipadamente para a memória. As páginas pequenas elas necessitam de tabelas de mapeamento maiores, maior taxa de paginação, aumento de acessos à memória secundária e geram uma menor fragmentação. Esse tamanho varia de sistema para sistema, mas está entre 512 bytes a 4 kbytes.

Paginação REALOCAÇÃO DE PÁGINAS O problema no gerenciamento de memória virtual por paginação não é decidir qual a página carregar para a memória e sim quais serão removidas, pois qualquer estratégia de realocação de página deve considerar se uma página foi ou não modificada antes de liberá-la par outro processo, sendo que possíveis alterações feitas na página quando ocupada podem ser perdidas. O sistema possui um arquivo de paginação chamado de Page file onde as páginas modificadas ficam armazenadas e, sempre que o sistema libera uma página, deverá gravá-la no arquivo de páginas chamado de Page out, preservando o seu conteúdo. Quando uma destas páginas alteradas for referênciada novamente ela será recuperada do arquivo de página e trazida para o Working Set Processo (Page in). O sistema, por sua vez, sabe se uma página foi alterada ou não através do bit de modificação, que existe na ETP de cada tabela de página. Sendo assim, a melhor estratégia de realocação seria aquela em que a escolha caísse sobre uma página que não fosse referênciada num futuro próximo, porém o sistema operacional tem dificuldade em prever isso. Existem algumas estratégias a serem adotadas pelos sistemas operacionais para a realocação de páginas.

Tema 2 | Organização dos Sistemas de Computação

ALEATÓRIA Essa escolha não utiliza nenhum critério para a seleção. Todas as páginas do working set têm a mesma chance de serem selecionadas. Essa estratégia consome poucos recursos mas não é muito comum.

FIRTS IN FIRST OUT (FIFO) Essa página que foi utilizada será a primeira a ser escolhida. Sua implementação é muito simples, sendo apenas necessário uma fila onde as páginas mais antigas estão no início da fila e as mais novas no final da fila. Essa páginas podem ter que voltar várias vezes à fila.

LEAST RECENTLY USED (LRU) Essa estrátegia seleciona a página utilizada e menos recentemente, ou seja, a página que está há mais tempo sem ser referenciada. Essa estratégia gera o overhead causado pela atualização em cada página referênciada, do momento do último acesso, além do algoritmo de busca de páginas.

NOT USED RECENTLY (NRU) Essa estratégia é bastante parecida com a LRU, pois existe um flag que permite ao sistema a implementação do algoritmo. O flag de referência indica quando a página foi referênciada ou não, e

83

84

Organização e Arquitetura de Computadores

está associado a cada entrada na tabela de páginas. À medida que as páginas são referênciadas o flag é modificado para (1). Todas as páginas que estão com flag indicando que não foram referênciadas recebem (0).

LEAST FREQUENTLY USED (LFU) Nessa estratégia a página menor é referenciada, ou seja, a que for menos utilizada será a página a ser escolhida. Para isso será mantido um contador de número de referências às páginas.

INDICAÇÃO DE LEITURA COMPLEMENTAR MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Este livro possibilita um estudo mais amplo das memórias virtuais. Capítulo 5. TANENBAUM, Andrew S. Organização estruturada de computadores. 5. ed. Rio de Janeiro: Prentice Hall, 2006. Este livro possibilita um estudo mais amplo das memórias virtuais. Capítulo 6.

85

Tema 2 | Organização dos Sistemas de Computação

PARA REFLETIR As memórias virtuais são realmente importantes para o funcionamento dos sistemas operacionais? Coloque no sistema Ava a sua opinião.

RESUMO Você aprendeu até aqui o funcionamento dos processadores, um pouco sobre arquitetura RISC X CISC, sobre a arquitetura paralela e sobre a memória virtual mostrando sua importância, bem como o seu funcionamento.

85

Álgebra Linear

86

ABORDAGEM SOBRE ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Parte 2

3

Organização dos Sistemas Operacionais

Este tema consiste em você estudar como funciona a memória do computador, os dispositivos de entrada e saída do mesmo, bem como o processo de montagem de microcomputadores.

90

Organização e Arquitetura de Computadores

3.1 Memória Neste tema vamos introduzir o conceito de hierarquia de memória, memória principal e memórias auxiliares, tais como discos magnéticos, etc. A operação e a organização de memórias associativas serão explicadas em detalhes. O gerenciamento de memória é introduzido através da apresentação de requisitos de hardware para um sistema de memória virtual que estudamos no tema 2 deste livro.

Memória principal A memória principal é a unidade central de armazenamento em um sistema computacional. É uma memória relativamente grande e rápida, usada para armazenar dados e programas durante a operação do computador. A principal tecnologia usada na construção da memória principal é baseada em circuitos integrados em semicondutores. Os chips de circuito integrado de RAM estão disponíveis em dois modos de operação possíveis, estático e dinâmico. A memória RAM estática consiste essencialmente de flip-flops (um circuito digital, capaz de servir uma memória de um bit internos que armazenam a informação binária. A unidade básica de memória é o digito binário. A informação armazenada permanece válida enquanto uma tensão específica é aplicada à unidade. A memória RAM dinâmica armazena a informação binária na forma de cargas elétricas que são aplicadas a capacitores. Os capacitores são dispostos dentro do chip por meio de transistores. A carga armazenada nos capacitores tende a se descarregar

Tema 3

| Organização dos Sistemas Operacionais

com o tempo, e a atualização da memória dinâmica deve ser feita periodicamente, por meio da recarga dos capacitores, pois esta atualização se dá pela varredura das posições de memória a cada intervalo de alguns milissegundos, de modo a restaurar a carga decadente. A memória RAM dinâmica permite o consumo reduzido de potência e capacidade maior de armazenamento em um único chip de memória. A memória RAM estática é mais fácil de usar e possui ciclos mais curtos de leitura e escrita. A maioria das memórias principais em um computador de propósito geral é feita de chips de circuitos integrados RAM, mas uma porção da memória pode ser construída com chips de memória ROM. Originalmente a RAM era usada para se referir a uma memória de acesso aleatório, mas atualmente ela é usada pra designar uma memória de leitura e escrita, para distingui-la de uma memória somente de leitura. É importante sabermos ainda que a memória RAM é usada para armazenar o corpo dos programas e dados que são sujeitos a mudanças, enquanto que a memória ROM é usada para armazenar programas que são permanentemente mantidos no computador e para tabelas de constantes que não mudam o seu valor após a conclusão da produção do computador. A porção ROM da memória principal é necessária para armazenar um programa inicial, chamado de carregador de bootstrap. Este carregador é um programa cuja função é iniciar a operação do software do computador quando o mesmo é ligado. Uma vez que a RAM é uma memória volátil, o seu conteúdo se perde ao computador ser desligado. Já os conteúdos da ROM permanecem intactos após o computador ser desligado e ligado novamente. Neste sentido, a inicialização de um

91

92

Organização e Arquitetura de Computadores

computador consiste na alimentação do mesmo por eletricidade e no início da execução de um programa inicial, assim, quando a força é ligada, o hardware do computador seta o seu contador de programa para o primeiro endereço do carregador de bootstrap. Este programa carrega uma porção do sistema operacional a partir de um disco para a memória principal e o controle é transferido para o sistema operacional, que prepara o computador para uso geral. Memórias RAM e ROM estão disponíveis em uma variedade de tamanhos e capacidades.

MEMÓRIAS ROM e RAM Uma memória RAM é mais adequada para a comunicação com a CPU, se esta possuir uma ou mais entradas de controle que selecionem o chip somente quando for necessário. O barramento de dados bidirecional é quem permite a transferência de dados da memória para a CPU, durante uma leitura, e da CPU para a memória, durante a operação de escrita. Um barramento bidirecional pode ser construído com buffers triestado. Uma saída de buffer tri-estado pode ser inserida em um dos três estados possíveis: um sinal equivalente ao lógico 1, um sinal equivalente ao lógico 0 ou um estado de alta impedância (impedância é a oposição que um meio material oferece à propagação de um campo), normalmente representado pela letra z. Os sinais lógicos 1 e 0 são sinais digitais normais. O estado de alta impedância se comporta como um circuito aberto, o que significa que a saída não conduz sinal algum, por isso não possui significado lógico.

Tema 3

| Organização dos Sistemas Operacionais

Diagrama de blocos

A memória possui 128 palavras de 8 bits (um byte) por palavra. Isto requer um barramento de endereço de 7 bits, e um barramento de dados bidirecional de 8 bits. As entradas de leitura e escrita especificam a operação da memória, e as duas entradas de controle CHIP SELECT, servem para habilitar o chip somente quando este é selecionado pelo microprocessador.

Chip select

93

94

Organização e Arquitetura de Computadores

A disponibilidade de mais de uma entrada de controle para selecionar o chip facilita a decodificação das linhas de endereço quando múltiplos chips são usados no microcomputador. Entradas de leitura e escrita são algumas vezes combinadas em uma única linha, chamada R/W. Quando o chip é selecionado, os dois estados binários nesta linha especificam as duas operações de leitura ou escrita. Um chip ROM é organizado externamente de maneira similar. Entretanto, já que uma ROM pode apenas ler dados, o barramento de dados pode estar somente em um modo de saída. Para um chip de mesmo tamanho, é possível haver mais bits de ROM do que de RAM, porque as células binárias internas na ROM ocupam menos espaço do que na RAM. ROM: É a memória que só permite a leitura de dados e são lentas. Em contrapartida, o seu conteúdo não é perdido ao desligar o computador; RAM: Memórias rápidas que permitem a leitura e escrita. As informações nelas gravadas, ao desligar o computador, são inteiramente perdidas.

Memórias RAM

Memórias ROM

Tema 3

| Organização dos Sistemas Operacionais

Mapa de Endereços de Memória Um projeto de um sistema computacional deve calcular a quantidade de memória requerida para a aplicação particular, e atribuí-la tanto à memória RAM quanto à memória ROM. A interconexão entre memória e processador é então estabelecida através do prévio conhecimento do tamanho da memória necessária e do tipo de chip RAM e ROM disponível. Endereçamento de memória pode ser estabelecido por meio de uma tabela que especifica o endereço de memória atribuído a cada chip. Mapa de endereços de memória é uma representação ilustrada de espaços de endereço atribuídos para cada chip no Componente Endereço Hexadecimal Barramento de Endereços

Mapa de memória dos registros do 8051

A coluna Componente especifica se um chip RAM ou ROM será usado. A coluna de endereço hexadecimal atribui uma variedade de endereços hexadecimais equivalentes para cada chip. As linhas de barramento de endereços são listadas na terceira coluna e assume-se que os seus valores sejam iguais a

95

96

Organização e Arquitetura de Computadores

zero. Os pequenos x sob as linhas de barramento de endereço designam aquelas linhas que devem estar conectadas às entradas de endereço em cada chip.

Conexão da Memória com a CPU Os chips RAM e ROM são conectados à CPU através de barramento de dados e de endereços. As linhas de baixa ordem no barramento de endereços selecionam o byte dentro dos chips, e outras linhas no barramento de endereços selecionam um chip particular através das suas entradas chip select. Esta configuração fornece uma capacidade de memória de 512 bytes de RAM e 512 bytes de ROM. Cada RAM recebe os sete bits de baixa ordem do barramento de endereços para selecionar um dos 128 bytes possíveis. O chip RAM particular selecionado é determinado pelas linhas 8 e 9 no barramento de endereços. Isto é feito através de um decodificador 2x4 cujas saídas vão para as entradas CS1 em cada chip RAM. Assim, quando as linhas de endereço 8 e 9 são iguais a 00, o primeiro chip RAM é selecionado, quando forem 01, o segundo chip RAM é selecionado, e assim por diante. As saídas RD e WR (entrada de leitura e entrada de escrita, respectivamente) do microprocessador são aplicadas às entradas de cada chip RAM e a seleção entre RAM e ROM é obtida através da linha de barramento 10. RAMs são selecionadas quando o bit nesta linha for 0, e a ROM é selecionada quando o bit for 1. A outra entrada de chip select na ROM é conectada à linha de controle RD para que o chip ROM seja habilitado somente durante uma operação de leitura. As linhas do barramento de endereços 1 a 9 são aplicadas às entradas de endereços da ROM sem a necessidade de passar pelo decodificador, sendo atribuídos os endereços 0 a 511 para a RAM, e 512 a 1023 para a ROM.

Tema 3

| Organização dos Sistemas Operacionais

Circuito utilizando o processador M++ em conjunto com uma memória RAM e uma memória ROM, que são externas ao processador mapa de memória dos registos do 8051

O barramento de dados da ROM possui apenas a função de saída, ao passo que o barramento de dados conectado às RAMs pode transferir informação em ambas as direções. O projetista precisa estabelecer um mapa de memória que atribua endereços aos vários chips a partir dos quais as conexões requeridas. As memórias auxiliares mais comuns usadas em sistemas computacionais são discos magnéticos, discos ópticos (Cds e DVDs) e fitas. Outras comunicações usadas, mas não tão frequentemente, são tambores magnéticos, bolhas de memória magnéticas, entre outros.

97

98

Organização e Arquitetura de Computadores

Memória Associativa Muitas aplicações de processamento de dados requerem a busca de itens em uma tabela armazenada na memória, com um programa em assembler e realiza a busca pela tabela de endereços de símbolos, de modo a extrair o equivalente em binário do símbolo. Um número de conta-corrente, por exemplo, pode ser buscado em um arquivo para determinar o nome do seu titular e a sua situação. O número de acessos à memória depende da localização do item e da eficiência do algoritmo de busca. Muitos desses algoritmos foram desenvolvidos para minimizar o número de acessos enquanto buscam por um item em uma memória de acesso aleatório ou sequencial. Uma unidade de memória acessada pelo seu conteúdo é chamada de memória endereçada por conteúdo. Quando uma palavra é escrita em uma memória associativa, não é fornecido um endereço.

INDICAÇÃO DE LEITURA COMPLEMENTAR MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro, no capítulo 05, você poderá conhecer melhor o funcionamento das memórias. TANENBAUM, Andrew S. Organização estruturada de computadores. 5. ed. Rio de Janeiro: Prentice Hall, 2006. Neste livro, no capítulo 02, você poderá conhecer melhor o funcionamento das memórias.

Tema 3

| Organização dos Sistemas Operacionais

99

PARA REFLETIR As memórias ROM são memórias de semicondutores que atingem 3 objetivos, que é ter desempenho semelhante às memórias R/W, não são voláteis e têm uma segurança permitindo apenas leitura do seu conteúdo, procure em seu computador onde está caracterizada a presença desta memória, colocando um comentário no Ava.

3.2 Entrada e Saída

Entrada x saída

Shutterstock/300dpi

A arquitetura de computadores (entrada e saída) constitui em uma interface com o meio externo. A arquitetura de entrada e saída foi projetada para permitir um controle sistemático de interação com o exterior e permitir ao sistema operacional informações que ele necessita para gerenciar as atividade de entrada e saída. Quando precisamos de rapidez e flexibilidade em um computador não seria apenas o seu poder de armazenamento em memória dos programas, e nem informações que seriam necessárias para o processamento e nem também a possibilidade de se executar milhões de instruções. Seria preciso que o programa escrito em um papel e seus dados a serem manipulados fossem inseridos em um sistema bit a bit incluindo seus espaços, sinais e símbolos.

100

Organização e Arquitetura de Computadores

Para que possamos realizar determinada tarefa é necessário de um meio de comunicação entre o usuário e o computador e, da mesma forma, a necessidade de comunicação inversa, de maneira que o usuário possa entender o resultado do processamento, pois os periférico são os dispositivos responsáveis pela entrada e saída das informações. Os dispositivos de entrada e saída funcionam geralmente caracterizados por diversos elementos mesmo que realizem a mesma tarefa, por possuírem característica diversificadas. Sendo assim, a integração dos diversos elementos que cooperam no processamento de entrada e de saída em um subsistema fazem parte do sistema de computador. Um subsistema de entrada/saída (I/O) realiza duas funções muito importante: 1.

Enviar e receber informações ao meio exterior;

2. Converter as informações de entrada ou saída em uma forma compreensível para a máquina ou para o usuário. Um periférico é compostos de subsistema de entrada e saída que possui características diferentes, como a sua velocidade e sua taxa de transferência de dados ou informação.

Visão da CPU em relação às entradas/saídas

Tema 3

| Organização dos Sistemas Operacionais

As diferentes ligações entre os dispositivos de controle e a unidade central de processamento não são realizadas de maneira direta ou individual. Aconteceria uma ligação direta caso houvesse uma ligação direta entre a unidade central de processamento e o teclado. Quando a CPU necessita se conectar com algum dispositivo é realizada uma tradução e a verificação de compatibilidade das suas características de periféricos para a unidade central de processamento, sendo que ainda são realizadas outras tarefas. Estes dispositivos costumam ser chamados de interface de entrada e saída ou simplesmente (I/O), existem outros nome que são dados como controlador, adaptador e canal A função dos dispositivos é de compatibilizar os periféricos com suas características diferentes com a unidade central de processamento, permitindo assim um fluxo contínuo de dados com uma velocidade adequada para os elementos que estão conectados. Existem duas maneiras de se realizar uma transmissão e sua recepção de dados: entre os periféricos e as interfaces e entre as interfaces e a unidade central de processamento. São elas a transmissão serial e a transmissão paralela.

Transmissão serial

101

102

Organização e Arquitetura de Computadores

Transmissão paralela

Quando temos uma transmissão serial é porque a informação foi transmitida e recebida bit a bit e quando é realizada uma transmissão paralela é dito que a informação foi transmitida e recebida em conjunto de bits. Quando temos a relação de velocidade de um periférico e a CPU podemos afirmar que a taxa de transferência de informação de um periférico é menor do que da CPU. Não se conecta periféricos a barramento local, pois isso tende a reduzir a velocidade de transmissão entre a unidade central de processamento e a memória principal. Pois cada periférico possui sua velocidade diferente, como o teclado, que é muito mais lento do que um disco. Sendo assim, não se utiliza um caminho único, mas sim vários, que são interligados ao barramento. Quando temos periférico de entrada e saída que utilizam tamanhos diferentes em sua unida-

Tema 3

| Organização dos Sistemas Operacionais

de de transferência é o mesmo que os fabricantes adotam em seus tamanhos de palavras de dados, pois estas características garante a necessidade do emprego de um dispositivo intermediário que faz a ligação entre a unidade central de processamento e memória principal a um periférico de entrada ou saída. As interfaces poderão servir para uma ligação de um dispositivo de áudio ou até mesmo pra a ligação de vários dispositivos USB. Um controlador é responsável por realizar as seguintes tarefas: 1. Estabelecer um sincronismo e um controle entre o fluxo de dados e entre unidade central de processamento e os periféricos. 2. De fazer a comunicação com a unidade central de processamento; 3. Ser uma memória auxiliar entre as informações e os componentes; 4. Detectar e corrigir erros que porventura ocorram em uma transmissão. Quando é necessária a utilização de buffer interno por uma interface é preciso compatibilidade de velocidade diferentes, entre um barramento do sistema e uma linha externa.

CONEXÕES PADRÕES DE PERIFÉRICOS DE ENTRADA E SAÍDA Nas placas-mãe dos computadores atuais os circuitos de controle dos periféricos já estão incorporados, ou seja, os de entrada e saída, em alguns casos, ainda se precisa de ajuda de placas auxiliares que são incorporadas às placas-mãe. Quando temos, por exemplo, um teclado,

103

104

Organização e Arquitetura de Computadores

o mesmo já vem acoplado à placa-mãe desde os primeiros computadores, porém o vídeo não vinha diretamente na placa mãe e sim em um outra placa que se acoplava na placa-mãe. Hoje, a maioria das placas-mãe já vêm com esse dispositivo de saída. Caso o usuário necessite de mais resolução, poderá adquirir uma placa com maior capacidade de geração de gráfico e acoplar a placa-mãe. Em um computador temos conexões de entrada e saída como o monitor, teclado, mouse, as portas paralelas e seriais. Para cada item deste a placa-mãe possui uma especificação de pinos e conectores diferentes e específicos, onde são ligados os diversos dispositivos. Para que possamos conectar um dispositivo precisamos das portas de comunicação, que são utilizadas entre a comunicação do micro com os periféricos externos ou até mesmo a comunicação com outros computadores.

MOUSE O mouse, que não é considerado periférico padrão de Sistemas de Informação, mas hoje é essencial, é um dispositivo de entrada cujo propósito é facilitar o trabalho do usuário em sua comunicação com o sistema. Os mouses do tipo ÓTICO-MECÂNICO possuem o mesmo mecanismo de esfera e rolete que os dispositivos mecânicos, sendo que os roletes são conectados a rodas vazadas e à medida que as rodas giram, elas ora bloqueiam, ora permitem a passagem de luz, que é produzida pelo LED, e estas transições são detectadas por semicondutores sensíveis à luz Mouse por dentro

Tema 3

| Organização dos Sistemas Operacionais

105

MONITOR Em qualquer microcomputador é necessário a existência de um sistema de vídeo para que as operações realizadas sejam mostradas ou verificar o que está sendo digitado, carregado e até mesmo os resultados de cálculos solicitados pelo usuário. Hoje todos os monitores são geralmente coloridos com uma resolução máxima em sua frequência. Os monitores geralmente vêm interligados à placa mãe do computador. Mas se houver necessidade de uma maior resolução e rapidez na passagem dos gráficos pode-se obter as placas de vídeos chamadas de off board, ou seja, placas externas com quantidade de memória própria e modelo de chipset. Os monitores utilizam o padrão super-VGA, mas a tecnologia vem modificando diariamente podendo este mudar a qualquer momento. Os adaptadores de vídeo se conectam ao monitor através de pinos (DB-15), com o cabo ligado ao monitor que possui uma interface macho e o conector que faz a conexão com a placa usa a interface fêmea. Hoje com novas interfaces gráficas os fabricante de placas de vídeos sentiram a necessidade de utilizar recurso de aceleração de vídeo, o que ocorre hoje em praticamente todas as placas de vídeo. Já nas aplicações com 3D, que necessitam de uma demanda maior de cálculos matemáticos e um grande consumo de memória, é necessário a instalação de placas 2D e mais placas acele-radoras.

Shutterstock/tatniz

Shutterstock/ravl

15 pinos i (DB (DB-15))

106

Organização e Arquitetura de Computadores

INDICAÇÃO DE LEITURA COMPLEMENTAR MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro você poderá estudar mais detalhadamente os periféricos de entrada e saída no capítulo 10. CARTER, Nicholas. Arquitetura de computadores. 1. ed. São Paulo: Bookman, 2003. Neste livro você poderá ler mais sobre os dispositivos de entrada de saída.

PARA REFLETIR No passado os monitores eram grandes e tinha como características serem monocromáticos. Hoje em dia é muito difícil encontrar estes monitores, pois os novos monitores cada vez mais finos e com uma qualidade cada vez melhor. Para que possamos melhor entender os monitores coloque no ambiente AVA os diferente tipos de monitores com suas características.

Tema 3

| Organização dos Sistemas Operacionais

3.3 ENTRADA E SAÍDA (teclado, porta paralela, portas seriais, Interrupções e acesso direto à memória) Neste conteúdo iremos ler sobre o dispositivo de entrada (teclado), sobre as portas paralelas que transmitem 8 bits de dados de cada vez e as portas seriais que transmitem um bit de dados de cada vez, sobres as interrupções e, por último, sobre o acesso direto à memória.

TECLADO Entre os periféricos de entrada o teclado, juntamente com o mouse, são os mais utilizados. Desde o início da sua utilização nos computadores os teclados vêm sendo modificados para melhor utilização como a quantidade de teclas que vêm aumentando. O teclado começou com 84 teclas e, nos dias de hoje, já tem teclado com 111 teclas. Muitas delas são teclas de atalho, que possibilitam a entrada em um determinado programa, apenas clicando na tecla programada. A maioria dos teclados vem utilizando um padrão que chamamos de QWERTY US-Internacional, mas a ABNT também padronizou seu layout de teclas baseado no QWERTY. Sendo assim, foi possível a colocação de teclas a mais com o “Ç” e com uma melhora significativa em relação às teclas com a acentuação, tendo como finalidade facilitar os trabalhos dos usuários da língua brasileira. Os teclados utilizam dois padrões pra sua conexão: a placa mãe, o DIN de cinco pinos e MINIDIN com até 6 pinos, com o surgimento do modelo PS/2. Temos ainda alguns adaptadores caso alguma placa mãe não venha com algum dos tipos. Atualmente, além dos modelos citados, temos os teclados que se conectam à placa mãe através da conexão USB. Shutterstock/ilker canikligil

107

108

Organização e Arquitetura de Computadores

PORTA PARALELA As portas paralelas são dispositivos que permitem que os dados do computador saiam diretamente para um dispositivo externo (byte a byte), ou seja, um conjunto de 8 bits é um byte. A sua comunicação paralela é extremamente rápida e segura, mas está sujeita a ruídos. Sendo assim, não se pode usar em comunicações com dispositivos com uma grande distância. Quando temos uma porta paralela tradicional dizemos que é unidirecional, ou seja, permite apenas que os dados sejam enviados apenas pelo computador ao periférico específico. As portas paralelas são constituídas por interfaces com conectores de pinagem de 25 pinos (DB-25) do tipo fêmea, o que se diferencia das impressoras que em sua interface paralela utilizam os conectores Centronics com pinagem de 36 pinos do tipo fêmea. Para que se possa realizar uma ligação deve-se utilizar de um padrão de conector DB-25 do tipo macho em uma das pontas e o Centronics macho na outra ponta. As portas paralelas possuem três modos de operação: as operações SPP (standard paralel port), que é um modo de operação padrão, com característica unidirecional e com uma taxa de transferência de no máximo 150 KB/s; o modo de operação EPP (Enhanced Parallel Port) que permite uma maior taxa de transferência de dados com o Cabo paralelo

Tema 3

| Organização dos Sistemas Operacionais

modo bidirecional, que pode ser de 500 kilobytes a 2 megabytes por segundo e o modo ECP (Extended Capabilities Port) que foi lançado pela Microsoft e a Hewlett Packard em 1992 que possibilita uma taxa de transferência de 2MB/s. A porta paralela é uma conexão muito utilizada para conexão de periféricos como impressora e outros ao computador. Mas, atualmente, um número grande de periféricos vem surgindo mais que podem também serem conectados as portas paralelas com os scanners, Zip-drive. O uso típico da porta paralela é a conexão do micro com a impressora. Porém, atualmente, está surgindo um número maior de periféricos que podem ser ligados à porta paralela como unidades de armazenamento (Zip-drive), scanners, unidade ópticas externas. Com a evolução da tecnologia as portas paralelas começaram a permitir a comunicação chamada bidirecional, ou seja, com duas linhas de comunicação, ficando assim mais rápida em sua transmissão de dados.

Portas seriais A comunicação das portas seriais são realizadas bit a bit, não sendo possível palavra por palavras. Sendo assim, a comunicação literalmente fica mais lenta e com um probabilidade de acontecerem erros. As portas seriais não necessitam de muitos fios para se conectarem entre dispositivos e possibilita que a ligação entre os meios aconteça em uma maior distância. Os tipos de comunicação serial podem ser do tipo síncrona, que transmite um bit a cada pulso de clock e com caracteres back-to-back e assíncrona, que utiliza o mesmo canal sinalizando com um start bit para o início de cada caracter ou o fim de um conjunto de dados.

109

Shutterstock/SM

Scanners

Shutterstock/Kitch Bain

zip drive

110

Organização e Arquitetura de Computadores

COMUNICAÇÃO ENTRE CPU E INTERFACE DE I/O Para que possamos organizar a comunicação entre a unidade central de processamento, memória principal e dos dispositivos de entrada e saída é necessário utilizar os métodos de memória compartilhados e o método de entrada e saída isolada. No método de memória compartilhada a memória principal toma parte tanto por instruções de um programas quanto por instruções de operação de I/O. No método de memória isolada é criado um espaço com memória própria de I/O que difere da memória principal. Quando temos uma memória compartilhada no barramento de controle basta uma linha para leitura e escrita, temos então uma mesma memória que poderá realizar somente uma operação de escrita e leitura, seja ela para unidade central de processamento/memória principal ou da unidade central de processamento para a entrada e saída. Já na memória isolada será necessário um sinal que seja identificado no topo da operação, pois quando um endereço está no barramento é para que se possa saber se é de I/O ou não. Os periféricos de entrada e saída sempre utilizam endereços de I/O para que haja uma comunicação com o processador e as portas de comunicação utilizam endereço padrão de entrada e saída.

Interrupções Um problema da entrada e saída programada é a necessidade que o processador tem de esperar um bom tempo para que o módulo de entrada e saída que foi requerido esteja em estado de pronto, para que se possa enviar/receber os dados. Enquanto há uma espera por parte do processador

Tema 3

| Organização dos Sistemas Operacionais

o mesmo tem que testar continuamente o módulo de entrada e saída. Sendo assim, o desempenho do sistema é duramente afetado. Uma alternativa seria o processador enviar um comando de entrada e saída para um módulo e continuar seu processamento. O processador seria interrompido quando o módulo de entrada e saída estivesse pronto para troca de dados com o processador. Com isso, o processador efetua a transferência dos dados como na técnica anterior e retoma o seu processamento que parou. Vamos agora ver como isso funciona do ponto de vista de entrada e saída. Quando temos uma entrada de dados o módulo de entrada e saída recebe um comando de leitura do processador. Os dados são lidos e requeridos ao periférico específico. Quando esse dado estiver em seu registrador de dados o módulo de entrada e saída sinaliza com a interrupção do processo no processador por meio de uma linha controladora. Então, ele espera que o dado lido seja solicitado pelo processador. A requisição é recebida e o dado é colocado no barramento de dados, onde ficará preparado para uma nova operação de entrada e saída. No processamento das interrupções, quando acontece uma ocorrência, é disparado um número X de eventos para o hardware e para o software do processador. Quando temos uma operação completa de entrada e saída ocorre uma sequência de eventos: o primeiro é que o dispositivo envia um sinal de interrupção; o segundo é que antes de responder a esta interrupção o processador tem que terminar a execução da instrução que estava trabalhando; o terceiro, o processador tem que testar a existência de uma interrupção pendente e quando a mesma é detectada envia um sinal para o dispositivo que enviou a interrupção; o quarto, o processador se prepara para que haja a transfe-

111

112

Organização e Arquitetura de Computadores

rência, o controle para uma rotina de tratamento de interrupção; o quinto, o processador carrega o contador de programa com seu endereço de rotina de tratamento de interrupção; o sexto, o valor do contador de programa terá sido armazenado em uma pilha do sistema para uma futura restauração; o sétimo, o tratamento da interrupção é iniciado: o oitavo, o processo de interrupção é concluído e os valores que anteriormente foram armazenados na pilha são restaurados em seus registradores e, por último, o conteúdo do contador do programa é restaurado.

Uso de interrupções nos PCs modernos

Acesso direto à memória A entrada e saída dirigida por interrupção mais eficiente que a entrada e Saída programada ainda necessita requerer uma intervenção no processamento para que se possa transferir um dado entre a memória e a entrada e saída. Essa transfe-

Tema 3

| Organização dos Sistemas Operacionais

rência é realizada por uma caminho que passa pelo processador. Sendo assim, existem duas desvantagens destas duas forma que vimos acima. A primeira é a taxa de tranferência de entrada e saída que se torna limitada e a segunda é que o processador ocupa no gerenciamento de transferência de dados de entrada e saída, tendo que executar um bom número de instrução para cada transferência.

DMA Controller Block Diagram

113

114

Organização e Arquitetura de Computadores

INDICAÇÃO DE LEITURA COMPLEMENTAR MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro você poderá estudar mais detalhadamente os periféricos de entrada e saída no capítulo 10. CARTER, Nicholas. Arquitetura de computadores. São Paulo: Bookman, 2003. Neste livro você poderá ler mais sobre os dispositivos de entrada de saída no capítulo 9.

PARA REFLETIR Os computadores pessoais tratam o teclado e o monitor como dispositivos independentes. Então, para uma melhor interação, coloque no AVA os dispositivos de entradas e saída que você conhece apresentando as características deles, interagindo assim com seus colegas.

Tema 3

| Organização dos Sistemas Operacionais

3.4 Processo de Montagem de Microcomputadores Neste capítulo iremos mostrar como funciona um montador, sendo que cada máquina possui sua própria linguagem. O processo de montagem é bastante semelhante em máquinas diferentes, de forma que é possível descrevê-lo em formas gerais.

MONTADOR DE DOIS PASSOS Constitui-se de um programa em linguagem de montagem com uma série de comandos de uma linha. Poderia parecer natural ter um montador que lesse um comando e se traduzisse para linguagem de máquina. E, a partir dessa saída, a linguagem de máquina iria gerar um arquivo junto com a parte correspondente da listagem, se existir, em um outro arquivo. Esse processo seria repetido enquanto todo o programa tivesse sido traduzido. Esse método não funciona. Um comando pode estar perto do fim do programa, que torna impossível ao montador encontrar o endereço sem primeiro ler quase todo o programa, que denominamos de problema de referência futura. A referência futura, que chamamos em inglês de forward references, pode ser tratada de duas maneiras, a primeira onde o programa fonte é lido pelo montador duas vezes e cada leitura é chamada de um passo, e qualquer tradutor que ler duas vezes é chamado de tradutor de dois passos. No passo um de um montador de dois passos as definições de símbolos são colecionadas e armazenadas em uma tabela. No exato momento em que o segundo passo começa os valores de todos os passos são conhecidos. Assim, não restará quaisquer referências futuras e os comandos

115

116

Organização e Arquitetura de Computadores

poderão ser lidos, montados e dar saída. Apesar de este método necessitar de mais um passo ele é conceitualmente direto. O segundo passo constitui em realizar a montagem de qualquer jeito em um passo, quando um comando for encontrado, e não possa ser montado por conter uma referência futura, então nenhuma saída será gerada. O montador de um passo é mais complexo e tem dificuldades em imprimir uma listagem que inclua o código objeto real produzido. Sendo assim, a maioria dos montadores são de dois passos.

PASSO UM

Tema 3

| Organização dos Sistemas Operacionais

A função do passo um é construir uma tabela que chamamos de tabela de símbolos, que contém valores de todos os símbolos. Um símbolo é um valor no qual é atribuído um nome simbólico, através de uma instrução como o exemplo abaixo: SIZE EQU 100 (EQU associa um valor definido pelo programador a um símbolo) MOVE #SIZE, D0 (associa o valor decimal 100 ao símbolo SIZE, que pode ser posteriormente referênciado em outras instruções) Quando temos a atribuição de um valor a um símbolo em um campo de uma instrução, o montador deverá saber em qual endereço essa instrução deverá estar durante a execução do programa. Então, para que se possa informar o endereço da instrução em tempo de execução que está sendo montada, o montador mantém a variável durante o processo de montagem. Isso é conhecido como contador de posição de instrução. A variável sempre é zerada no início do passo um e incrementada do comprimento durante as próximas instruções processadas. Alguns montadores permitem escrever instruções se utilizando de endereçamento imediato, mesmo que não exista qualquer instrução em linguagem. Quando o montador reserva alguma constante em memória isso é denominado de literal. Com isso o trabalho do programador é poupado, além de melhorar a legibilidade do programa. Em alguns montadores, após ser lido um comando, ele será armazenado em uma tabela. Se esta tabela encher completamente, ela deverá ser escrita em um disco, que possivelmente será escrito várias vezes. Quando temos um pseudo END que é lido, o passo termina.

117

118

Organização e Arquitetura de Computadores

SEGUNDO PASSO A função do segundo passo é de gerar o programa objeto e, se possível, imprimir a listagem de montagem. O passo dois deve produzir informações necessárias ao linker para que se possa ligar o procedimento montado em suas instâncias diferentes.

O comando fonte original e o código objeto gerado a partir dele serão impressos ou armazenados para posterior impressão. Os Erros mais comuns na construção de um programa fonte são: 1. símbolo usado, mas não declarado; 2. símbolo definido várias vezes; 3. nome do campo código de operações não é um código de operação válida;

Tema 3

| Organização dos Sistemas Operacionais

4. um código de operação não foi provido como número suficiente de operandos; 5. um código de operação foi provido com um grande número de operandos. 6. um octal contendo 8 ou um 9. 7. uma expressão com registrador foi utilizada ou não é permitida. 8. falta do comando END. Os programadores geralmente são muito hábeis para inventar tipos de erros. Os erros de símbolos que não são definidos, na sua maioria são causados com frequência por erros de datilografia e a melhor coisa a se fazer em um erro é o montador enviar uma mensagem de erro e tentar continuar o programa.

TABELA DE SÍMBOLOS Durante o passo um de um processo de montagem, o montador acumula informações acerca dos símbolos e de seus valores que devem ser armazenados na tabela de símbolos, para uma pesquisa no passo dois. Existem vários métodos para que se possa organizar uma tabela, mas todos eles tentam simular uma memória associativa, que nada mais é do que um conjunto de pares, símbolos ou valor. Dado o símbolo, a memória associativa deve produzir um valor. O modo de ordenar por símbolo é usar algoritmo de busca binária pra se procurar outro símbolo. O algoritmo funciona comparando o símbolo ao meio de entrada da tabela. Quando o símbolo estiver antes da entrada do meio, em ordem alfabética, ele deve estar localizado na primeira parte da tabela e se o símbolo estiver após a entrada do

119

120

Organização e Arquitetura de Computadores

meio, deve estar na segunda parte da tabela e se o símbolo for igual a sua entrada do meio, aí temos o final da busca. Quando temos uma entrada do meio que não seja igual ao símbolo procurado, ao menos sabemos em qual metade da tabela se deve procurar. A busca binária poderá ser aplicada da metade correta, o que vai resultar em um compatibilidade ou em um quarto correto da tabela. Quando utilizamos as aplicações recursivas do algoritmo, a tabela de n entradas de tamanho poderá ser pesquisada em cerca de log de n tentativas. Este modo é bem mais rápido que o modo anterior.

Técnica de hashing ou espelhamento

Uma técnica diferente de simular uma memória associativa é a técnica conhecida como HASHING. Essa técnica requer uma função chamada HASH, que mapeia os símbolos em inteiros na faixa de 0 a K -1. Uma possível função seria multiplicar os códigos da tabela ASCII dos caracteres do símbolo, ignorando o overflow e tomando o resto da divisão por K.

Tema 3

| Organização dos Sistemas Operacionais

Tabela ASCII

INDICAÇÃO DE LEITURA COMPLEMENTAR TANENBAUM, Andrew S. Organização estruturada de computadores. 5. ed. Rio de Janeiro: Prentice Hall, 2006. Neste livro você poderá ler mais sobre o processo de montagem no capítulo 7. MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro você poderá ler mais sobre tabela de símbolos no capítulo 9.

121

122

Organização e Arquitetura de Computadores

PARA REFLETIR Quando temos a tabela de símbolos temos o algoritmo de pesquisa binária. Então, para que possamos ter conhecimento sobre a pesquisa binária, vamos pesquisar nas literaturas o que seria o algoritmo de pesquisa binária e colocar em discussão no Ava.

RESUMO Você aprendeu neste tema sobre as memórias, conhecendo um pouco da memória principal, as definições sobre a memória RAM e ROM, o mapa de endereços de memória, a conexão da memória com a CPU e sobre a memória associativa. Com isso, foi possível aumentar o seu conhecimento em relação ao tema abordado. Você também pôde conhecer sobre os dispositivos de entrada e saída com suas estruturas e ligações com o computador, bem como sobre o processo de montagem possibilitando um conhecimento sobre este processo desde o montador de dois passos até a tabela de símbolos.

4

A Interface do Hardware

Neste tema iremos estudar os formatos de instruções em linguagem de máquina, os modos de endereçamento, os tipos de instruções em linguagem de máquina e as noções da linguagem de programação Assembly.

124

Organização e Arquitetura de Computadores

4.1 Formatos de Instruções em Linguagem de Máquina Um programa é constituído de uma sequência de instruções, cada uma especificando uma ação particular. Essas instruções contêm a localização do dado que foi utilizado pela instrução. Endereçamento é o local onde os operandos estão, ou seja, seus endereços. Existem alguns formatos típicos de instruções:

(a) Instrução sem endereço. (b) Instrução com um endereço. (c) Instrução com dois endereços. (d) instrução com três endereços. instrução sem endereço.

As instruções podem ser curtas, longas ou do mesmo tamanho de uma palavra.

CRITÉRIOS DE PROJETO PARA FORMATOS DE INSTRUÇÕES Quando precisamos escolher um formato de instrução para uma máquina, devemos considerar alguns fatores importantes. Primeiro: as instruções curtas são melhores que as longas (este é o mais importante). Quando temos um programa de “n” instruções de 16 bits, este toma apenas a metade do espaço de endereçamento da memória necessária a “n” instruções de 32 bits.

Tema 4 | A Interface do Hardware

Segundo: é que cada memória tem sua taxa de transferência particular que é determinada pela tecnologia e seu projeto de engenharia da memória. O número de bits por segundo que pode ser lido da memória é visto como taxa de transferência. Quando temos uma memória rápida é porque ela fornece a um processador mais bits por segundo do que uma memória lenta. Aumentar o número de instruções por segundo é, portanto, um importante critério na hora de um projeto. Terceiro: é que o comprimento da palavra de máquina seja um múltiplo inteiro de seu comprimento de caracteres. Quando o código de caracteres possui K bits o comprimento de palavra deve ser k, 2k, 3k, 4k..., pois de outra forma será desperdiçado espaço no armazenamento de caracteres. É possível armazenar 3,5 caracteres por palavra, o que causa acessos muitos ineficientes aos caracteres. O quarto critério é quando o projeto diz respeito ao número de bits no campo de endereço.

EXEMPLOS DE FORMATO DE INSTRUÇÃO Vamos estudar agora os formatos de níveis convencionais de máquina do PDP-11, INTEL e MOTOROLA, onde incluímos o PDP-11 por sua simplicidade e sua regularidade.

PDP-11. As instruções de dois operandos do PDP-11 são codificados como na figura 2, onde cada instrução deve conter um código de operação de 4 bits e mais dois campos de endereçamento de 6 bits. O bit que fica mais para a esquerda do código de operação indica se a instrução opera sobre bytes.

125

126

Pdp -11

Organização e Arquitetura de Computadores

Os campos de endereçamento que se subdividem em um de três bits para o modo e outro de três bits para o registrador. Quando temos um conjunto de instruções em que o método especificado dos endereços dos operandos é independente do código de operação, ele é chamado de ORTOGONAL. Poucas outras instruções, inclusive as instruções de um operando, o PDP-11 utiliza-se de um esquema de códigos de operação expandindo, com códigos de operação do x111( binário), que se utiliza como escape para códigos de operações maiores. As instruções do PDP-11 que endereçam memória possuem uma ou duas palavras de 16 bits adicionais para as seguintes instruções de se especificar os endereços. Código de operação de expansão

Tema 4 | A Interface do Hardware

FAMÍLIA INTEL As CPUs Intel têm uma situação diferente e muito menos regular. Temos instruções de dois operandos: quando um operando está na memória o outro operando não poderá estar na memória. Sendo assim, existem instruções para se adicionar o conteúdo de dois registradores e adicionar o conteúdo de um registrador ao conteúdo de uma localização de memória, e adicionar um conteúdo de uma localização de memória ao conteúdo do registrador, mas quando não existe instruções para adicionar o conteúdo de uma localização de memória ao conteúdo de uma outra localização de memória, algo em que o PDP-11 permite à sua ortogonalidade.

127

128

Organização e Arquitetura de Computadores

Tipos de instruções

Os segmentos de 32 bits, como no caso do 80386, que é bem diferente daqueles do 80888 e do 80286, requerem um byte adicional que chamamos de SIB, que prove uma especificação adicional. FAMÍLIA MOTOROLA Na codificação de instruções dos modelos Motorola é apresentada uma diferença muito interessante em relação aos modelos PDP-11 e INTEL. Isso é muito evidente quando um conjunto de instruções e modos de endereçamento foram influenciados pelos projetistas do modelo 68000 em relação à codificação de instruções. O PDP-11 tinha como filosofia de codificação das instruções a ortogonalidade do código de operação e operandos. O 68000 tem muito mais instruções que PDP11 e com três comprimentos de dados em vez de dois. Com isso os projetistas poderiam se dar ao luxo da codificação ortogonal regular de instruções.

Tema 4 | A Interface do Hardware

Formatos de instruções do sparc

Mais do que a ortogonalidade os projetistas do 68000 tentavam alocar mais espaços de códigos de operação para as instruções importantes e um espaço menor para o código de operação que não fosse importante. As codificações não apenas levam a compiladores e montadores complexos, que têm de gerar formatos estranhos, mas também a microprogramações complicadas que têm de desmembrar os formatos durante sua execução. Este enfoque geralmente leva a programação a ser mais eficiente, porém a compilação mais complicada. A instrução MOVE é a mais importante em qualquer programada e sua codificação utiliza o 1, com tamanho de campo 1 igual a byte, 2 igual a palavra longa e 3 igual a palavra, e com dois campos de operandos de seis bits. O campo de operando

129

130

Organização e Arquitetura de Computadores

possui um modo de três bits e um campo de registrador de três bits. Em algumas instruções com formatos e deslocamento com rotação, há uma variante no formato de oito, com uma constante de deslocamento CONTADOR com uma parte de instrução e outra no formato de cinco, onde temos o número de deslocamento que é especificado em um registrador. Já os formatos sete e nove existem porque grandes estudos vêm mostrando que, na maioria das constantes que aparecem nos programas, são de pequeno valor. O de sete permite que uma constante de oito bits seja carregada em um único registrador e em uma única instrução de dezesseis bits já o formato de nove permite que um número na faixa de um a oito seja adicionado ou subtraído com eficiência de um operando. Para que possamos adicionar o nove a um registro, utilizamos uma instrução ADDI no formato treze, juntamente com uma palavra de dezesseis bits extra, para que seja armazenada a constante nove. PENTIUM II Quando temos formatos de instrução no Pentium II, temos uma variedade de instruções, pois apenas o campo de código de operação está presente em todos os seus formatos. As instruções contém de zero a quatro prefixos de intruções operacionais, código de operação de um ou dois bytes, campo de endereço opcional, que consiste no byte Mod r e no byte Scale Index, um campo opcional de operando imediato e um deslocamento. Os bytes de prefixo possuem um prefixo de instrução que, caso esteja presente, poderá ser o prefixo LOCK. Este prefixo é utilizado para assegurar o uso da memória compartilhada em ambiente de multiprocessamento. A seleção de registrador

Tema 4 | A Interface do Hardware

de segmento é responsável por especificar o registrador de segmento que deverá ser usado na execução da instrução. O tamanho de endereço, o processador poderá endereçar de 16 a 32 bits, pois o prefixo de tamanho de endereço é quem indica se deve utilizar um tamanho diferente do padrão. POWER PC As instruções do PowerPC possuem um tamanho de 32 bits e têm um formato regular. Em sua formatação os seis primeiros bits são aqueles que identificam a operação que será efetuada. Na maioria das instruções em operações de aritmética e ponto flutuante, inclui um bit, que irá indicar o resultado de cada operação e que deverá ser anotado no registrador. Essa característica é muito útil no processamento de previsão de desvio. Quando temos as instruções de ponto flutuante os mesmos possuem três campos para três registradores fontes, sendo que em muitos casos só são utilizados apenas dois registradores. Em algumas instruções que envolvem a multiplicação com dois registradores fontes com a colocação de um terceiro registrador. A colocação dessa instrução composta se deve à frequência com que são utilizadas.

131

132

Organização e Arquitetura de Computadores

INDICAÇÃO DE LEITURA COMPLEMENTAR MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro você poderá verificar mais informações sobre instruções em linguagem de máquina no capítulo 1. TANENBAUM, Andrew S. Organização estruturada de computadores. 5. ed. Rio de Janeiro: Prentice Hall, 2006. Neste livro você poderá verificar mais informações sobre instruções em linguagem de máquina no capítulo 1.

PARA REFLETIR Um formato de instrução é quem determina a disposição de bits da instrução. Para que possamos melhorar o nosso conhecimento vamos colocar em fórum no Ava como é o formato de instrução do VAX.

Tema 4 | A Interface do Hardware

4.2 Modos de Endereçamento Um conjunto de registradores numerados em uma CPU constitui uma memória de alta velocidade e define um espaço de endereçamento. São comuns as instruções que especificam um, dois ou três endereços. São denominadas de acumulador as máquinas que fazem aritmética com um endereço apenas e um registrador especial. Exemplo de uma instrução para adição com o conteúdo do endereço m de uma palavra de memória: •

acumulador:= acumulador + memória [m] Quando temos instruções com dois endereços de soma como fonte e outro como destino a fonte é somada ao destino.



destino:= destino + fonte Quando temos instruções com três endereços são especificadas duas fontes e um destino, onde as duas fontes são adicionadas e armazenadas no destino.

ENDEREÇAMENTO IMEDIATO Os operandos imediatos são aqueles que são especificados na instrução propriamente dita, onde o campo do operando contém o que será de fato usado em conjunção com a operação especificada na instrução. Quando temos o endereçamento imediato não existe uma referência extra à memória para buscar o operando, como desvantagem de restringir o operando a um número que possa caber em um campo de endereçamento. No 68000 algumas instruções permitem constantes de 8 a 16 bits, sendo que no 68020 todos

133

134

Organização e Arquitetura de Computadores

os três comprimentos são permitidos em qualquer lugar. As instruções especiais como ADDI, ADDQ permitem instruções imediatas.

ENDEREÇAMENTO DIRETO O endereçamento direto é igual ao endereço contido na instrução, ou seja, o operando está na memória e é especificado no campo do endereço. As CPUs da INTEL possuem endereçamento direto, os modelos 8088 e o modelo 80286 utilizam endereços diretos de 16 bits, já o modelo 80386 utiliza 16 bits nos modos real e virtual com segmentos de 16 bits em modo protegido. Quando temos o modo protegido de 32 bits, os endereços diretos são de 32 bits.

Tema 4 | A Interface do Hardware

ENDEREÇAMENTO DE REGISTRADOR No modo registrador o campo endereço especifica um registrador do processador, e os operandos são os valores nos registradores. Uma página com 16 registradores e 65.536 palavras de memória possui, na realidade, dois espaços de endereçamento. Como neste caso existe menos registradores do que palavras de memória, então precisa-se de um endereço menor, e assim instruções de diferentes formatos são frequentemente utilizadas para operandos tipo registrador e operando do tipo memória. Assim, se temos uma instrução de registrador para cada instrução que endereçasse memória, então a metade dos códigos de operação seria para operandos do tipo memória e a outra metade para tipo registrador, pois seria necessário um bit no código do operando para designar qual o espaço de endereçamento a ser usado. Temos duas razões que nos mostra por que os registradores foram projetados com registradores. Na primeira os registradores são mais rápidos do que a memória principal e, na segunda, como eles são em pequeno número, são necessários apenas alguns bits para endereçá-los. A INTEL e a MOTOROLA possuem um amplo repertório de instruções que obtêm seus operandos de registradores e depositam o resultado em um registrador.

ENDEREÇAMENTO INDIRETO O endereçamento indireto é um modelo no qual o endereço é quem especifica qual palavra de memória contém não o operando, mas sim o endereço do operando.

135

136

Organização e Arquitetura de Computadores

Os processadores INTEL possuem endereçamento indireto via um registrador. Em alguns processadores são permitidos endereçamento indireto de múltiplos níveis. Neste modo de endereçamento, o apontador é utilizado para localizar uma palavra de memória que aponta para uma palavra de memória e assim por diante. Os endereçamentos direto, indireto, imediatos e indiretos de múltiplos níveis exibem uma certa progressão, pois o endereçamento imediato não necessita de quaisquer referências na memória, já o endereçamento direto requer uma referência de memória para buscar o operando. O endereçamento indireto, por sua vez, requer duas referências a memória, sendo uma para o apontador e a outra para o operando. E os endereçamentos indiretos de múltiplos níveis requerem pelo menos três referências na memória, sendo duas ou mais para apontadores e uma para o operando. Pontos importantes entre INTEL e MOTOROLA:



Intel: As unidades centrais de processamentos possuem endereçamento direto. Os 8088/80286 possuem endereços diretos de 16 bits, já o 80386 utiliza endereços diretos de 16 bits, possui segmentos de 16 bits no modo protegido e utiliza endereços diretos de 32 bits no seu modo protegido de 32 bits.



Motorola: No Motorola existem duas formas de endereçamento direto, a de 16 bits e a 32bits. As formas de endereçamento direto são indicadas no campo MODO de 3 bits, em que os operandos de instrução são aplicados.

Tema 4 | A Interface do Hardware

INDEXAÇÃO Embora alguns programas que modificam a si próprio tenham sido populares, isto é atualmente considerado uma má prática de se programar. Elas são difíceis de depurar e geralmente dificultam o compartilhamento de um programa entre vários usuários de um sistema de tempo compartilhado ou TIME SHARING SYTEM. O problema de se ter uma cópia pode ser resolvido através do endereçamento indireto, onde um registrador ou posição de memória é carregado com um endereço e o outro carregado com outro endereço. As instruções utilizam o MOVE que utiliza os dois endereços como apontador e depois que cada palavra foi copiada os apontadores para ele são incrementados de 1. Endereçamento Indexado

137

138

Organização e Arquitetura de Computadores

Os apontadores fazem parte dos dados e não fazem parte do programa, logo não serão compartilhados entre usuários simultâneos. Uma solução é a que poderíamos utilizar os registradores de índice, que possuem endereços com duas partes onde uma parte é o número de um registrado e a outra é uma constante. O endereço do operando é a soma da constante com o conteúdo do registrador de índice. A indexação também é utilizada para endereçar um campo com um deslocamento conhecido, em relação ao início de uma dada estrutura. Alguns algoritmos necessitam da execução de algumas operações sequenciais de estrutura de dados armazenados em posições consecutivas de memória. Exemplo:

B, B + 1, B + 2, ..., B + N – 1 QUANDO COPIADO NAS POSIÇÕES

C, C +1, C + 2,... C + N – 1 A Máquina POSSUI UMA INSTRUÇÃO

MOVE B,C O CONTEÚDO DE “B” VAI SER COPIADO PARA O CONTEÚDO “C”, PODER-SE-IA EXECUTAR ESTA INSTRUÇÃO, MODIFICAR A PRÓPRIA INSTRUÇÃO PARA MOVE B + 1, C + 1 CPUs MOTOROLA e INTEL possuem diversos modos de endereçamento que envolvem indexação.

Tema 4 | A Interface do Hardware

ENDEREÇAMENTO DE PILHA Já percebemos que as instruções de máquina são tão curtas quanto possível, ou seja, para que se possa economizar memória e tempo da CPU. A Pilha consiste em itens de dados armazenados em ordem consecutiva na memória. Sempre que o primeiro item é colocado na pilha é denominado fundo da pilha, e teremos associado a cada pilha um registrador ou palavra de memória que contém o endereço do topo da pilha, o que denominamos de Apontador da Pilha.

Uso da pilha para armazenar variáveis locais. (a) Enquanto A está ativo. (b) Após A ter chamado B. (c) Após B ter chamado C. (d) Após Ce B terem retornado e A ter chamado D

Os computadores orientados a pilha possuem uma instrução para inserir o conteúdo e uma posição de memória ou de um registrador na pilha. Essa instrução deve tanto incrementar o apontador de pilha quanto copiar o item. As instruções que não possuem endereços são utilizadas conjuntamente com uma pilha. Sendo assim, esta forma de endereçamento especifica que os dois operandos devem ser retirados da pilha, um após o outro, a operação executada e o resultado recolocado da pilha.

Utilização de uma pilha em aritmética

139

140

Organização e Arquitetura de Computadores

INDICAÇÃO DE LEITURA COMPLEMENTAR TANENBAUM, Andrew S. Organização estruturada de computadores. 5. ed. Rio de Janeiro: Prentice Hall, 2006. Neste livro, no capítulo 05, você encontrará mais detalhadamente sobre os endereçamentos. . Neste link você encontrará mais sobre os endereçamentos.

PARA REFLETIR No endereçamento direto o valor binário contido no campo operando da instrução vai indicar o endereço de memória, onde se localiza o dado, já o endereçamento indireto, o valor binário do campo operando vai representar o endereço de uma célula. Com essa explicação faça uma análise sobre o endereçamento direto e indireto criando um fórum no AVA e postando um comentário.

Tema 4 | A Interface do Hardware

4.3 Tipos de Instruções em linguagem de máquina As instruções convencionais de máquinas podem ser divididas aproximadamente em dois grupos: as de instruções de propósito geral e as instruções de propósito especial. As instruções de propósito geral podem ser usadas em várias aplicações, o que diferencia das aplicações especiais, que tem sua aplicações bem restritas. Quando temos um conjunto simples de instrução de máquina podemos implementar um comando apenas com três instruções com a seguinte sequência: 1. O registrador deve ser carregado na posição de memória. 2. Adicionar um conteúdo na posição de memória. 3. Armazenar o conteúdo na posição de memória. Acima, podemos verificar que uma instrução de alto nível pode requerer várias outras instruções de máquina. Isso é típico de uma relação entre a linguagem de máquina e a linguagem de alto nível. Quando temos uma linguagem de alto nível as operações são colocadas de maneira algébricas, se utilizando de variáveis, e na linguagem de máquina as operações são colocadas de maneira mais básica, tendo a movimentação de dados para o registrador. As instruções de máquinas possuem quatro tipos:

141

142

Organização e Arquitetura de Computadores

1. Processamento de dados: que engloba as instruções aritméticas e lógicas. 2. Armazenamento de dados: que são as instruções de memória. 3. Movimentação de dados: que são as instruções de entrada e saída. 4. Controle: que são as instruções de teste e desvio. As instruções aritméticas fornecem a capacidade para o processamento dos dados numéricos. As instruções lógicas vão operar sobre bits de uma palavra, sendo com bits e não com números, tendo a capacidade de processar qualquer outro tipo de dados que se deseje empregar. Essas operações são realizadas inicialmente com dados armazenados em registradores. Com isso devem existir instruções de memória para que se possam movimentar os dados entre a memória e os registradores. As instruções de entrada e saída são necessárias para que se possa transferir programas e dados para a memória e para que se possa transferir os resultados para o usuário do computador. As instruções de teste são necessárias porque são as que realizam os teste do valor de uma palavra de dados. As instruções de desvio servem para que seja feito um desvio na execução do programa corrente para uma nova instrução.

AS INSTRUÇÕES DE TRANSFERÊNCIA DE DADOS Quando temos instruções de transferência de dados precisamos colocar inicialmente que a cópia de dados de um lugar para outro é uma operação

Tema 4 | A Interface do Hardware

essência, pois entendemos por cópia como sendo a criação de um novo objeto, com suas características semelhantes ao original e a palavra transferência em instruções significa que um dado foi transferido para outro endereço, mas o original permaneceu no mesmo endereço de origem. O termo instruções de transferência de dados poderia até se chamar de duplicação de dados pelo motivo que descrevemos acima. Os dados podem ser armazenados em lugares diferentes. O que difere no modo em que as palavras são acessadas em três lugares comuns é uma palavra na memória específica, uma pilha ou um registrador. A pilha é mantida em dois locais específicos, na memória e no registrador especial, mas a maneira em que podemos acessá-la é diferenciada dos padrões de acesso à memória. As instruções precisam indicar de alguma maneira o modo e a quantidade de dados necessários para transferência, algumas instruções para que se possa mover uma quantidade de dados desde 1 bit até a memória inteira e, quando temos palavras com um tamanho fixo, o número de palavras a serem transferidas é especificado pela instrução.

OPERAÇÕES DIÁDICAS As operações diádicas são aquelas que combinam dois operandos para que possa produzir um único resultado. Na maioria das máquinas do nível 2 é visto esse tipo de operação, por conter instruções que realizam adição e subtração, o que é uma exceção nos microcomputadores com 8 bits, multiplicação e divisão que também é bastante comum. Em outras operações diádicas são incluídas as operações booleanas, tendo como característica

143

144

Organização e Arquitetura de Computadores

as suas 16 funções booleanas com duas variáveis, mas poucas máquinas de nível 2 possuem instruções para as 16 funções. Há três instruções que estão presentes na maioria das máquinas. São com AND, OR e EXCLUSIVE OR, já nas máquinas com tamanho fixo de palavra o AND calcula bit a bit os argumentos da palavra, obtendo um resultado também de uma palavra. O AND é muito utilizado na extração de bits de palavras, pois para extrair um caractere é feito um AND, na palavra contendo o caractere e uma constante que chamamos de máscara. O resultado que encontramos da operação é que o bit que não é necessário é trocado para 0. EXEMPLO: 10110111 10111100 11011011 10001011 A 00000000 11111111 11111111 00000000 B (máscara) ____________________________________ 00000000 10111100 11011011 00000000 A AND B Em operações com AND ele tende sempre a remover o número 1, pois nunca haverá mais números 1 no resultado do que qualquer lugar das operações. Um fato importante era que os primeiros computadores realizavam suas operações de ponto flutuante chamado de procedimento em software. Hoje alguns computadores que são projetados para projetos científicos possuem instruções de ponto flutuante no nível 2 para uma melhor velocidade.

Tema 4 | A Interface do Hardware

OPERAÇÕES MONÁDICAS As operações monádicas têm como característica fundamental ter um operando e produzir um único resultado. Nelas são especificados muito menos endereços que as operações diádicas. Sendo assim, são mais curtas em muitas das vezes. As instruções utilizadas para deslocar ou rodar um conteúdo de um palavra são úteis e frequentemente providas de formas diferenciadas. Os deslocamentos são operações em que o bit é removido para a direita ou para a esquerda, perdendo, assim, bit de deslocamento para fora da palavra. As rotações são os bits que são jogados para fora da palavra que reaparece em outro lado. Sendo assim, a diferença entre uma rotação e um deslocamento de 2 bits é mostrada abaixo. 00000000 00000000 00000000 01100011 A 00000000 00000000 00000000 00011000 A Deslocamento 11000000 00000000 00000000 00011000 A Rotação As unidades centrais de processamento Intel possuem instruções INC e DEC para soma e subtração. Já as unidades centrais de processamento do 680x0 possuem instruções gerais, como o ADDQ e o SUBQ, que somam e subtraem uma constante na faixa de 1 a 8.

INSTRUÇÕES DE CHAMADA DE PROCEDIMENTOS Um grupo de instruções que realiza uma tarefa e pode chamar várias partes de um programa chamamos de procedimentos. A sub-rotina geralmente é utilizada no lugar do procedimento, principalmente quando é um programa de linguagem de montagem. Quando um procedimento finaliza sua tarefa,

145

146

Organização e Arquitetura de Computadores

é preciso que ele retorne o comando. Sendo assim, o endereço retorna para o procedimento, de modo que ele saiba aonde deverá retornar. O endereço de retorno pode ser colocado em três lugares essenciais: na memória, no registrador ou na pilha, sendo que uma das piores situações seria a colocação em uma única posição na memória. Uma pequena melhora haveria se a instrução de chamada de procedimento armazenasse o endereço de retorno na primeira palavra do procedimento, desde que a primeira instrução executável estivesse na segunda palavra. Sendo assim, o procedimento poderia retornar saltando indiretamente para a primeira palavra. Um procedimento também pode chamar outros procedimentos, pois cada procedimento, possui um espaço para um endereço de retorno. Quando um procedimento se chama e este falha é porque o primeiro endereço de retorno será destruído na segunda chamada. Quando um procedimento chama a si próprio denominamos de recursão, que é muito importante para os programadores. Se quisermos, ainda, melhorar o procedimento, podemos solicitar que a instrução de chamada de procedimento coloque o seu endereço de retorno em um registrador, tendo como responsabilidade o seu armazenamento, poderá requerer o endereço e se o procedimento for recursivo ele terá que colocar o retorno em algum lugar diferente cada vez que for chamado. E a melhor coisa a se fazer para instrução de chamada de procedimento é fazer um endereço de retorno e colocá-lo numa pilha.

Tema 4 | A Interface do Hardware

147

CONTROLE DE LOOP Quando temos a necessidade de um grupo de instruções executar um número fixo de vezes repetidamente, algumas máquinas possuem instruções para facilitar este processo, pois todo o processo é envolvido por um contador que a cada passo é incrementado ou decrementado de certa maneira a fazer um loop. Este contador é testado cada vez no loop. Se uma condição for atingida o loop será encerrado. Um loop com um teste no final sempre será realizado uma vez. As famílias de processadores possuem uma instrução que primeiro testa os códigos de condição para uma outra condição, passando pelo loop. Se o loop for V, (verdadeiro), se esta condição for F, (falso) o registrador ele será decrementado e se o resultado for >=0, o loop será repetido, ou então o loop será encerrado e a instrução seguinte será executada. Exemplo de um LOOP: X:=1; 1: { temos aqui o primeiro comando } { temos aqui o segundo comando } { temos aqui o terceiro comando } . . . {comando final } X:= x +1; If X<=N then goto 1; 2: {neste ponto será realizado o primeiro comando após o loop}

148

Organização e Arquitetura de Computadores

INDICAÇÃO DE LEITURA COMPLEMENTAR TANENBAUM, Andrew S. Organização estruturada de computadores. 5. ed. Rio de Janeiro: Prentice Hall, 2006. Neste livro você encontrará mais detalhadamente sobre as instruções em linguagem de máquina no capítulo 5. MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Neste livro você encontrará mais detalhadamente sobre as instruções em linguagem de máquina no capítulo 8.

PARA REFLETIR As operações monádicas são aquelas que têm um operando e produzem um resultado. Neste caso elas são mais curtas que as operações diádicas. Com essa informação coloque no ambiente AVA sua opnião sobre as operações monádicas e diádicas.

Tema 4 | A Interface do Hardware

4.4 Noções de Programação em Assembly Assembly, traduzida para o português, significa conjunto. Na área de informática significa uma linguagem de construção de programas, uma linguagem de montador. O Assembly é uma linguagem que se diferencia das linguagens Pascal, pois não passa por um compilador e sim por um montador. O montador traduz a linguagem de baixo nível enquanto que o compilador traduz linguagem de alto nível. Os programas em Assembly tem como características que cada instrução representa uma instrução em linguagem de máquina, ou seja, a relação entre instruções Assembly e Código de Máquina é de 1 para 1. O processo de montagem se dá em dois momentos. O primeiro deles é a geração do código objeto. Este código já é a tradução do programa, mas em blocos separados. O segundo passo é a tradução propriamente dita, gerando o código objeto. Após a geração do código objeto é necessário acionar o ligador, que é responsável por conectar todos os arquivos objetos e gerar um arquivo único com todos os programas. POS DS.W 1 ; Busca 0 na sequencia de inteiros SRCH0 MOVEA.L #DATUM,A0; (DATUM) definido alhures MOVE.L #DATUM,D0; guarda início CLR.W D1 LOOP CMP.W (A0)+,D1 BNE LOOP SUB.L A0,D0 MOVE.W D0,POS RTS END (código de um típico programa assembly)

149

150

Organização e Arquitetura de Computadores

Entretanto, o assembly é utilizado no mercado em algumas áreas. Por exemplo, os programas escritos em assembly conseguem maior velocidade e tamanho reduzido, superando a capacidade dos melhores compiladores.

LINGUAGEM DE MONTAGEM As principais diferenças entre as linguagens simbólicas como as usadas para os processadores hipotéticos RAMSES e CESAR e o montador comercial como o MASM são: •

Possibilidade de declaração e uso de labels. As labels são usadas para designar variáveis como instrução. Um label corresponde a uma posição de memória e substitui um endereço, seja este de operação ou de desvio.



Existência de diretivas do montador.

Um montador não gera código executável e não deve ser confundido com conjunto de instruções de um processador, pois temos as diretivas, que são apenas comandos para informar ao montador algumas opções do programador e para facilitar a escrita do programa. Um montador é apenas um programa. Podem existir vários tipos de montador de diferentes arquitetura. Os montadores para uma mesma arquitetura aceita o mesmo mnemônico para as instruções de máquina, porém podem apresentar diferenças significativas quanto à quantidade e à aplicação de pseudoinstruções. Colocaremos algumas diretivas do montador MASM neste capítulo. Um montador assembler utiliza basicamente dois formatos de linha:

Tema 4 | A Interface do Hardware

LINHA DE INSTRUÇÃO LINHA DE DIRETIVA Uma linha de instrução contém um mnemônico de uma instrução e vai gerar uma instrução de máquina. Tem o formato que apresenta vários campos. Uma linha de diretiva possui o formato como abaixo: Nome diretiva operandos; comentário O nome não é seguido de “:”

FIM DO PROGRAMA FONTE Sua diretiva é representada por ; END Sua função indica para o montador o fim do programa. Essa diretiva deve ser usada no fim do programa. Seu formato: END [label-name] A informação contida em label-name é opcional e indica ao montador o label da primeira instrução do program a ser executado. Se não for fornecida, o montador assume a execução a partir da primeira instrução; Exemplo: . ;DECLARAÇÃO DE VARIÁVEIS START . ;... . ; PRIMEIRA INSTRUÇÃO . ; END START ; FIM DO PROGRAMA FONTE A diretiva END poderá aparecer com diferentes

151

152

Organização e Arquitetura de Computadores

terminações (ENDIF, ENDM, ENDP, ENDS). O END sempre determina o fim de um trecho do programa fonte.

TIPOS DE DADOS PARA O MONTADOR O montador reconhece três tipos de dados: as constantes, as variáveis e as labels. A constante é um nome associado a um número, sem qualquer atributo. As variáveis identificam os objetos manipuláveis e formam os operandos para instrução de manipulação de dados como (MOV, ADD, AND, MUL ...). As labels identificam principalmente o código ou instrução que formam os operandos das instruções de saltos condicionais, saltos incondicionais e chamada de subrotina. As labels estão associadas a três atributos: 1. SEGMENTO 2. DESLOCAMENTO DENTRO DO SEGMENTO 3. TIPO OU DISTÂNCIA.

DEFINIÇÃO DE NOME E NÚMERO Os nomes de variáveis, labels, constantes, segmentos e procedure seguem as seguintes regras: 1. Nomes podem usar letras, dígitos e os seguintes caracteres: ? @ _ $ 2. O primeiro caractere de um nome não pode ser um dígito; 3. Nomes podem ter qualquer comprimento, mas o montador só vai considerar os primeiros 31 caracteres; 4. Nomes reservados não podem ser utilizados.

Tema 4 | A Interface do Hardware

Os números podem ser especificados em binário, decimal e hexadecimal. Os números devem sempre iniciar por um dígito de 0 a 9. 1. Para números decimais basta utilizar de 0 a 9; 2. Para números binários, devem-se utilizar os números 0 a 9 e as letras A a F, e acrescentar um H no final do número.

DEFINIÇÕES DE CONSTANTES A constante é um número sem atributo e sem nenhuma posição reservada na memória. Nomes podem ser associados a constantes através da diretiva equate. • Diretiva: EQU • Função: ela associa um nome a uma constante sem ter que reservar espaço. • Formato: [name] EQU valor Exemplo: LEOPOLDO EQU 33 ; LEOPOLDO representa o valor 33 SIMONNE EQU 25 ; SIMONNE representa o valor 25 GIOVANNA EQU 10; GIOVANNA representa o valor 10

DEFINIÇÃO DE ESPAÇO PARA VARIÁVEIS (DB, DW,DD) Diretiva: DB, DW, DD Função: Tem com função reservar um espaço para variável. DB reserva um byte DW reserva dois bytes DD reserva quatro bytes

153

154

Organização e Arquitetura de Computadores

Formato: [variable-name] DB valor inicial/duplicação [variable-name] DW valor inicial/duplicação [variable-name] DD valor inicial/duplicação

Exemplo de um programa em linguagem ASSEMBLY: Programa TASM da Borland: ;nome do programa: one.asm ; .model small .stack .code mov AH,1h ;Função 1 do DOS int 21h ;lê caracter e retorna código ASCII ao registrador AL mov DL,AL; move o código ASCII para o registrador DL sub DL,30h ;subtrai de 30h para converter a um dígito de 0 a 9 cmp DL,9h ;compara se o dígito está entre 0 e 9 jle digit1 ;se verdadeiro obtém o primeiro número (4 bits) sub DL,7h ;se falso, subtrai de 7h para converter a uma letra A-F digit1: mov CL,4h ;prepara para multiplicar por 16 shl DL,CL ;multiplica para converter dentro dos 4 bits mais altos int 21h ;obtém o próximo caracter sub AL,30h ;repete a operação de conversão cmp AL,9h ;compara o valor 9h com o conteúdo do registrador AL

Tema 4 | A Interface do Hardware

jle digit2 ;se verdadeiro, obtém o segundo dígito sub AL,7h ;se falso, subtrai de 7h digit2: add DL,AL ;adiciona o segundo dígito mov AH,4Ch ;função 4Ch do DOS (exit) Int 21h ;interrupção 21h End ;finaliza o programa

Este programa lê dois caracteres e os imprime na tela.

INDICAÇÃO DE LEITURA COMPLEMENTAR Weber, Raul Fernando, Fundamentos de arquitetura de computadores. 3. ed. Porto alegre: Instituto de informática da UFRG, 2004. [neste livro você terá mais informações sobre Assembly] http://pt.wikipedia.org/wiki/Assembly [Neste link você tem uma definição sobre Assembly}

PARA REFLETIR Um montador é uma ferramenta indispensável para o desenvolvimento de um programa que deve acessar os recursos de arquitetura de um processador. Tente, junto ao seu professor, bolar um pequeno programa em Assembly e poste no AVA, para uma eventual discussão.

155

156

Organização e Arquitetura de Computadores

RESUMO Neste tema pudemos aumentar o nosso conhecimento lendo sobre a interface do hardware nos seus respectivos assuntos. Destacamos o estudo das formas de instruções com seus critérios de projeto, alguns exemplos de formato de instrução e, por último, pudemos ver também um pouco sobre endereçamento, os tipos de instruções e sobre a linguagem de programação Assembly.

Tema 4 | A Interface do Hardware

Referências TANENBAUM, Andrew S. Organização estruturada de computadores. 5. ed. Rio de Janeiro: Prentice Hall, 2006. MONTEIRO, Mário A. Introdução à organização de computadores. 4. ed. Rio de Janeiro: LTC, 2001. STALLINGS, William. Arquitetura e organização de computadores. 5. ed. São Paulo: Prentice-Hall, 2002. WEBER, Raul Fernando. Fundamentos de arquitetura de computadores. 3. ed. Porto alegre: Instituto de informática da UFRG, 2004. SICA, Carlos. Sistema Automáticos com microcontoladores 8031/8051. São Paulo: Novatec, 2006.

157

158

Organização e Arquitetura de Computadores

Anotações

Organização e Arquitetura de Computadores

Anotações

159

160

Organização e Arquitetura de Computadores

Anotações

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES 53

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Série Bibliográfica Unit

Related Documents


More Documents from "Milton Goldstar"