Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Arquitetura de Computadores-UAB, Notas de estudo de Matemática

Disciplina Arquitetura de Computadores

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 17/12/2010

leonardo-delgado-11
leonardo-delgado-11 🇧🇷

4.8

(12)

18 documentos

1 / 64

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40

Pré-visualização parcial do texto

Baixe Arquitetura de Computadores-UAB e outras Notas de estudo em PDF para Matemática, somente na Docsity!

    1. EVOLUÇÃO E ARQUITETURAS DOS COMPUTADORES pág.
  • 1.1- Evolução dos computadores
  • 1.1.1- Computadores eletrônicos – 1ª Geração
  • 1.1.2 - Computadores transistorizados – 2ª Geração........................................................................................................
  • 1.1.3 - Computadores com circuitos integrados – 3ª Geração
  • 1.1.4 - Últimas gerações
  • 1.2 -Arquiteturas de computadores
  • 1.2.1 - Máquinas von Neumann
    1. A Unidade Central de Processamento - CPU.......................................................................................
  • 2.1 - Estrutura e funcionamento da CPU...............................................................................................................................
  • 2.2 - Evolução da CPU
  • 2.3 - Coprocessador aritmético e memória cache
  • 2.4 - Modo Real x Modo Protegido
  • 2.4.1 Memória Virtual
  • 2.4.2 - Multitarefa...........................................................................................................................................................................
  • 2.4.3 -Memória Protegida
  • 2.5 - Clock
  • 2.6 - Pipeline de instruções
  • 2.7 - Arquiteturas CISC e RISC
    1. Memórias...............................................................................................................................................
  • 3.1- Memórias primárias
  • 3.1.1 - Memória RAM
  • 3.1.2 - Memória cache
  • 3.1.3 - Memória ROM
  • 3.1.4 - Memória de configuração CMOS................................................................................................................................
  • 3.1.5 - Registradores
  • 3.2 - Memórias secundárias
  • 3.1.2 - Disco rígido.........................................................................................................................................................................
  • 3.2.2 - Disquetes
  • 3.2.3 - Fita magnética
  • 3.2.4 - Discos óticos.......................................................................................................................................................................
  • 3.2.5 - Pen drives
  • 3.2.6 - Cartões de memória
    1. Periféricos do computador
  • 4.1 - Dispositivos de entrada
  • 4.1.1 - Teclado
  • 4.1.2 - Mouse
  • 4.1.3 - Scanner
  • 4.1.4 - Leitor Ótico
  • 4.1.5 - Microfone
  • 4.2 - Dispositivos de saída
  • 4.2.1 - Monitor de Vídeo
  • 4.2.2 - Impressoras
  • 4.2.3 - Plotters
  • 4.2.4 - Speakers...............................................................................................................................................................................
    1. Outros componentes do computador
  • 5.1 - Barramentos
  • 5.1.1- Barramento AGP
  • 5.1.2 - Barramento PCI
  • 5.1.3 - Barramento ISA
  • 5.1.4 - Barramento USB................................................................................................................................................................
  • 5.1.5 - Barramento Firewire
  • 5.1.6 - Slots de expansão e adaptadores...............................................................................................................................
  • 5.2 - Portas de comunicação
  • 5.2.1 - Portas seriais e paralelas
  • 5.2.2 - Portas PS/2
  • 5.2.3- Comunicação com transmissão sem fio....................................................................................................................
  • 5.3 Cooler
  • 5.4 - Placa – Mãe
  • 5.5 - Chipset
  • 5.6 - Fonte de Alimentação
    1. Sistemas numéricos
  • 6.1 - Sistema numérico decimal
  • 6.2 - Sistema numérico binário.................................................................................................................................................
  • 62.1 - Representação de Números Inteiros
  • 6.2.2 - Negação em complemento de dois
  • 6.2.3 - Adição em binário
  • 6.2.4 - Subtração em binário
  • 6.2.5 - Multiplicação em binário
  • 6.2.6 - Divisão em binário
  • 6.3 - Sistema numérico hexadecimal
  • 6.4 - Conversão de bases
  • 6.4.1 - Decimal-binário
  • 6.4.2 - Hexadecimal – Binário
  • 6.4.3 - Binário - Hexadecimal
  • 6.4.4 - Qualquer base para a decimal
  • 6.4.5 - Decimal - Hexadecimal...................................................................................................................................................

1. EVOLUÇÃO E ARQUITETURAS DOS COMPUTADORES

Este capítulo mostra um breve histórico da evolução dos computadores. Também serão estudadas as arquiteturas que serviram de base para dá origem a maioria das arquiteturas dos computadores atuais.

1.1- Evolução dos computadores

A evolução dos computadores tem sido caracterizada pelo aumento da velocidade dos processadores, pela diminuição do tamanho dos componentes, pelo aumento da capacidade de memória e pelo aumento da capacidade e da velocidade dos dispositivos de entrada e saída (E/S).

Um dos fatores responsáveis pelo grande aumento da velocidade dos processadores é a diminuição do tamanho dos componentes dos microprocessadores; isso acarreta a redução da distância entre os componen- tes e, consequentemente, o aumento da velocidade. Entretanto, os ganhos reais de velocidade obtidos nos úl- timos anos são devido, principalmente, a mudanças na organização do processador, incluindo o uso intensivo de pipeline^1 e de técnicas de execução paralelas de instruções^2.

É comum classificar os computadores em geração, de acordo com a tecnologia básica de hardware empregada. Cada nova geração é caracterizada por computadores com maior velocidade, maior capacidade de memória e menor tamanho que os computadores da geração anterior. Nas subseções seguintes serão apre- sentadas as características e computadores que marcaram as principais gerações de computadores.

1.1.1- Computadores eletrônicos – 1ª Geração

Essa geração é caracterizada pelo uso da tecnologia a válvula

O Projeto ENIAC (Computador e integrador Numérico Eletrônico – Electronic Numerator, Integrator, Analyzer, and Computer), desenvolvido na Universidade da Pensilvânia entre 1943 e 1946 foi o primeiro com- putador eletrônico de propósito geral.

O projeto foi uma resposta às necessidades dos Estados Unidos diante da guerra. O Laboratório de Pesquisas Balísticas do Exército Americano, órgão responsável por desenvolver tabelas de trajetória e alcance para as novas armas, vinha encontrando dificuldades em obter essas tabelas com precisão e tempo hábil. Sem elas as novas armas de artilharia seriam inúteis. O Laboratório empregava mais de 200 pessoas que, utilizando calculadoras de mesa, resolviam as equações de balísticas. A preparação das tabelas para uma única arma consumia várias horas de trabalho de uma pessoa, até mesmo dias.

Esse computador, desenvolvido por John W. Mauchly, J. Presper Eckert e equipe. Pesava cerca de 30 toneladas, ocupava o espaço de aproximadamente 140 metros quadrados, continha mais de 18 mil válvulas^3 e apresentava um consumo de 140 quilowatts de energia elétrica. Essa máquina era muito mais rápida (^1) Técnica de hardware na qual o ciclo de busca-decodificação-execução de instruções é dividido em etapas processadas simultaneamente. Essas instruções são colocadas em uma fila de memória (dentro da CPU) onde aguardam o momento de serem executadas. Essa técnica é utilizada para acelerar a velocidade de operação da CPU, uma vez que a próxima instrução a ser executada está normalmente armazenada dentro da CPU e não precisa ser buscada da memória, normalmente muito mais lenta que a CPU. (^2) Computação paralela é uma forma de computação em que vários cálculos são realizados simultaneamente, operando sob o princípio de que grandes problemas geralmente podem ser divididos em problemas menores, que então são resolvidos concorrentemente (em paralelo). (^3) Válvula é um tubo de vidro do qual foi praticamente tirado todo o gás, criando um ambiente de vácuo, contendo eletrodos e grades metálicas, cuja finalidade é controlar o fluxo de elétrons. As válvulas transformam sinais elétricos em zeros e uns. É um dispositivo que conduz corrente elétrica em um só sentido

armazenado antes da conclusão do EDVAC. Tais máquinas incluem:

- Manchester Baby Machine , da Universidade de Manchester (Inglaterra), de junho de 1948, por M. Newman e F.C.Williams; - EDSAC (Electronic Delay Storage Automatic Calculator), da Universidade de Cambridge (Inglaterra), de maio de 1949, por Maurice Wilkes; - BINAC (Binary Automatic Computer), da Eckert-Mauchly Computer Corporation (EMCC), operacional em Setembro de 1949; - UNIVAC (Universal Automatic Computer), da Remington Rand Co. (que incorporou a EMCC), com a primeira unidade operacional em março de 1951; - Whirlwind , do MIT por Jay Forrester, projetado como o primeiro computador para aplicações tempo- real. O Whirlwind tornou-se a base para projetos de minicomputadores; - IBM 701 , voltado para aplicações científicas, foi o primeiro computador eletrônico da IBM (dezembro 1952); - IBM 650 Magnetic Drum Computer , apresentado como o modelo barato da IBM, anunciado em 1953. Essa máquina foi a base para o modelo IBM 1401 (transistorizado, anúncio em outubro de 1959, entrega no início de 1960).

1.1.2 - Computadores transistorizados – 2ª Geração

A primeira mudança nos computadores veio com a substituição da válvula pelo transistor.

O transistor é menor, mais barato e dissipa menos calor do que a válvula e, assim como uma

válvula, também pode ser utilizado para a construção de computadores.

Ao contrário da válvula, que requer o uso de fios, placas de metal, cápsula de vidro e vácuo, o transistor é um dispositivo de estado sólido feito de silício.

O transistor foi desenvolvido no Bell Labs em 1947, e iniciou uma revolução na indústria eletrônica nos anos 50. Entretanto, apenas no final da década de 50, computadores totalmente transistorizados tornaram-se comercialmente disponíveis.

Os computadores dessa geração tornaram-se confiáveis o suficiente para serem fabricados e vendidos para clientes com a expectativa de que continuariam a funcionar por tempo suficiente para realizar algum tra- balho útil. Essas máquinas eram guardadas em salas especiais com ar condicionado. Somente grandes corpo- rações ou importantes órgãos do governo ou universidades podiam arcar com seu preço (na casa dos milhões de dólares).

Sem sistema operacional muito tempo era perdido entre o término de uma tarefa e o início de outra. Quando em execução, uma tarefa detinha todo o controle da máquina. As funções de um Sistema Operacional de primeira geração evoluíram da necessidade de liberar o programador dos aspectos físicos da máquina.

A série IBM7000 marcou a entrada da IBM no mercado de computadores transistorizados. Uma das ca- racterísticas inovadoras nesses produtos era a utilização de processadores de entrada e saída (I/O Processors). As características genéricas destes primeiros computadores transistorizados incluíam memórias a núcleo de ferrite e tambores magnéticos, linguagens de programação de alto nível, o FORTRAN, e o conceito de sistemas de computadores.

O desenvolvimento de várias dessas máquinas contribuiu para a organização do sistema que hoje es- tão presentes em muitos computadores. Memória virtual foi introduzida no sistema Atlas (Inglaterra, 1962); o conceito de uma família de sistemas com periféricos compatíveis foi introduzido com o IBM System360 (1964).

O uso de transistores criou a segunda geração de computadores.

1.1.3 - Computadores com circuitos integrados – 3ª Geração

Durante a década de 50 e início dos anos 60, os equipamentos eletrônicos eram compostos basica- mente de componentes discretos – transistores, resistores, capacitores e assim por diante. Esses componentes eram fabricados separadamente, encapsulados em seus próprios recipientes e soldados ou ligados com fios, por meio de uma técnica conhecida como wire-up, às placas de circuito, que eram então instaladas nos com- putadores, osciloscópios e outros equipamentos eletrônicos. Quando um dispositivo eletrônico requeria um transistor, um pequeno tubo de metal com uma peça de silício tinha de ser soldado a uma placa de circuito. O processo completo de fabricação, desde o transistor até a placa de circuito era caro e incômodo.

Isso começava a criar problemas na indústria de computadores. Os computadores do início da segunda geração continham cerca de 10 mil transistores. Esse número cresceu até centenas de milhares, tornando cada vez mais difícil a fabricação de máquinas novas, mais poderosas.

Em 1958, foi desenvolvida uma nova técnica que revolucionou os equipamentos eletrônicos

e iniciou a era da microeletrônica: a invenção do circuito integrado. Esse circuito caracteriza a

terceira geração de computadores.

Por volta de 1965, a IBM anunciou o computador IBM 360, construído nos USA, totalmente transistoriza- do e tinha uma capacidade de memória base de 32K bytes. O IBM 360 era uma série de máquinas compatíveis ao nível de software. Como todas as máquinas tinham a mesma arquitetura e conjunto de instruções, progra- mas escritos para uma máquina podiam executar em todas as outras (pelo menos na teoria). A memória era construída com toros de ferrite (óxido de ferro). É o primeiro computador IBM a utilizar 8 bits para codificação de caracteres e a palavra byte assume então o significado que ainda hoje tem. Com 8 bit era possível codificar 256 estados diferentes o que era suficiente para a codificação dos 10 algarismos, 52 letras (maiúsculas e minús- cula) do alfabeto, o espaço, 27 símbolos e 166 caracteres especiais. É o primeiro computador IBM que podia ser comandado a partir da digitação de caracteres numa máquina de escrever. Ao IBM 360 podiam ser acoplados leitores/perfuradores de cartões de 80 colunas, unidades de fi ta magnética, e uma impressora de caracteres que dispunha de uma cadeia metálica.

A década de 1970 foi marcada pela utilização de circuitos integrados em larga escala; pelo minicompu- tador, com extenso uso de circuitos em chips; pelos dispositivos de memória dinâmica de 1 Kbit e 4 Kbit (1974) e pelos microprocessadores Intel 8086 (1978), de 16 bits e Motorola 68000 (1979), de 16/32 bits. Algumas funções específicas, como unidades de gerência de memória (MMU) e co-processadores aritméticos, passaram também a ser implementados em hardware.

Em 1971 a IBM lança o “disco flexível” um disco plástico de oito polegadas recoberto com óxido de ferro. Niklaus Wirth cria, em 1971, uma linguagem simbólica, o PASCAL tendo em vista o ensino das técnicas de pro- gramação e dá origem à técnica de Programação Estruturada. Basic foi uma linguagem originalmente criada para o aprendizado e teve seu uso bastante reduzido já na década de 70.

1.1.4 - Últimas gerações

A partir da terceira geração de computadores, existe um menor consenso sobre a definição das demais gerações de computadores. Com a introdução de integração em grande escala (Large-Scale Integration - LSI), mais de mil componentes podem ser colocados em uma única pastilha de circuito integrado. A integração em escala muito grande (Very-Large-Scale Integration - VLSI) atingiu mais de 10 mil componentes por pastilha, e as pastilhas VLSI atuais podem conter mais de 100 mil componentes.

Com o rápido avanço da tecnologia, a introdução significativa de novos produtos e a importância do

A CPU (unidade central de processamento), por sua vez, tem três blocos principais: unidade de controle (UC), unidade lógico-aritmética (ALU) e registradores, incluindo-se aí um registrador contador de programa (PC) que indica a posição da instrução a executar.

São características das máquinas von Neumann a utilização do conceito de programa armazenado, a execução seqüencial de instruções e a existência de um caminho único entre memória e unidade de controle (Figura 1.3).

Figura 1.3- Arquitetura de máq uinas von Neumann.

Durante sua operação, a execução de um programa é uma seqüência de ciclos de máquina von Neu- mann, compostos 2 subciclos:

  1. Busca da instrução (fetch): transfere instrução da posição de memória apontada por PC para a CPU.
  2. Execução da instrução : a unidade de controle decodifica a instrução e gerencia os passos para sua execução pela ALU.

O computador IAS tinha um total de 21 instruções que podem ser agrupadas como a seguir:

- Transferência de dados : os dados são transferidos entre a memória e os registradores da ULA ou entre dois registradores da ULA. - Desvio incondicional : normalmente a unidade de controle executa as instruções na sequência em que se encontram na memória. Essa sequencia de instruções pode ser alterada por uma instrução de desvio. Isto é usado para executar sequências de instruções repetidamente. - Desvio condicional : o desvio é efetuado dependendo do teste de uma condição, o que permite a introdução de pontos de decisão. - Aritmética : operações executadas pela ULA. - Alteração de endereço : possibilita calcular endereços, utilizando a ULA, para então inseri-los em instruções armazenadas na memória. Isto permite ao programa uma considerável flexibilidade de endereçamento.

Problemas com a Arquitetura de Von Neumann:

  • Há apenas um barramento de dados e um de endereço.
  • As Instruções e os dados ocupam o mesmo endereçamento de memória.
  • As Instruções e os dados trafegam pelo mesmo barramento (barramento de Dados).

A UNIDADE CENTRAL DE PROCESSAMENTO  CPU

2.1 - Estrutura e funcionamento da CPU

Um equívoco ocorre ao chamar o gabinete do microcomputador, seja ele em formato vertical ou hori- zontal, de CPU. O mais correto é chamá-lo mesmo de gabinete.

A sigla CPU vem do inglês Central Prossessing Unit – Unidade Central de Processamento,

para designar o componente ou o conjunto de componentes do computador responsável pela

execução das instruções dos programas.

Nas máquinas de primeira e segunda geração, as CPUs eram implementadas em circuitos de grandes dimensões, utilizando milhares de válvulas ou transistores. A partir dos anos 70, com o aparecimento do circui- to integrado, as CPUs puderam ser implementadas completamente num chip, denominado a partir de então de microprocessador, nome até hoje utilizado e que incorpora, em sua família, exemplares como o Pentium e o Power PC entre outros menos populares, mas nem por isso menos poderosos.

Para entender a organização da CPU, devemos considerar as ações que ela deve executar:

Busca de instrução : a CPU lê uma instrução da memória.

Interpretação de instrução : a instrução é decodificada para determinar a ação requerida.

Busca de dados : a execução de uma instrução pode requerer leitura de dados da memória ou de um módulo de E/S.

Processamento de dados : a execução de uma instrução pode requerer efetuar uma operação aritmé- tica ou lógica sobre os dados.

Escrita de dados : os resultados da execução podem requerer escrever dados na memória ou em um módulo de E/S.

  • O Registrador de instrução (IR) : contém a última instrução buscada.
  • O Contador do Programa: (“Program Counter” - PC) : é um registrador que armazena o endereço de memória do início da próxima instrução a ser executada.
  • O Registrador de endereçamento à memória (MAR) : contém o endereço de uma posição de memória. - Registrador de armazenamento temporário de dados (MBR) : contém uma palavra de dados a ser escrita na memória ou a palavra lida mais recentemente.

A Figura 2.1 ilustra os caminhos de transferência de dados e sinais de controle, o que inclui um elemen- to denominado barramento interno da CPU. Esse elemento é necessário para transferir dados entre os vários registradores e a ULA, uma vez que esta última apenas opera sobre dados localizados na memória interna da CPU. A figura mostra ainda os elementos básicos típicos de uma ULA.

Note a semelhança entre a estrutura interna do computador como um todo e a estrutura

interna da CPU. Em ambos os casos, existe uma pequena coleção de elementos importantes

(computador: CPU, E/S, memória; CPU: unidade de controle, ULA, registradores), conectados por

caminhos de dados.

2.2 - Evolução da CPU

Apesar de o processador ser o componente mais importante do micro, já que é ele quem processa quase todas as informações, ele não é necessariamente o maior responsável pelo desempenho. Na verdade, dependendo da aplicação à qual o micro se destina, o desempenho do processador pode ser menos impor- tante que a quantidade de memória RAM, que o desempenho da placa de vídeo 3D, ou até mesmo que o desempenho do disco rígido.

Tenha em mente que o computador é um conjunto, cada componente depende dos demais para mos- trar o seu potencial. Dizemos que um micro é tão rápido quanto seu componente mais lento. Como estamos falando de um conjunto, apenas um componente que apresente um baixo desempenho será suficiente para colocar tudo a perder. Assim como vemos em outras situações, em um carro, por exemplo, onde um simples pneu furado pode deixar o carro parado na estrada.

Se o micro tiver pouca memória RAM, por exemplo, o sistema operacional será obrigado a usar memória virtual, limitando a performance ao desempenho do disco rígido, que é centenas de vezes mais lento que ela. Caso o micro não possua memória cache, o desempenho ficará limitado ao desempenho da memória RAM, que é muito mais lenta que o processador e por aí vai. Dizemos neste caso, que o componente de baixo de- sempenho é um gargalo, pois impede que o conjunto manifeste todo o seu potencial. Às vezes, simplesmente aumentar a quantidade de memória RAM, operação que custa relativamente pouco, é capaz de multiplicar a velocidade do micro.

Mas, apesar de tudo, o processador ainda é o componente básico de qualquer computador. Com o avanço cada vez mais rápido da tecnologia, e várias empresas disputando o mercado, os projetistas vem sendo obrigados a desenvolver projetos cada vez mais ousados a fim de produzir os processadores com o melhor de- sempenho. Isso é excelente para nós, mas também pode trazer armadilhas, já que com projetos tão diferentes, cada processador acaba saindo-se bem em algumas aplicações, mas muito mal em outras. Não dá para julgar o desempenho do processador apenas pela frequência de operação, como fazíamos na época do 486.

Quando vamos comprar um processador, a primeira coisa que perguntamos é qual sua frequência de operação, medida em Megahertz (MHz) ou milhões de ciclos por segundo, frequência também chamada de clock. Acontece, que nem sempre um processador com uma velocidade de operação mais alta é mais rápido

do que outro que opera a uma frequência um pouco mais baixa. A frequência de operação de um processador indica apenas quantos ciclos de processamentos são realizados por segundo, o que cada processador é capaz de fazer em cada ciclo já é outra história.

Imagine um processador 486 de 100 MHz, ao lado de um Pentium também de 100 MHz. Apesar da frequência de operação ser a mesma, o 486 perderia feio em desempenho. Na prática, o Pentium seria pelo menos 2 vezes mais rápido. Isto acontece devido a diferenças na arquitetura dos processadores e também no coprocessador aritmético e cache.

Existem muitos tipos de microprocessadores no mercado, podendo-se encontrar grandes variações tanto no custo como no desempenho de cada um. As principais diferenças entre os tipos de microprocessado- res estão relacionadas ao:

  • Tamanho da palavra;
  • Velocidade;
  • Quantidade operações que ele suporta

Um parâmetro importante é o tamanho da palavra processada pela unidade lógica e aritmética, lem- brando que o sistema de numeração adotado nas arquiteturas de computadores é o binário, o qual tem como unidade básica de informação o bit, que pode assumir os valores 0 ou 1.

Quanto maior o tamanho da palavra manipulada pelo microprocessador, maior é o seu potencial de cálculo e maior a precisão das operações realizadas. As primeiras CPUs integradas num único chip, como por exemplo, o 4004 fabricado pela Intel em 1971 manipulava palavras (dados e instruções) expressas por 4 dígitos binários. Os microprocessadores mais recentes são capazes de manipular palavras entre 32 bits (caso dos 486) e 64 bits (Pentium e Power PC). A Figura 2.2 ilustra exemplos de microprocessadores.

Figura 2.2 - Processadores: Pentium III, Pentium 4 (Socket 423), Pentium 4(Socket 478), Athlon.

A velocidade de cálculo está diretamente relacionada com a freqüência do relógio que pilota o circuito da CPU como um todo. O microprocessador Intel 4004 era movido por um clock de freqüência igual a 108 KHz, enquanto hoje fala-se em microprocessadores com clocks de GHz.

Ainda relacionada com a ULA, é possível destacar a quantidade de operações que ela suporta. Os primeiros processadores suportavam um conjunto relativamente modesto de operações lógicas e aritméticas. Em particular, no que diz respeito às operações aritméticas, os primeiros processadores suportavam apenas operações de adição e subtração, sendo que as demais operações tinham de ser implementadas através de se- qüências destas operações básicas. Os processadores suportando um conjunto mais complexo de instruções surgiram graças à adoção da tecnologia CISC (Complex Instruction Set Computer).

Embora não seja um aspecto visível ou perceptível internamente, é importante destacar que

o aumento do potencial de cálculo de um computador só foi incrementado devido à evolução

da microeletrônica que tem oferecido técnicas de integração capazes de encapsular uma

quantidade cada vez maior de transistores por unidade de área.

nado. Esta cópia do BIOS é chamada de “Shadow”, ou sombra, e serve para aumentar o desempenho geral do sistema. A memória superior também é usada para armazenar sombras dos BIOS de outros dispositivos, como placas de vídeo, aumentando também a velocidade de operação destes periféricos.

Apesar de existirem 640 Kbytes de memória convencional, pronta para ser usada por qualquer progra- ma que opere em modo real, nem toda esta memória fica disponível, já que parte dela é usada pelo MS-DOS e drivers de dispositivos de modo real. É possível liberar mais memória convencional, editando os arquivos de inicialização do DOS, conseguindo assim rodar estes programas.

Quando o computador é ligado, o processador está operando em modo real. Quem dá o comando para que ele mude para o modo protegido é o sistema operacional. No caso do Windows, este comando é dado durante o carregamento do sistema.

Em modo protegido, o processador é capaz de reconhecer toda a RAM instalada no sistema, além de incorporar recursos como a multitarefa e a memória virtual em disco. É neste modo que usamos a interface gráfica do Windows e rodamos seus aplicativos.

O modo protegido traz basicamente três novos recursos: memória virtual, multitarefa, proteção de me- mória.

2.4.1 Memória Virtual

A capacidade de trabalhar com vários aplicativos ao mesmo tempo (multitarefa) é realmente muito útil, mas esta característica traz um pequeno problema: abrindo vários aplicativos sucessivamente, logo a memória RAM do sistema se esgota. Para corrigir este problema, o modo protegido traz também a Memória Virtual

A memória virtual, que permite criar um arquivo temporário no disco rígido, chamado de Swap File, ou arquivo de troca, que funciona como uma extensão da memória RAM, permitindo abrir quantos aplicativos forem necessários, até que o espaço do disco rígido se esgote.

Por exemplo, só o Windows 2000 Professional, junto com os serviços básicos ocupa cerca de 40 MB de memória. Se você abrir o Word 97, serão necessários mais 10 Megabytes, um total de quase 50 MB. Caso o micro em questão possua apenas 32 MB de memória, seria criado um arquivo temporário de 18 MB no disco rígido, que armazenaria os dados que não couberam na memória RAM.

O problema em usar memória virtual é que o disco rígido é centenas de vezes mais lento do que a me- mória RAM. Um disco rígido razoável possui um tempo de acesso em torno de 10 milessegundos (milésimos de segundo) enquanto um módulo de memória PC-100 possui um tempo de acesso inferior a 10 nanossegundos (bilionésimos de segundo), ou seja, um tempo de acesso um milhão de vezes menor. Em termos de taxa de transferência, novamente temos um contraste marcante: 800 MB para o módulo de memória e de 5 a 20 MB (dependendo do modelo) para o disco rígido.

No Windows 3.x, era necessário reservar uma quantidade espaço do disco rígido para a memória virtual, quantidade que podia ser configurada livremente através do Painel de Controle. O problema é que este espaço ficava indisponível. Se você possuísse um disco de 800 MB, e reservasse 200 para a memória virtual, ficaria com apenas 600 MB para instalar programas e guardar arquivos. Se por outro lado, você reservasse pouco espaço para a memória virtual, ficaria com pouca memória para abrir vários programas e trabalhar com arquivos gran- des.

A partir do Windows 95 este problema foi resolvido com a adoção de um arquivo de troca dinâmico, que vai aumentando ou diminuindo de tamanho conforme a necessidade de memória, evitando o desperdício de espaço em disco que tínhamos no Windows 3.x. A partir do Windows 95, existe também uma administração mais racional dos recursos do sistema, movendo os arquivos mais importantes, acessados com mais frequência para memória RAM (ou memória cache, dependendo da importância do arquivo), e deixando apenas arquivos

usados mais raramente no arquivo de troca. Esta simples medida diminui bastante a perda de desempenho causada pelo uso da memória virtual.

2.4.2 - Multitarefa

Multitarefa significa executar mais de uma tarefa de cada vez. Do ponto de vista de um computador este processo é relativamente simples. Todos os aplicativos são carregados na memória e o processador passa a executar algumas instruções de cada aplicativo por vez. Como o processador é capaz de executar vários mi- lhões de instruções por segundo, esta troca é feita de maneira transparente, como se os aplicativos estivessem realmente sendo executados ao mesmo tempo. Enquanto o processador dá atenção para um aplicativo, todos os demais ficam paralisados, esperando sua vez.

2.4.3 -Memória Protegida

Usando a multitarefa, quase sempre teremos vários aplicativos carregados na memória, seja na memó- ria RAM ou no arquivo de troca. Se não houvesse nenhum controle por parte do processador, um aplicativo po- deria expandir sua área de memória, invadindo áreas de outros aplicativos e causando travamentos no micro.

Um editor de imagens, por exemplo, precisa ocupar mais memória conforme as imagens vão sendo abertas ou criadas. Sem nenhuma orientação por parte do processador, simplesmente seriam ocupadas as áreas adjacentes, que poderiam tanto estar vazias, quanto estar ocupadas pelo processador de textos, por exemplo.

Para colocar ordem na casa, foi desenvolvido o recurso de proteção de memória, que consiste no pro- cessador isolar a área de memória ocupada por cada aplicativo, impedindo que ele ocupe outras áreas ao seu bel prazer. Se, por acaso, o programa precisar de mais memória, o próprio processador irá procurar uma área vazia de memória e ordenar ao aplicativo que ocupe a área reservada.

2.5 - Clock

Clock é um sinal usado para sincronizar coisas dentro do computador. Observe a Figura 2.3, onde mos- tramos um típico sinal de clock: é uma onda quadrada passando de “0” a “1” a uma taxa fixa. Na Figura 2.3 você pode ver três ciclos de clock (“pulsos”) completos. O início de cada ciclo é quando o sinal de clock passa de “0” a “1”; nós marcamos isso com uma seta. O sinal de clock é medido em uma unidade chamada Hertz (Hz), que é o número de ciclos de clock por segundo. Um clock de 100 MHz significa que em um segundo existem 100 milhões de ciclos de clock.

Figura 2.3 - Sinal de clock

No computador, todas as medidas de tempo são feitas em termos de ciclos de clock.

Por exemplo, uma memória RAM com l atência “5” significa que vai levar cinco ciclos de clock completos para começar a transferência de dados. Dentro da CPU, todas as instruções precisam de um certo número de ciclos de clock para serem executadas. Por exemplo, uma determinada instrução pode levar sete ciclos de clock para ser completamente executada.

No que diz respeito ao processador, o interessante é que ele sabe quantos ciclos de clock cada instrução vai demorar, porque ele tem uma tabela que lista essas informações. Então se há duas instruções para serem executadas e ele sabe que a primeira vai levar sete ciclos de clock para ser executada, ele vai automaticamente começar a execução da próxima instrução no 8º pulso de clock. É claro que esta é uma explicação genérica

roupas continuará levando 2 horas para ser realizada. Entretanto, podemos iniciar a lavagem de um cesto de roupas a cada 30 minutos, até que tenhamos 4 cestos sendo lavados simultaneamente, um em cada etapa do “pipeline”. Depois das primeiras 2 horas, teremos um cesto de roupa lavada a cada 30 minutos. Ao final do dia teremos lavado muito mais cestos de roupa do que sem o uso de “pipeline”.

(a) Visão simplificada

(b) Visão expandida

Figura 2.4 – Pipeline de instruções de dois estágios

Suponha que o processamento de uma instrução é dividido em dois estágios: busca e execução de instrução. Existem momentos durante a execução d e uma instrução em que a memória principal não está sendo usada. Esse instante pode ser usado para buscar a próxima instrução, em paralelo com a execução da instrução corrente. A Figura 2.4(a) representa essa abordagem. A pipeline tem dois estágios independentes. O estágio busca uma instrução e armazena em uma área de armazenamento temporário. Quando o segundo estágio está livre, o primeiro passa para ele a instrução. Isso é chamado de busca antecipada de instrução ou superposição de busca. Note que o processo acelera a execução da instrução. Se os estágios de busca e de execução tiverem a mesma duração, o número de instruções executadas por unidade de tempo será dobrado. Entretanto se examinarmos essa pipeline, Figura 2.4(b), veremos que essa duplicação da taxa de execução de instruções será pouco provável por duas razões:

  • O tempo de execução geralmente é maior que o tempo de busca, pois a execução de uma instrução geralmente envolve leitura e armazenamento de operandos e execução de algumas operações.
  • A ocorrência de instrução de desvio condicional faz com que o endereço da próxima instrução a ser buscada seja desconhecido. Nesse caso, o estágio de busca teria de esperar até receber o endereço da próxima instrução do estágio de execução. O estágio de execução poderia, então, ter que esperar enquanto a próxima instrução é buscada.

Para reduzir o tempo perdido com a ocorrência de instruções de desvio, o tempo perdido pode ser reduzido pela seguinte regra: quando uma instrução de desvio condicional é passada do estágio de busca para o de execução, o estágio de busca obtém na memória a instrução imediatamente seguinte à instrução de desvio. Então se não ocorrer desvio, nenhum tempo será perdido. Se ocorrer desvio, a instrução buscada deve ser descartada, sendo buscada uma nova instrução.

Para conseguir maior desempenho, um pipeline deve ter maior número de estágios, como:

  • S1: Unidade de busca de instrução;
  • S2: Unidade de decodificação de instrução;
  • S3: Unidade de busca de operando;
  • S4: Unidade de execução de instrução;
  • S5: Unidade de gravação.

Figura 2.5 – Pipeline de cinco estágios executando 9 instruções

Um pipeline de cinco estágios, conforme Figura 2.5, pode reduzir o tempo de execução de 9 instruções de 45 para 13 unidades de tempo. Suponhamos que o tempo de ciclo desta máquina é de 2 ns (nano segun- dos), sendo assim uma instrução levaria 10 ns para percorrer todos os 5 estági os do pipeline. Como uma ins- trução demora 10 ns, parece máquina poderia funcionar em 100 MIPS (milhões de instruções por segundo). Como a cada 2 ns uma instrução é concluída, temos então uma velocidade real de processamento de 500 MIPS (tempo do ciclo X quantidade de estágios que executam simultaneamente).

São características dos pipelines de instrução:

  • O tempo do ciclo do relógio do processador deve ser igual ou maior que o tempo de execução do estágio mais lento do “pipeline”.
  • Deve-se procurar dividir a execução da instrução em estágios com o mesmo tempo.
  • O pipeline deve ser mantido sempre “cheio” para que o desempenho máximo seja alcançado.
  • De um modo geral, com o uso do pipeline, cada instrução ainda leva o mesmo tempo para ser executada.
  • Algumas instruções, contudo, podem ter o seu tempo de execução aumentado, pois atravessam estágios em que não realizam nenhuma operação útil.
  • Problemas no uso de pipelines