capítulo 1: histórico e organização dos computadores · a literatura atual pára a...

27
1 Capítulo 1: Histórico e Organização dos Computadores A Humanidade tem usado ao logo de sua história uma variedade de “ferramentas para apoio computacional”, tais como ábacos, tabelas, réguas de cálculo, calculadoras e, mais recentemente, computadores. As principais razões residem em duas limitações humanas: velocidade de cálculo e taxa de erros. 1. Operações matemáticas elementares tais como multiplicação e divisão podem demandar vários segundos ou minutos, se feitas manualmente. A solução de problemas que requeiram milhares ou milhões destas operações não poderia ser feita em tempo e custo razoáveis sem o auxílio de computadores. 2. Fatores como distração, fadiga, tensão, etc, estão entre as causas comuns de erros por parte dos seres humanos, principalmente em tarefas repetitivas, requerendo procedimentos elaborados de controle para a execução confiável destas tarefas. As máquinas são, por outro lado, sob condições razoáveis, imunes a erros. A Matemática antes dos Computadores: As Tabelas de Prony. Em 1794 cem pessoas, sob o comando de G. F. Prony e patrocínio do governo francês, foram incumbidas do cálculo manual de várias tabelas de números naturais, incluindo tabelas de logarítmos para números entre 1 e 200.000 com 19 casas decimais de precisão. A tarefa que incluia também tabelas para funções trigonométricas, demandou 2 anos, sendo cada resultado calculado duas vezes, por pessoas diferentes, para minimizar a ocorrência de erros. O resultado final, apenas para os logaritmos, foram tabelas que continham um total de 8 milhões de dígitos decimais. Para reduzir os custos, a maior parte da equipe era composta por pessoas que sabiam apenas executar operações de adição e subtração, supervisionadas por um pequeno time de matemáticos. Hoje, uma calculadora científica é capaz de fornecer qualquer dos dados das tabelas trigonométricas e de logarítmos, ainda que com precisão menor, em Segundos.

Upload: duongnhu

Post on 06-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

1

Capítulo 1: Histórico e Organização

dos Computadores

A Humanidade tem usado ao logo de sua história uma variedade de “ferramentas para apoio computacional”, tais como ábacos, tabelas, réguas de cálculo, calculadoras e, mais recentemente, computadores. As principais razões residem em duas limitações humanas: velocidade de cálculo e taxa de erros.

1. Operações matemáticas elementares tais como multiplicação e divisão podem demandar vários segundos ou minutos, se feitas manualmente. A solução de problemas que requeiram milhares ou milhões destas operações não poderia ser feita em tempo e custo razoáveis sem o auxílio de computadores.

2. Fatores como distração, fadiga, tensão, etc, estão entre as causas comuns de erros por parte dos seres humanos, principalmente em tarefas repetitivas, requerendo procedimentos elaborados de controle para a execução confiável destas tarefas. As máquinas são, por outro lado, sob condições razoáveis, imunes a erros.

A Matemática antes dos Computadores: As Tabelas de Prony.

Em 1794 cem pessoas, sob o comando de G. F. Prony e patrocínio do governo francês, foram incumbidas do cálculo manual de várias tabelas de números naturais, incluindo tabelas de logarítmos para números entre 1 e 200.000 com 19 casas decimais de precisão. A tarefa que incluia também tabelas para funções trigonométricas, demandou 2 anos, sendo cada resultado calculado duas vezes, por pessoas diferentes, para minimizar a ocorrência de erros. O resultado final, apenas para os logaritmos, foram tabelas que continham um total de 8 milhões de dígitos decimais. Para reduzir os custos, a maior parte da equipe era composta por pessoas que sabiam apenas executar operações de adição e subtração, supervisionadas por um pequeno time de matemáticos. Hoje, uma calculadora científica é capaz de fornecer qualquer dos dados das tabelas trigonométricas e de logarítmos, ainda que com precisão menor, em Segundos.

2

A principal ferramenta de cálculo da atualidade é o computador. Desde seu surgimento, os computadores têm apresentado um desenvolvimento vertiginoso mesmo se comparados a outros ícones da sociedade industrial como, por exemplo, os automóveis. Apesar disso, os conceitos em que as máquinas atuais se baseiam remontam à década de 40, ou até ao século XIX. As chamadas gerações de computadores têm sido pautadas por avanços tecnológicos mais do que pela introdução de novos conceitos e modelos computacionais, conforme descrito a seguir.

História dos Computadores O primeiro projeto de um computador de propósito geral de que se tem notícia foi a “Máquina Analítica” de Charles Babbage (1792-1871), um engenho mecânico cuja concepção estava completa por volta de 1840. Até então, como visto na Tabela 1, apenas calculadoras mecânicas1 haviam sido projetadas por:: Wilheim Schickhard (1592-1635), na Universidade de Tübingen; Blaise Pascal (1623-1662); Gottfried Leibniz (1646-1716); D. E. Felt (1862-1930); e o próprio Babbage, com a “Máquina de Diferenças”.

Tabela 1: Cronologia das primeiras calculadoras mecânicas.

DATA INVENTOR CARACTERÍSTICAS

1623 Schickhard adição e subtração

1642 Pascal adição e subtração com “vai-um” automático

1671 Leibniz adição, subtração, multiplicação e divisão

1834 Babbage solução de polinômios por diferenças finitas.

1885 Felt uso de teclado para dados e comandos

A máquina analítica de Babbage é considerada a precursora dos computadores atuais por envolver alguns conceitos ainda hoje em uso e por não ser restrita a aplicações dedicadas. A máquina de Babbage operava com dados decimais de 50 dígitos em notação de ponto fixo (embora fosse contemporâneo de Boole e DeMorgan, não houve influência destes no projeto da máquina analítica, fato que talvez explique o não uso de representação binária por Babbage), podendo armazenar até 1.000 destes dados. Uma soma ou subtração consumia um segundo enquanto que multiplicações e divisões eram feitas em um minuto, sendo o resultado das computações impresso em cartões perfurados. A estrutura interna da máquina, vista na Figura 1, previa além da memória para dados, unidades aritmética e de controle, e recursos de E/S. A unidade aritmética possuia operação em paralelo, com lógica de “carry” e indicação de “overflow”. A operação era controlada através de dois tipos de cartões perfurados:

1 Nesta época já eram usados instrumentos manuais de cálculo como o ábaco, desenvolvido na babilônia por volta de 2.000 AC; e a régua de cálculo, criada em 1621 por Oughtred, com base em trabalhos anteriores do matemático escocês J. Napier.

3

1. Cartões operacionais controlavam a execução de uma dentre as quatro operações aritméticas básicas (uma operação por cartão).

2. Cartões de variáveis selecionavam locais da memória para os operandos e resultados. Constantes eram introduzidas através de cartões ou por inserção manual em contadores internos.

Os algoritmos e a linguagem de programação usados foram desenvolvidos por Ada Augusta Byron, que se tornou desta forma a primeira programadora, tendo criado a primeira linguagem de montagem. São características da linguagem criada por Ada o modo de endereçamento indexado para variáveis e o uso de um registrador de índice para o controle de execução de laços, além de permitir o aninhamento destes.

Embora tendo características re-volucionárias para a época, o projeto da máquina analítica foi recebido com ceticismo por seus contemporâneos, não tendo sido nunca implementadoa totalmente, devido a dificuldades técnicas.

As Gerações de Computadores A construção dos primeiros computadores ocorre apenas no século XX, a partir de pesquisas iniciadas na década de 30 por Alan Turing, Maurice Wilkes e F. C. Williams (Inglaterra); John Atanasoff, Howard Aiken, Wallace Eckert, J. W. Mauchly, John von Neumann, e Herman Goldstein (EUA); e Konrad Zuse (Alemanha), entre outros. Nesta época as pesquisas para a criação de um computador não eram mais feitas de forma isolada e com recursos próprios, por matemáticos ou engenheiros, sendo conduzidas em universidades e institutos de pesquisa, já que o computador era visto, por muitos governos, como um meio de obtenção de supremacia tecnológica e militar. A deflagração da Segunda Guerra Mundial levou a um rápido avanço no setor, com o desenvolvimento e uso de computadores para cálculos de criptografia e balística.

A partir deste ponto devido a rápida evolução dos computadores, com mudanças importantes ocorrendo no espaço de uma ou duas décadas, costuma-se dividir a história do seu desenvolvimento em “gerações”, em função das tecnologias de hardware e software dominantes em cada época, e das evoluções ocorridas em arquitetura. O detalhamento desta classificação, feito a seguir, baseia-se em [1,2,3,4], não sendo, entretanto, a única existente.

Figura 1: visão figurada dos módulos da Máquina Analítica de Babbage.

4

Considera-se que a primeira geração de computadores começa com a construção de computadores analógicos e digitais, a partir de 1938. São marcos desta fase, os computadores Z3, Mark I, ENIAC, EDVAC e EDSAC, todos da década de 40:

Uso de Ferramentas Computacionais para cálculos em larga escala: O censo americano de 1890.

Em 1880, o governo americano decidiu que o país seria recenseado a cada dez anos, a partir de 1890. Entretanto, com as técnicas existentes, estimava-se que o trabalho estatístico sobre os dados coletados levaria mais de 10 anos para ser feito! Herman Hollerith engenheiro e funcionário do departamento de censo, propôs um sistema para manipulação automática dos dados através de uma máquina para tabulação de cartões perfurados. Aplicando-se o sistema de Hollerith, os dados referentes aos 62 milhões de americanos foram processados em menos de 2 meses. Em 1896 Hollerith fundou a “Tabulating Machine Company”, mais tarde transformada, pela fusão com outras empresas, na “Computing-Tabulating-Recording Company”. Esta companhia foi rebatizada em 1924 para “International Business Machine Company (IBM)”.

• Em 1941 Konrad Zuze do “Technische Hochschule” (Alemanha), construiu o Z3, possivelmente o primeiro Computador Eletromecânico de propósito geral. O Z3 usava aritmética binária de ponto flutuante, armazenando até 64 palavras de 22 dígitos, com os cálculos sendo feitos através de 2.600 relés. Apesar do Z3 ser similar a “Máquina Analítica”, aparentemente Zuze não conhecia os trabalhos de Babbage. O governo alemão da época recusou-se a financiar o projeto a pesquisa foi interrompida.

• Em 1944 surge o Mark I, um computador eletromecânico construido pela IBM com base nas idéias propostas por Howard Aiken (1900-73), físico de Havard. O Mark I usava aritmética decimal, podendo armazenar até 72 números de 23 dígitos e realizar um produto em 3 segundos. Era similar a Máquina de Babbage, sendo programado via fita de papel perfurado. O protótipo do Mark I funcionou em Havard por 15 anos, estando operacional por 95% do tempo.

• As máquinas eletromecânicas limitavam a velocidade do processamento, tendo sido sucedidas pelos computadores eletrônicos. Em 1946 John Mauchly e Presper Eckert construíram na “Moore School” da Universidade da Pensilvânia o ENIAC (“Electronic Numerical Integrator and Calculator”). O projeto foi financiado pelas forças armadas americanas para ser usado em cálculos balísticos. O ENIAC tinha 18.000 válvulas, 1.500 relés, 20 posições de memória de 10 dígitos decimais cada, fazendo uma soma em 200 micro-segundos e um produto em 3 mili-segundos, sendo ainda capaz de ler até 800 cartões por minuto, consumindo 150kW. O uso de válvulas em computadores foi baseado nos trabalhos de John Atanasoff da Universidade Estadual de Iowa, que construíra com

5

Clifford Berry, em 1939, uma máquina eletrônica para solução de equações lineares chamada ABC (“Atanasoff and Berry Computer”).

• Em 1945 John von Neumann (1903-57), consultor do projeto ENIAC, propôs o EDVAC (“Electronic Discrete VAriable Computer”), o primeiro Computador de Programa Armazenado. O EDVAC, terminado em 1952, já sem a presença de von Neumann, usava aritmética binária e processava os dados serialmente.

• Devido a atrasos no projeto, o EDVAC não foi o primeiro computador de programa armazenado a ser construído. Em 1949, Maurice Wilkes da Universidade de Manchester (Inglaterra) apresentou o EDSAC (“Electronic Delay Storage Automatic Calculator”), baseado nos princípios propostos pelo grupo da “Moore School”.

Ao final desta fase estava sedimentado o modelo básico de um computador digital, visto na Figura 2, composto de três módulos dedicados: o processador usado para a execução dos programas, a memória para o armazenamento dos programas e dados, e as interfaces de entrada e de saída, para a comunicação com o usuário e outros equipamentos. Embora seja resultado dos esforços de muitos pioneiros, este modelo ficou conhecido como “Máquina de von Neumann” devido a ser John von Neumann quem primeiro propôs, em artigo, tal arquitetura.

Um sumário da evolução dos computadores em termos de gerações é visto na

Tabela 2. As gerações se sucedem a partir principalmente de avanços tecnológicos, demandados pela busca contínua por maior desempenho. Ao ser implantada uma nova tecnologia seu custo é alto, o que reflete-se no preço final dos equipamentos que a utilizam. Após esta fase ocorre uma queda gradual do preço até que a tecnologia atinja seu limite de evolução, a partir do qual o custo

Figura 2: Diagrama de blocos da Máquina de von Neumann.

6

de cada novo incremento em desempenho só é obtido as custas de investimentos crescentes. Neste ponto, em geral uma tecnologia é abandonada sendo substituída por outra, mais nova, que apresente uma curva de custo decrescente.

A literatura atual pára a classificação da evolução dos computadores na geração dos computadores de escala de integração ULSI, processamento paralelo em larga escala e de arquiteturas paralelas escaláveis. No entanto, podemos considerar que, a partir de 2000, tenha dado início a era da Internet e das comunicações móveis. No futuro próximo, os computadores terão todos seus periféricos sem fio (wireless), discos rígidos baseados em mídias óptico-magnéticas, monitores de cristal líquido, controle por voz, reconhecimento da escrita, reconhecimento de impressões digitais e os todos os palmtops terão acesso à Internet via tecnologia celular.

Por outro lado, as tecnologias do futuro apontam para a computação óptica, biológica e quântica. A tecnologia atual, baseada em transistores e que usa sinais elétricos e fios, deve durar pelo menos mais duas décadas, abrindo passagem para novas tecnologias, que possibilitarão a criação de computadores quânticos, baseados em átomos e energia.

Tabela 2: As gerações de computadores segundo a tecnologia , o software, e detalhes de arquitetura caracterísicos de cada fase.

GERAÇÃO TECNOLOGIA SOFTWARE ARQUITETURA

I (1938-54)

válvulas, relés. Linguagem de montagem, equipamento mono-usuário

Arquitetura seqüencial, aritmética

em ponto fixo

II (1952-64)

transistores, memórias de núcleo magnético, placas

de circuito impresso.

Linguagens de alto nível, sub-rotinas, processamento em

lote.

Processadores de E/S, registradores de índice, aritmética em

ponto flutuante.

III (1962-74)

circuitos integrados, memórias semiconduto-

ras, circuito impresso multi-camada

Multiprogramação, aplicações multi-usuário.

pipelining, microprogramas, memórias cache

IV (1972-90)

circuitos integrados LSI & VLSI.

Sistemas operacionais para processamento paralelo.

Processamento vetorial e paralelo

V (1991- ...)

escala de integração ULSI, circuitos integrados de

arseneto de gálio

Processamento paralelo em larga escala.

Arquiteturas paralelas escaláveis.

Essa mudança propiciará um salto tão grande que comparar um computador atual ao computador quântico seria o mesmo que comparar um ábaco a um supercomputador Cray.

7

Evolução dos Computadores Os caminhos da evolução dos computadores podem ser melhor entendidos se olharmos o processo sob duas formas distintas, como visto a seguir:

O Ponto de Vista da Aplicação O aumento de desempenho expandiu as áreas das aplicações dentro de quatro níveis ascendentes de abstração: dados, informação, conhecimento e inteligência, como visto na Figura 3.

• Dados podem ser números sob vários formatos, símbolos, etc, sendo caracterizados como objetos não relacionados entre si.

• Informação é uma coleção de dados relacionados entre si. O processamento de dados e de informação são a principal aplicação dos computadores.

• conhecimento é composto de itens de informação ao qual se atribui algum significado semântico. Exemplos de aplicações associadas com o processamento de conhecimento são os “sistemas especialistas” para diagnóstico médico, prospeção de petróleo, mineração, etc.

• A Inteligência seria derivada de coleções de itens de conhecimento. Não existem computadores que operem neste nível de abstração.

O Ponto de Vista Operacional Os computadores inicialmente executavam o processamento em lote (“batch”), onde cada usuário tinha seu programa executado completamente antes que o programa do usuário seguinte fosse iniciado.

Com o tempo percebeu-se que um programa em geral contém fases em que o acesso as interfaces de E/S é intenso enquanto que em outras o uso do processador é predominante. Tal distribuição da computação pode ser usada com vantagem se o computador dispõe de

8

“processadores de E/S”, os quais são processadores muito limitados que tratam exclusivamente do acesso aos periféricos enquanto o processador principal está executando o programa armazenado na memória., conforme visto no exemplo da figura 4, onde dois programas partilham o computador.

Seja o exemplo da figura 4, onde vemos dois programas, P1 e P2, em execução no computador. Em relação a figura, E1, C1 e S1 são fases do programa 1, referentes a operações predominantemente de Entrada, Computação e Saída respectivamente. E2, C2 e S2 representam as mesmas fases para o programa 2.

A figura4.a mostra a forma de execução em “batch”, a única possível até os fins dos anos 50. A possibilidade de dividir as tarefas entre o processador principal e os processadores de E/S, levou a multiprogramação exemplificada na figura 4b.

Na figura 4c vemos um tipo evoluído de multiprogramação desenvolvido a seguir, o “time-sharing”, onde os programas se revezam na posse do processador por intervalos de tempo definidos, sendo cada fase dividida em vários intervalos, facilitando o uso interativo do computador.

Modernamente, têm surgido computadores com múltiplos processadores principais que trabalham cooperativamente para a execução das tarefas, em um esquema conhecido como “processamento paralelo”. Cada processador se dedica a uma tarefa específica, comunicando-se

9

com os demais sempre que necessário. Um programa pode ser visto como sendo uma tarefa única ou um conjunto de várias tarefas, algumas obrigatoriamente executadas em seqüência e outras podendo ocorrer em paralelo.

Existem duas formas básicas de computadores paralelos: os multiprocessadores, com memória compartilhada, e os multicomputadores, com memória privativa. ambos vistos na figura 5.

Em um multiprocessador com memória compartilhada, todos os processadores (P1 a Pn), têm igual direito de acesso a qualquer dos módulos de memória (M1 a Mn). Nos multicomputadores, cada processador tem sua memória particular, sendo chamadas mensagens as informaçõeses de controle trocadas entre os processadores.

Classes de Computadores A evolução da relação custo-desempenho pode ser vista no gráfico da figura 6, onde vê-se o crescimento de desempenho das diferentes classes de computadores. nos últimos 25 anos. Nota-se que o custo tem se mantido para cada classe de máquina embora o desempenho esteja aumentando em torno de 20% ao ano (O desempenho aumenta 35% ao ano para os microcomputadores e estações de trabalho). A Separação dos computadores em classes originalmente obedecia um critério técnico, com cada classe apresentando um desempenho da ordem de 10 vezes maior que o da classe imediatamente inferior. Entretanto hoje o custo tornou-se o fator diferenciador primordial, pois o impacto dos desenvolvimentos em

microeletrônica, tecnologia de compiladores e de novas arquiteturas, têm sido desigual sobre as diversas classes. Além do custo e desempenho, as classes podem ser caracterizadas através de detalhes de concepção:

10

• Supercomputadores são projetados para aplicações que façam uso intensivo do processador.

• Um mainframe suporta um número bem maior de terminais e unidades de disco que um minicomputador.

• Estações de trabalho possuem vídeo teclado, mouse e software associado voltados a aplicações gráficas.

• Microcomputadores, ao contrario das estações não são originalmente projetados para desempenho máximo quando operados em rede, embora o façam.

11

Organização de Computadores Um computador sozinho não funciona. Na prática, um computador é parte de um sistema computacional, composto de: computadores, periféricos, programas, pessoas e outros itens de infraestrutura, tais como alimentação de energia elétrica, redes de comunicação, etc. Para distinguir estes componentes, eles são agrupados conforme suas características comuns:

- hardware : componentes físicos do sistema: computador, periféricos, infraestrutura.

- software : componentes lógicos do sistema (intangíveis): programas, documentação, projetos.

- dataware : informações processadas pelo software e armazenadas no hardware.

- peopleware: é o componente humano do sistema: desenvolvedores, usuários e suporte.

Um computador, na sua forma mais simples, consiste de três partes principais funcionalmente independentes: interfaces de entrada e saída, memória, e processador (composto internamente pelas unidades aritmética e lógica, e de controle, e por registradores), como ilustrado na figura 7.

F I G U R A 7 : U N I D A D E S F U N C I O N A I S D O C O M P U T A D O R

12

A interfaces de entrada recebem informação codificada de operadores humanos, de dispositivos eletromecânicos, ou de outros computadores conectados a ele através de linhas de comunicação. A informação é então, armazenada na memória para ser usada depois ou manipulada imediatamente pelos circuitos de aritmética e lógica, que executa as operações desejadas. Os passos do processamento são determinados por um programa armazenado na memória. Finalmente, os resultados são enviados de volta ao mundo exterior através da unidade de saída. Todas essas ações são coordenadas pela unidade de controle.

O Processador A CPU, Central Processing Unit, ou Unidade de Processamento Central, é responsável pelo gerenciamento de todas as funções do sistema, trabalhando em velocidades altíssimas.

CPU = velocidade medida em MIPS (Milhões de Instruções por Segundo)

Unidade Aritmética e Lógica

Na CPU a execução de muitas operações tem lugar na unidade aritmética e lógica (Aritmetic and Logic Unit - ALU).

Suponha dois números armazenados na memória e que devem ser somados. Eles são trazidos para a ALU onde a soma será realizada. O resultado pode então ser armazenado, de novo, na memória.

Unidade de Controle

As unidades fornecem as ferramentas necessárias para armazenar e processar a informação. As operações devem ser coordenadas e organizadas de alguma forma. A unidade de controle (Control Unit - CU) existe para isso. É o centro nervoso, usada para enviar sinais de controle para as outras unidades. Controla também a transferência de dados entre o processador e as memórias.

Uma impressora de linha imprimirá uma linha apenas se for instruída para fazê-lo. O processador executa uma instrução de "WRITE". O processamento desta instrução envolve o envio de sinais de temporização para e da impressora, que é função da unidade de controle.

13

As Memórias

F I G U R A 8 - E S T R U T U R A L Ó G I C A D A M E M Ó R I A .

Memória Principal

A memória, cuja estrutura lógica é vista na fig.8, é um ente passivo, onde são armazenados dados e instruções para uso pelo processador. O acesso à memória é garantido através de um mecanismo conhecido com endereçamento, pelo qual a cada item de informação armazenado em uma “posição” da memória, é associado um único identificador chamado “endereço”. Do ponto de vista do processador e E/S, a memória é estruturada, como um local onde as informações estão armazenadas em posições com endereços lineares e seqüenciais (ex: endereços 0, 1, 2,...). Como as memórias são usadas para armazenamento de números em binário, costuma-se medir o tamanho das posições, chamado “largura”, em termos do número de dígitos binários. Deste modo, uma memória que pode armazenar em cada posição oito dígitos binários possui uma largura de oito bits (bit = "binary digit"). A “profundidade” da memória nada mais é do que o número de posições que esta possui. Profundidade e largura da memória estão associadas com sua capacidade de armazenar informação. Quanto maior a largura mais dígitos podem ser armazenados por posição, e quanto maior a profundidade, mais itens de informação podem ser armazenados na memória. A informação armazenada em uma posição de memória. é chamada genericamente de “palavra”

Os programas e os dados que eles operam estão armazenados na memória principal (MP) do computador durante a execução. A velocidade de execução de instruções depende da velocidade em que os dados são transferidos para ou da MP. A MP dos computadores é organizada em locais de armazenamento. Cada local tem um endereço.

14

Em muitos computadores modernos, a MP física não é tão grande quanto ao espaço de endereçamento do qual a CPU é capaz. Quando um programa não está totalmente na MP, partes dele que não estão sendo executadas no momento, são armazenadas em dispositivos de armazenamento secundário, como os discos magnéticos. É claro que, ao ser executado, toda parte do programa tem que ser primeiro, trazido à MP. O programador não deve se preocupar com os detalhes das transferências: os computadores modernos têm meios automáticos para gerenciar essas operações.

Quando um programa tem trechos que são executados repetidamente, seria desejável que estes trechos estivessem armazenados numa memória mais rápida que a MP. Tal memória é chamada de memória cache (ou buffer). Ela é inserida entre a CPU e a MP, como mostrado na figura 3.3. Para este arranjo ser conveniente, é necessário que a memória cache seja bem mais rápida que a MP (de 5 a 10 vezes). Esta implementação é bem mais econômica que ter toda a MP com dispositivos de memória rápida.

F I G U R A 9 : U S O D A M E M Ó R I A C A C H E E N T R E A C P U E A M P .

Quando analisar um sistema, calcule qual a memória útil, que é a que estará disponível para a aplicação. Para chegar a memória útil deve-se subtrair da memória RAM a quantidade que será ocupada pelo sistema operacional e utilitários. O saldo poderá ser utilizado pelo aplicativo (programa e/ou dados).

Unidades de Medida Tanto para especificar a memória principal do equipamento como para indicar a capacidade de armazenamento, são usados múltiplos de bytes:

Sim-bolo

Pré-fixo

Unidade Potência de 2

Sim-bolo

Pré-fixo

Unidade Potência de 2

Ki Kibi KibiB = Kibibytes

210 Pi Pebi PiB = Pebibytes

250

Mi Mebi MiB = Mebibytes

220 Ei Exbi EiB = Exbibytes

260

Gi Gibi GiB = Gibibytes 230 Zi Zebi ZiB = Zebibytes

270

Ti Tebi TiB = Tebibytes 240 Yi Yobi YiB = Yobibytes

280

15

Antigamente, o sistema métrico de unidades de medidas empregava os mesmos prefixos para designar mil, milhão, bilhão, trilhão, etc, na base decimal (Leia: http://en.wikipedia.org/wiki/Binary_prefix). Entretanto em Informática, o valor que interessa é diferente, devido ao sistema de contagem ser binário e toda a estrutura de endereçamento estar baseada neste sistema, usa-se potências de 2 para a contagem:

210 = 1024 bytes = 1 KiB 220 = 1.048.576 bytes = 1 MiB, e assim por diante.

T A B E L A 3 . O R D E N S D E G R A N D E Z A D A S U N I D A D E S D E M E D I D A .

MEMÓRIA PRINCIPAL TÍPICO FAIXA Uma página normal datilografada

2 Kibytes 1 a 10 Kibytes

Dicionário completo (Aurélio) 24 Mibytes 10 a 50 Mibytes Enciclopédia completa 200 Mibytes 50 a 400 Mibytes Tecnolog ia de Construção de Memórias As memórias de semicondutores são disponíveis em uma larga faixa de velocidades (desde centenas de nanossegundos -10-9 segundos- até dezenas de nanossegundos). Quando introduzidas no final dos anos 60, elas eram bem mais caras que as memórias de núcleo magnético que acabaram substituindo. Por causa das vantagens da tecnologia VLSI (Very Large Scale Integration), o custo das memórias de semicondutores caiu bastante. Como resultado, elas são hoje usadas quase que exclusivamente na implementação de MPs.

A memória principal ou memória central é composta por dois tipos de circuitos:

a) Random Access Memory Memória de escrita e leitura usada para o armazenamento de dados e programas durante a operação da máquina. Perde seu conteúdo ao ser desligado o equipamento e o tempo de acesso para qualquer endereço é o mesmo. É subdividida em SRAM. ``Static RAM''. Memórias RAM que só perdem os dados ao se desligar a alimentação. DRAM. ``Dynamic RAM''. Ao contrário das SRAMs, uma DRAM perde seu conteúdo se este não for lido ou escrito de tempos em tempos, em geral a cada 2ms. Circuitos com memória dinâmica possuem além da lógica para controle de acesso, ``hardware'' dedicado para executar leituras automáticas de "refreshing'' nas posições não acessadas, evitando seu apagamento. As DRAMs são muito mais compactas e baratas que as SRAMs, sendo estas entretanto mais velozes.

b) Read-Only Memory. Memórias que só admitem acessos para leitura durante a operação. Têm como vantagem o fato de serem não voláteis, com o conteúdo se mantendo mesmo quando a energia é desligada. Além das ROMs existem as PROMs (`̀ Programmable ROMs'') e as EPROMs (``Erasable PROMs''). Para todos os tipos o conteúdo só pode ser gravado mediante um circuito especial que na maioria dos casos não faz parte do ``hardware'' do computador. As ROMs em geral vêm gravadas de fábrica e podem ser chamadas de “firmware” Elas contém instruções básicas de controle da placa-mãe e de operações de entrada e saída, chamada de BIOS (Basic Input-Output System). PROMs são ROMs que podem ser gravadas pelo usuário e as EPROMs são PROMs que podem ser apagadas, mediante exposição `a luz ultravioleta, para posterior re-gravação.

16

Existem ainda as EEPROM ou E2PROM, que são apagáveis eletricamente, as Flash EPROMs, que são semelhantes à EEPROMs, no entanto, seus dados além de poderem ser apagados eletricamente, podem ser apagados de forma individual, e as NVRAM ou NOVRAM, que são RAMs não voláteis.

Existem dois tipos de semicondutores usados na fabricação de chips - circuitos integrados - para RAM : MOS - Metal Oxide Semiconductor, e bipolar . A maioria dos sistemas usa a RAM dinâmica (DRAM - Dynamic RAM), que retém a informação num capacitor, que se descarregará com o tempo. O capacitor é um componente eletrônico que “armazena” uma carga elétrica. É necessário, portanto, uma recarga desse capacitor através de um circuito (refresh). Este tipo de RAM praticamente não consome energia. Algumas aplicações específicas utilizam uma um pouco diferente - RAM estática que consome mais energia para reter os dados.

Calculadoras e micros portáteis tornam a RAM contínua com o uso de baterias. Isto é, mesmo com o equipamento desligado, uma bateria continuamente alimenta (de energia) a MP.

Memória Secundária A memória secundária é a memória usada para armazenamento permanente. Por esta razão a memória secundária é não-volátil. Os tipos de memória secundária existentes são discutidos no capítulo 3 onde são vistos os periféricos de armazenamento: discos magnéticos e óticos.

Unidades de Entrada e Unidades de Saída A CPU e a memória podem operar e produzir algum resultado útil, porém em forma binária. É necessário que este conjunto possa se comunicar com o mundo exterior, e de preferência de uma forma que nós, usuários, possamos entender. Unidades de Entrada e de Saída são periféricos responsáveis pela comunicação entre as pessoas e a máquina.

Entra-se com informações através da unidade de entrada, que são armazenadas na memória e posteriormente processadas pela CPU. Os resultados são enviados para uma unidade de saída para que se possa analisá-los.

• Unidade de Entrada (UE) => teclado, mouse, microfone, scanner, drive CD-ROM, câmera, etc. • Unidade de Saída (US) => vídeo, canhão, impressora, caixas de som, fax, etc.

Em resumo, a operação de um computador pode ser descrita da seguinte forma:

• Ele recebe informação (programas e dados) através de uma unidade de entrada e a transfere para a memória.

• A informação armazenada na memória é levada, sob controle do programa, a uma unidade aritmética e lógica para ser processada.

• A informação processada deixa o computador através de uma unidade de saída.

• Todas as atividades dentro da máquina são dirigidas por uma unidade de controle.

17

Como a informação é processada O funcionamento da CPU é coordenado pelos programas, que indicam o que e quando deve ser feito. Basicamente, a CPU executa cálculos muito simples, como soma e comparações entre números porém a uma velocidade extremamente elevada. A função da CPU é sempre a mesma. O que as diferenciam é sua estrutura interna, tipo de tecnologia empregada na fabricação e, o mais importante, cada uma tem o seu conjunto de instruções próprio. Isto torna incompatíveis os computadores. O conteúdo da memória principal é uma combinação de informações e instruções (que estão na linguagem de máquina da CPU).

O processamento é feito pela CPU utilizando o ciclo busca-execução, regulado pelo relógio da CPU. Relógio (clock): todos os computadores trabalham de acordo com um padrão de tempo, com o qual pode gerenciar a troca de informações entre os dispositivos do sistema. (freqüência do clock em MHz - MegaHertz)

A seqüência é:

1. buscar instrução na memória principal; 2. executar instrução; 3. buscar instrução seguinte; 4. executar a instrução seguinte; 5. e assim por diante (milhões de vezes por segundo).

Barramentos Um barramento de computador: um conjunto de fios ou trilhas de circuito impresso (ou integrado), que interliga os elementos. Esses fios estão divididos em três conjuntos:

• via de dados: onde trafegam os dados;

• via de endereços: onde trafegam os endereços;

• via de controle: sinais de controle que sincronizam as duas anteriores.

CPU clock via de dados memória via de endereços via de controle

F I G U R A 1 0 . E X E M P L O D E B A R R A M E N T O S C O N E C T A N D O A C P U E A M E M Ó R I A D O C O M P U T A D O R

18

Redes de Computadores Nos dias atuais tem aumentado a operação de computadores, desde os micros até os supercomputadores, em rede. Os usuários planejam em geral obter as seguintes:

• Compartilhamento de Recursos. Os recursos de uma rede como por exemplo, base de dados, impressoras, etc, estão disponíveis a todos os usuários mesmo que não estejam fisicamente ao seu alcance. Assim, um recurso caro como um supercomputador pode ser usado por diversos pesquisadores desde que este esteja conectado a uma rede, mesmo que esta tenha milhares de km.

• Aumento de Confiabilidade. Se os recursos críticos em uma rede são duplicados, a falha em uma das cópias não impede a operação normal do sistema. seja por exemplo os caso do sistema de compensação de cheques em um banco, o qual pode ser mais confiável se a base de dados for duplicada em duas máquinas-servidoras distintas.

• Economia no Hardware de Processamento. Computadores menores costumeiramente têm uma relação custo-desempenho mais favorável que os mainframes. Com o uso de redes, workstations podem conjuntamente atingir, ou até exceder, a capacidade de um computador de grande porte, em certas aplicações comerciais.

F I G U R A 1 1 : E X E M P L O D E R E D E D E C O M P U T A D O R E S .

Deve-se notar entretanto que a conexão em rede não é uma panacéia, já que a necessidade de hardware e software adicionais para a operação da rede introduzem custo extra ao sistema e podem degradar o desempenho final em algumas aplicações.

19

Definições

Uma rede é definida como um conjunto de computadores autônomos interligados. Dois computadores estão interligados se eles podem trocar informações entre si. Uma característica básica das redes de computadores é que todo acesso a recursos remotos deve ser feito explicitamente, com o usuário identificando o recurso a acessar

. F I G U R A 1 2 : E X E M P L O D E R E D E D E L O N G A D I S T Â N C I A

As redes são classificadas de acordo com suas dimensões: redes de até 1km são chamadas redes locais (“Local Area Network”—LAN), até 10km são chamadas redes metropolitanas (“Metropolitan Area Network”—MAN) e acima disto redes de longa distância (“Wide Area Network”—WAN), como o exemplo da figura 12, onde vemos o desenho de parte da rede universitária de pesquisa dos EUA. Chamada Xunet.

Estrutura

Uma rede é composta de duas partes: Os computadores, chamados hospedeiros, que são os recursos do sistema; e a estrutura que os interconecta, chamada de sub-rede, que é na realidade a rede em si. A sub-rede é composta de canais, que são o meio de transferência na rede; e de chaveadores, computadores dedicados ao controle do fluxo de informação na rede. De acordo com a forma de ligação dos chaveadores a rede pode ser:

20

F I G U R A 1 3 : E X E M P L O S D E R E D E S D E D I F U S Ã O , V I A S A T É L I T E , E P O R B A R R A M E N T O .

• Rede de Difusão. Só há um canal, partilhado por todos os chaveadores. Os pacotes enviados por um hospedeiro são recebidos pelos demais, só sendo entretanto aceitos pelo destinatário. A figura 13 mostra exemplos de redes de difusão.

• Rede Ponto-a-Ponto. A rede é feita com vários cabos, cada um ligando dois chaveadores. Se dois hospedeiros desejam se comunicar mas seus chaveadores não estão ligados por um canal, a informação é transmitida para os chaveadores intermediários que se encontrem entre os extremos. Para evitar que o caminho fique monopolizado em transmissões longas, é comum a divisão da informação em partes menores chamadas pacotes, que são transmitidos de forma independente e remontados no destino. Ao receber um pacote, o chaveador o armazena só tranferindo-o adiante quando o canal estiver liberado. A figura 14 mostra algumas das topologias ponto-a-ponto.

21

F I G U R A 1 4 : E X E M P L O S D E T O P O L O G I A S D E R E D E P O N T O - A - P O N T O .

1 Kai Hwang, Advanced Computer Architecture: Paralelism, Scalability, 1993. "McGraw-Hill, Inc," 2 David Kuck, The Structure of Computers and Computations (Addison-Wesley Publishing

Company, 1982) 3 Kai Hwang & Fayé Briggs, Computer Architecture and Parallel Processing (McGraw-Hill

Publishing Company, 1985) 4 John P. Hayes, Computer Architecture and Organization (McGraw-Hill Publishing Company,

1978)

22

ANEXOS: Resumo Histórico :

⇒ 2000 - 3000 a.C. → Ábacos (Babilônicos). Usados no oriente até hoje. Com o ábaco as pessoas utilizaram pela primeira vez um dispositivo para cálculos matemáticos. Acredita-se que o ábaco tenha sido originado na Mesopotâmia por volta de 3500 A.C com a utilização de pedras ou cálculos, o que originou o termo “calcular”, quando então era uma simples tábua provida de sulcos e contadores. A forma moderna do Ábaco apareceu na China no século 13 D.C.. A adição e a subtração são realizadas diretamente; a multiplicação e a divisão são adições e subtrações repetidas.

⇒ Século 17 • 1617 → Rodas de multiplicação de John Napier (escocês) • 1621 → Régua de Cálculo (influenciada pelas Rodas de Multiplicação) • 1642 → Máquina de Somar - Blaise Pascal. Odômetros (Pascaline). Blaise

Pascal deu início à chamada Era Mecânica, produzindo uma calculadora mecânica para cálculos com números de 10 dígitos. Era um mecanismo baseado no giro de rodas dentadas. Uma roda ao completar um giro completo incrementava um dente na roda adjacente que representava a casa decimal superior à daquela roda.

• 1671 → Gottfried von Leibnitz. Extensão da máquina de Pascal para dividir e multiplicar

⇒ Século 18 • 1741 → J. Vaucouson - propõe um método para controle de padrões em

teares, através de furos em um cilindro de metal => cartão perfurado ⇒ Século 19

• 1822 → Charles Babbage - Máquinas de diferenças (série de somadores de Pascal) → não chegou a funcionar

• 1832 → Capacidade das máquinas: ◊ 1000 números de 50 dígitos ◊ 60 adições/subtrações por minuto ◊ 1 multiplicação por minuto ◊ programável (via cartões) ◊ instruções de desvio ◊ aproximadamente 50000 partes

• 1854 → George Boole: Álgebra Booleana • 1890 → Censo U.S.A. - Herman Hollerith:

◊ Primeira utilização do cartão perfurado ◊ 25 orifícios circulares ◊ perfurador manual e máquina para contar

⇒ Século 20

• 1900 → Vannevar Bush: ferramenta para resolução de equações diferenciais

23

• 1936 → Konrad Zuse: Calculador Binário Ponto flutuante - Z1 • 1937 → Fase 0 (Não comercial) - Howard Aiken

◊ computador eletromecânico (1944) - MARK I da IBM (1943) trabalhava com números de até 23 digítos. Possuía entrada de cartão perfurado e realizava operações de adição e subtração em 6 segundos e uma divisão em 12 segundos.

◊ informação de controle - via fita de papel ◊ constantes: 60 chaves de 10 posições ◊ saída: cartão perfurado teletipo

• 1939 → Konrad Zuse ◊ Computador Automático - Z2 ◊ Computador Controlado por programa - Z3 (1941). Foi o

primeiro computador efetivamente operacional, utilizando controle por programa e numeração binária.

• 1943 → Alan Turing - Colossus I - 2500 válvulas • 1945 → 1a. Geração de Computadores: válvulas eletrônicas (1938 a 1954)

Baixa durabilidade Dispositivos de E/S primitivos Cálculos em milésimos de segundos Programados em Linguagem de máquina 20.000 válvulas Baixa confiabilidade Grande quantidade de energia consumida

Ex.: UNIVAC I / EDVAC / IBM 650 • 1946 → ENIAC - Electronic Numeric Integrator Analyzer and Computer

18000 válvulas 5000 adições/subtrações por segundo armazenamento: 20 números decimais de 10 algarismos programação através de 6000 chaves fiação para dar seqüência de programas

• 1949 → John von Neumann

Conceito de programa armazenado EDSAC-Electronic Delay Storage Automatic Computer EDVAC-Electronic Discrete Variable Automatic Computer O EDVAC usava 10 % do volume do ENIAC e tinha cem vezes mais memória.

Curiosidade: Por volta de 1950 alguns cientistas afirmavam que toda necessidade de processamento de dados mundial seria atendida por 10 computadores ENIAC. Hoje, milhões de microcomputadores são vendidos anualmente, cada um com capacidade superior a dezenas de ENIACs.

• 1950 → Fase I - Comercial UNIVAC I (Universal Automated Computer): o primeiro a usar os conceitos de Von Neumann e produzido em escala comercial

• 1953 → IBM 701

24

• 1954 → IBM 650 • 1958 → 2a. Geração de Computadores Transistores (1952 a 1964)

memórias de núcleo magnético (DRUM) circuito impresso e processadores de E/S registrador de índice e aritmética de ponto flutuante linguagens de programação “independentes de hardware” compiladores, bibliotecas de programas mais rápido, mais confiável e consumo menor de energia Cálculos em milionésimos de segundo 100 vezes menor que o computador à válvula Uso restrito (universidades, governos, empresas de grande porte) Ex.: PDP1 e 5 da DEC - Digital Equipment Corp., IBM1401

• 1960 → Uso do computador em tempo real • 1962 → Discos magnéticos • 1964 → 3a. Geração de Comput. -Circuitos Integrados (1962- 1974)

Circuito Integrado (CI) com miniaturização de componentes eletrônicos: muito mais confiáveis (não têm partes móveis) muito mais compacto e mais rápido baixíssimo consumo de energia muito menor custo

memórias semicondutoras processadores microprogramados (projeto mais simples e flexível) circuitos impressos multi-camada multiprogramação e time-sharing Cálculos em bilionésimos de segundo Ex.: IBM /360, PDP-10

• 1970 → É criado o PARC (Palo Alto Research Center), pela Xerox. Neste centro foi desenvolvida toda a base da comunicação visual que seria utilizada por computadores dali por diante - através de uma interface gráfica, usando componentes em forma de ícones e janelas.

• 1971 → 4a. Geração de Computadores (1972 a 1990 ) Circuitos Integrados de Alta Integração (LSI e VLSI)

Criação de novos periféricos para multimídia Desenvolvimento de Redes Locais, Regionais e Mundiais A Intel Corporation lança a primeira CPU em uma só pastilha de circuito integrado, o Intel – 4004. Era baseado na tecnologia VLSI (Very Large Scale Integration) possuindo 2300 transistores na pastilha. • 1972 → A Intel anuncia o chip 8008 de 200-Khz, o primeiro processador

de 8 bits. Ele podia acessar 16 KiB de memória. Utilizava 3500 transistores e a velocidade era de 60.000 instruções por segundo.

Bill Gates e Paul Allen desenvolvem um sistema baseado no processador 8008, para registrar o fluxo do tráfego de automóveis em uma via expressa.

• 1973 → É lançado o 8080 pela Intel. Vendeu milhões de unidades e firmou a Intel como a grande fabricante de microprocessadores do mercado. Possuía 5000 transistores e podia endereçar até 64KiBytes de

25

memória. A velocidade era de 0.64 MIPS (Milhões de Instruções por Segundo). A Motorola lança em seguida o microprocessador 6800, para concorrer com a Intel A Motorola lança em seguida o microprocessador 6800, para concorrer com a Intel.

• 1976 → Um grupo de hobbistas (Steve Wozniak - HP e Steve Jobs - Atari) desenvolveram um microcomputador baseado no microprocessador 6502 (clone do 6800), não pela sua versatilidade, mas pelo preço. Nasce, então, o microcomputador batizado de Apple. Vendeu 175 unidades e foi um sucesso. Desenvolveram em seguida o Apple II, que foi o primeiro microcomputador pessoal com unidade de disco flexível e projetado para atender tanto ao mercado pessoal como profissional.

• 1979 → A Apple inicia o desenvolvimento de outro microcomputador, o Lisa, baseado em tudo aquilo que Steve Jobs tinha visto em sua visita ao PARC: a interface gráfica.

Através da interface gráfica, o microcomputador torna-se mais amigável. Funções antes disponíveis somente através de comandos complicados e de difícil memorização passaram a ser utilizadas através de símbolos (ou ícones) disponíveis na tela.

A Intel anuncia o microprocessador 8088 de 4.77 Mhz. Foi criado como um progresso a partir do 8086. Operava internamente com 16 bits, mas suportava data bus de 8 bits, para utilizar os chips de controle de dispositivo de 8 bits. Continha 29.000 transistores e podia acessar 1MiB de memória. A velocidade era de 0.33 MIPS. Uma versão posterior operava a 8 MHz, numa velocidade de 0.75 MIPS.

• 1980 → Início da Internet como rede acadêmica e de segurança militar estratégica nos Estados Unidos.

• 1981 → A IBM anuncia o computador pessoal IBM 5150 em Nova York. O PC possuía uma CPU com o processador Intel 8088 (29.000 transistores) de 4.77 Mhz, 64KiB RAM, um drive de disquete de 5.25 polegadas (com capacidade de 160KiB), e o PC-DOS 1.0 (Microsoft MS-DOS), por aproximadamente 3.000 dólares. Uma versão com gráficos coloridos custava 6.000 dólares.

• 1983 → Microsoft anuncia a versão 1.0 do editor de textos Word for MS-DOS. Microsoft lança seu primeiro mouse (copiado da Apple, que, por sua vez, copiou da Xerox).

• 1984 → É lançado o MacIntosh, criado para ser um "Lisa para se ter em casa". A Apple obteve um sucesso estrondoso com o seu MacIntosh, partindo em outra direção, descartando um futuro maior para a linha Apple II. Para se ter uma idéia, somente 11 anos depois do lançamento do Macintosh a Microsoft conseguiu lançar um produto com interface gráfica similar.

26

No mesmo ano é lançado o PC 286 (134.000 transistores) com velocidade de 6MHz, 256 KiBytes de RAM e disco rígido de 20 MiBytes.

• 1990 → Internet Comercial (.com) e rede mundial (www). A Microsoft apresenta e vende o Microsoft Windows 3.0. A Microsoft gastou 3 milhões para o marketing de lançamento, como uma parte dos 10 milhões da campanha promocional.

É lançado o PC 486 (1,2 milhão de transistores) com velocidade de 25MHz e disco rígido de 30MiBytes.

• 1991 → 5a. Geração de Computadores (1991 ...) Processamento Paralelo: várias CPUs Circuitos Integrados ULSI Todas as gerações anteriores => processamento serial

=> uma única CPU Linus Torvalds cria o núcleo do sistema operacional LINUX.

• 1993 → A Microsoft lança o Windows for Workgroups (3.11) e a Intel lança o processador Pentium.

• 1995 → A Microsoft lança o Windows 95 e a Internet começa a decolar no Brasil.

• 1998 → É lançado o Windows 98 e o navegador na Internet vem embutido no sistema.

• 1999 → Intel anuncia o Pentium III, com 9,5 milhões de transistores e 1.000 Mips.

• 2000 → Lançamento do Pentium 4. Chega a 500 milhões o número de computadores pessoais em todo o

mundo. • 2001 → Era da Internet e Comunicações Móveis

Em dia 12 de agosto de 2001, o PC comemora 20 anos de vida. Outros computadores para uso pessoal o antecederam, como o Apple II. Mas o que o brasileiro conhece como microcomputador pessoal, no trabalho ou em casa, veio ao mundo em 1981, pelas mãos da IBM.

Escala de Integração: quantos circuitos se pode colocar num único circuito integrado (chip): VLSI - Very Large Scale of Integration - contém de 1 milhão a 10 milhões de componentes ULSI – Ultra Large Scale of Integration – mais de 10 milhões de componentes.

MEMÓRIA PRINCIPAL Posição e Endereçamento O tamanho máximo da MP que pode ser usado em um computador é determinado pelo esquema de endereçamento. Por exemplo, um computador de (palavra de) 16 bits que gera endereços de 16 bits é capaz de endereçar até 216 locais de memória. Cada local de memória armazena 16 bits, porque tem palavra de 16 bits. Da mesma forma, uma máquina cujas instruções geram endereços de 24 bits pode utilizar uma MP que contenha até 224 locais de memória. Este número representa o tamanho do espaço endereçado do computador.

27

Em alguns computadores, a menor unidade endereçável de informação é uma palavra de memória. Endereços sucessivos de memória referem a sucessivas palavras de memória, e a máquina é chamada de endereçável por palavra. De outra forma, a bytes individuais de memória podem ser atribuídos endereços distintos, levando a um computador endereçável por byte. É mais fácil e econômico escrever programas para um sistema com MP bastante grande, capaz de conter todo o programa e todos os dados necessários de uma só vez, apesar de se saber que o tamanho da MP afeta o custo e a velocidade da aplicação. Sempre que possível, é recomendável adquirir mais que o mínimo necessário, considerando-se que quanto mais o programa e os arquivos de dados tiverem que ser divididos, mais complexo se tornará o programa e consequentemente mais tempo o sistema deverá esperar por segmento de dados ou programas a serem carregados dos periféricos para a MP. Calcule qual a memória útil, que é a que estará disponível para a aplicação. Para chegar a memória útil deve-se subtrair da memória RAM a quantidade que será ocupada pelo sistema operacional e utilitários. O saldo poderá ser utilizado pelo aplicativo (programa e/ou dados). Configuração e Expansão Uma configuração é a descrição do conjunto dos equipamentos que compõem o sistema, com todos os acessórios e periféricos qualificados e quantificados. Uma expansão da configuração atual pode incluir mais memória, se necessário, melhor monitor de vídeo com imagem mais nítida, etc.