Para quem vive tecnologia e nesta viagem no tempo deseja saber mais sobre tudo que usamos hoje, de onde vem sua tecnologia, ter uma ideia de como os computadores que usamos hoje chegaram a esse ponto é importante.
Na verdade, os computadores já existem há muito tempo, se considerarmos suas formas mecânicas, como a máquina analítica de Babbage e mesmo os “sorobans” que podem ser analisados como computadores elementares.
Na época das válvulas e mesmo antes também existiam os computadores analógicos que realizavam operações baseados em tensões. Usando amplificadores operacionais eles somavam, subtraiam, multiplicavam com uma precisão que atendia às necessidades da época.
Cheguei a montar um pequeno “computador” analógico cujo projeto publiquei em meu site e depois num livro que publiquei nos Estados Unidos com grande sucesso. Tenho esse computador analógico até hoje..
A eletrônica digital e os computadores se tornaram possíveis com a álgebra de Boole. George Boole, matemático britânico publicou um livro chamado “A Análise Matemática da Lógica” onde lançou as leis que são toda a base da moderna computação digital.
Na época suas ideias não tiveram aplicações práticas, mas com o desenvolvimento da eletrônica ela pode ser aplicada de forma direta nos computadores.
Hoje, a Algebra de Boole ou Álgebra Boolena rege todo o mecanismo operacional não apenas dos computadores, mas de todos os circuitos digitais .
A pequena cronologia dada a seguir não é completa, servindo apenas de orientação para os que desejam posicionar o computador na linha do tempo.
PRÉ-HISTÓRIA DOS COMPUTADORES
Se bem que os homens das cavernas não usassem nada parecido com o que hoje denominamos computadores, a ideia de uma pré-história dos computadores vem a partir do momento em que pessoas imaginaram meios de se fazer cálculos usando qualquer tipo de mecanismo ou recurso tecnológico que não fossem os dedos de sua própria mão.
Computar significa contar, calcular ou anda contabilizar.
Isso significa que a ideia do ábaco ou da realização de operações matemáticas, contagem de objetos usando pedrinhas e outros objetos já pode ser colocada na pré-história dos computadores.
Um conjunto de vasos onde pedrinhas seriam tiradas de ume colocadas em outro para se controlar a quantidade de objetos num estoque pode ser considerado um “computador elementar”.
No entanto, na época em que ainda não existia a eletrônica e nem sequer a eletricidade alguns fatos relevantes que nos permitem associar a ideia de máquinas capazes de processar dados e realizar operações matemáticas podem ser citados.
Assim, podemos começar com John Napier (1550-1617) um matemático escocês que construiu uma máquina de calcular baseada em palitos. Esta interessante máquina mecânica era capaz de multiplicar e dividir.
Posteriormente temos Blaise Pascal que é considerado por muitos o "pai da informática" sendo normalmente citados nos livros como ponto de partida de qualquer história da informática e que em 1642 fabricou uma máquina de calcular usando engrenagens.
Leibniz (1646-1716) foi outro que construiu uma máquina de calcular que usava pela primeira vez o sistema binário.
Merecendo citação temos ainda Joseph Jacquard (1752-1834) que empregou pela primeira vez cartelas perfuradas para controlar máquinas de tecer (teares) que podiam então ser "programados" para realizar determinados tipos de tarefas. Foram as primeiras máquinas industriais que podiam ser "programadas".
As bases dos sistemas atuais, entretanto foram lançadas por Charles Babbage que em 1882 projetou uma máquina diferencial capaz de realizar cálculo de polinômios. Essa máquina totalmente feita à base de engrenagens pode ser considerada o primeiro computador mecânico. Posteriormente, em 1883, Babbage começou a trabalhar numa máquina maior de uso geral que, no
entanto, nunca foi terminada.
Chegamos ao final do século XIX quando F. Hollerith criou os cartões perfurados para programação de máquinas (os chamados cartões Hollerith) que foram posteriormente usados nos primeiros computadores.
Foi Hollerith que que, a partir de sua descoberta, fabricou as primeiras máquinas para automação dos serviços de escritório chamando sua empresa de Industrial Business Machine ou abreviadamente IBM!
Entramos na fase história dos computadores.
A PRIMEIRA GERAÇÃO (1938-1952)
Nesta primeira geração a tecnologia usada era baseada em válvulas. O consumo era elevado e a quantidade de calor desenvolvida muito grande. Diversas máquinas foram construídas baseadas em tecnologia analógica (computadores analógicos), no entanto o primeiro computador realmente digital foi o ENIAC construído em 1946 na Moore School Engineering. Os montadores foram Eckert e Mauchly que usaram 18 000 válvulas, 70 000 resistores e 7 500 interruptores. Este primeiro computador consumia uma potência de 100 kW necessitando de um bem aparelhado sistema de ventilação dada a quantidade de calor gerado.
O ENIAC possuía 20 registros de 10 dígitos e era capaz de somar, subtrair, multiplicar dividir valores decimais. Este computador incorporava ainda três tabelas de funções e as entradas e saídas de dados eram feitas por meio de cartões perfurados.
Von Neumann esta época propôs modificações do ENIAC que levaram a um novo computador, o EDVAC montado em 1952 resultando numa nova arquitetura que passou a ser utilizada a partir de então como base para os modelos seguintes.
Esta arquitetura se baseava no fato de que em lugar de se usar um programa instalado, a operação seria feita com um programa armazenado. Assim, enquanto nos primeiros modelos, a estrutura do computador se modificava (alterava-se os circuitos) conforme o programa, pela proposta de von Neumann a organização física do computador se manteria inalterada qualquer que fosse a aplicação.
Outro ponto importante proposto por Von Neumann era a utilização da aritmética binária codificada em lugar da decimal, o que levaria a uma enorme simplificação dos circuitos eletrônicos.
Surgia assim a denominada Arquitetura de von Neumann que levava em conta 4 blocos básicos:
* Unidade de controle que seria encarregada de interpretar os códigos binários das instruções e fazer sua execução.
* Unidade Lógica Aritmética (ALU) ou unidade operacional que faz as operações lógicas.
* Memória principal onde são armazenados os dados, instruções, resultados parciais e finais.
* Módulos de entrada e saída.
Na mesma época, Wilkes construiu o computador EDSAC para a Universidade de Cambridge em que se introduzia o conceito de memória hierárquica.
Em 1951 foi apresentado pelo MIT o primeiro computador projetado para trabalhar em tempo real, o WWI.
Uma série de melhoramentos nos circuitos foi sendo agregada a cada computador desta geração dentre eles destacamos a passagem dos sistemas de memória das válvulas para os anéis de ferrite reduzindo o tempo de acesso para a casa dos microssegundos.
Nesta geração tivemos o início do uso das fitas magnéticas como memória secundária, substituindo as fitas perfuradas.
Nesta geração apareceram os primeiros computadores com interrupções da CPU.
A lógica de programação, por outro lado, teve um avanço a partir de 1950.
Até essa época só se trabalhava com linguagem de máquina. O conceito de registro indexado foi introduzido nesta época.
Os primeiros computadores comerciais desta geração eram máquinas de grande porte como o UNIVAC 1 que foi construído para realizar o censo dos Estados Unidos. Seguindo este modelo a Univac chegou até o modelo 1103 em 1956 que já podia operar com ponto flutuante. Destacam-se outros modelos desta geração como os da IBM modelos 701, 704 e 709.
A SEGUNDA GERAÇÃO (1953-1962)
Apesar do transistor ter sido inventado em 1948, o primeiro computador utilizando este tipo de componente e que deu início a uma nova geração só apareceu em 1954. Este computador, fabricado nos laboratórios da Bell recebeu o nome de TRADIC.
Os transistores são muito menores, consomem muito menos energia e assim possibilitam a construção de máquinas muito mais econômicas.
Os modelos comerciais que se tornaram mais procurados nesta época foram os modelos 7070 (1960) da IBM o modelo 1401 também da IBM (1961), além de outros de empresas como a Honeywell que tinha os computadores da série 200.
Começaram a aparecer nesta época os computadores específicos para aplicações científicas como, por exemplo, os modelos 7090 e 7094 da IBM e até os supercomputadores.
A UNIVAC em 1960 já possuía dois supercomputadores com melhorias na arquitetura que os tornavam ideais para aplicações científicas como, por exemplo, o processamento paralelo e o adiantamento na execução de erros além de algoritmos para a correção de erros.
Nesta época podem ser destacados algum projetos interessantes como o multiprocessador da Burroughs modelo D-825 e o PDP-5 da Digital Equipment Corporation que foi o precursor dos miniordenadores PDP que fizeram sucesso na terceira geração.
Relativamente ao hardware destaca-se nesta época ainda a utilização de novos dispositivos de memória como os anéis de ferrite e os discos intercambiáveis. O funcionamento em tempo compartilhado também é outra característica dos computadores desta geração.
Na parte do software destaca-se o aparecimento do FORTRAN, uma linguagem de alto nível para aplicações cientificas e a primeira versão do COBOL (1960) com aplicações comerciais. Uma linguagem científica bastante usada nesta época foi o ALGOL e o PL/1 que reúne as características das três principais linguagens desta época.
TERCEIRA GERAÇÃO (1963-1971)
Chega o circuito integrado e numa mesma pastilha de silício podem ser fabricados circuitos de alguma complexidade reduzindo assim os custos dos computadores e diminuindo seus requisitos de espaço e energia.
Os circuitos integrados desta geração ainda eram os SSI (Pequena Escala de Integração) e MSI (Média Escala de Integração) que reuniam numa única pastilha não mais do que 12 portas lógicas no primeiro caso até no máximo 100 nos MSI.
Esta geração é marcada pelo aparecimento do modelo 360 da IBM (No qual dei meus primeiros passos em informática, como já relatei) e de diversos modelos compatíveis capazes de usar o mesmo set de instruções.
Nesta época os computadores passam a ser divididos por famílias de acordo com sua potência, preço, etc., mas todos com características de compatibilidade.
Os minicomputadores PDP-8, PDP-11 da DEC se tornaram muito populares nesta época.
O hardware destes computadores apresentou uma série de avanços importantes nesta geração. As montagens já usavam a tecnologia da placa de circuito impresso de diversas camadas e as memórias rápidas (cache) foram introduzidas, como memórias intermediárias entre a unidade de controle e a memória principal, aumentando assim o desempenho do computador na busca de instruções.
O sistema de memória virtual paginada começa a ser usado e as interrupções passam a ser adotadas com diversos níveis de prioridade.
Na parte de software, o aparecimento do BASIC e do PASCAL consistem no acontecimento mais importante desta geração.
Os sistemas operacionais também tiveram um bom avanço com a adoção do esquema de multiprogramação que possibilita a execução simultânea de vários segmentos de programas solapados com operações de entrada e saída.
No final da década de 60 já estavam disponíveis muitos sistemas funcionando com tempo compartilhado.
Nesta época, entretanto, os computadores eram máquinas de grande porte destinando apenas a operação em empresas. Não havia ainda a ideia de um computador pessoal ou PC (Personal Computer)
QUARTA GERAÇÃO (1972-1987)
Esta geração se caracteriza pela utilização de chips das novas tecnologias LSI (Alta Escala de Integração) e VLSI (Muito Alta Escala de Integração) segundo as quais foi possível ultrapassar a barreira de um milhão de componentes por circuito integrado.
O resultado disso foi a possibilidade de colocar num único chip todos os componentes necessários a elaboração de uma unidade central de processamento e alguns circuitos de suporte. Estes circuitos passaram a ser denominados microprocessadores e deu origem a uma nova família de computadores, denominada de microcomputadores monochip ou de um único chip.
Podemos separar esta geração em diversas fases, onde ficam caracterizados os passos no desenvolvimento das diversas tecnologias que passaram a ser usadas nos computadores.
Numa primeira fase, entre 1971 e 1974 encontramos os microprocessadores que utilizavam palavras de 4 bits, contendo um set de instruções bastante limitado. No chip não havia ainda um circuito de grande complexidade que permitisse uma operação de uma forma mais complexa.
Numa segunda fase, entre 1974 e 1976 aparecem os microprocessadores de 8 bits, com um aumento substancial da velocidade, capacidade de cálculo e também do set de instruções. Este componente passou a ser usado como padrão da indústria de microcomputadores pessoais ou o PC.
Entre 1976 e 1978 temos a terceira fase desta geração com o aparecimento dos microprocessadores de 8 bits melhorados, em que novos recursos físicos, direcionamentos e tipos de instruções foram introduzidos. A demanda dos microcomputadores pessoais exigiu que estes novos microprocessadores passassem a ter uma produção em massa.
Na quarta fase, entre 1978 e 1980 surgiam os microprocessadores de 16 bits, modificando-se a partir de então a arquitetura original de von Neumann de modo a se dispor de novos recursos (processamento paralelo) capazes de dar maior desempenho aos computadores e também se adaptar melhor às linguagens de alto nível e aos novos sistemas operacionais avançados que então surgiam.
Os microcomputadores passaram a ser usados em novos campos da ciência como, por exemplo, a robótica.
Na quinta fase desta geração, entre 1981 e 1987, surgiram os microprocessadores de 32 bits, orientados tanto para as linguagens de alto nível como também para os sistemas operacionais com capacidades de multiprogramação e multiusuário.
A velocidade de processamento continuou aumentando graças ao desenvolvimento de tecnologias que permitiam a elaboração de elementos básicos como transistores e diodos no chip, cada vez menores. Diminuindo o tamanho dos transistores aumenta-se tanto a sua velocidade de operação como também a quantidade de componentes que pode ser fabricado por chip.
Nesta época aparecem também os coprocessadores matemáticos, chips de apoio capazes de permitir a operação em ponto flutuante como também os circuitos de apoio para melhor gestão da memória.
Os micro-minis aparecem no mercado. Estes eram microcomputadores baseados em microprocessadores comuns de 32 bits com a finalidade de substituir os minicomputadores da geração anterior.
Estes equipamentos já passam a ser utilizados e novos campos de aplicação como, por exemplo, o CAD/CAM e a própria Inteligência artificial.
Diversos supercomputadores apareceram nesta geração como o Cray X-MP em 1983.
Basicamente as inovações de hardware foram o aumento da quantidade de componentes por pastilhas com a reunião de número cada vez maior de funções num único chip. Mas, além disso, tivemos um aumento na capacidade das memórias e um avanço considerável nas tecnologias de gravação de dados em meios magnéticos. Utilizando a técnica de magnetização vertical as novas memórias de massa passaram a apresentar uma densidade muito mais alta de dados.
No setor de software esta geração se caracteriza pelo aparecimento de linguagens de alto nível capazes de operar dados escalares e vetoriais. A memória virtual, por outro lado, foi padronizada nesta época.
QUINTA GERAÇÃO (A partir de 1987 até os dias atuais)
Estamos ainda nesta quinta geração de computadores e a cada dia novas tecnologias e novos componentes são anunciados. Assim, ao lado das coisas que já apareceram, será interessante também citar coisas que ainda podem aparecer, pois já estão sendo estudadas e experimentadas em centros de pesquisas e nos próprios laboratórios dos fabricantes.
A principal tendência em termos de recurso é o processamento de imagens em tempo real cada vez maior, e o uso de sistemas de memória de massa de capacidade cada vez maior.
No caso das memórias de grande capacidade, observamos a unificação dos padrões de armazenamento de dados, imagens e sons com o DVD..
Podemos destacar os seguintes pontos importantes que observamos nas tecnologias da quinta geração de computadores:
a) Novas tecnologias estão sendo estudadas de modo a substituir o silício, que está chegando ao seu limite de velocidade, por materiais mais rápidos como o caso do arseneto de gálio ou dos dispositivos de Josephson.
Temos ainda os chamados chips ópticos em que as informações podem ser transferidas dentro da pastilha por meio de feixes de luz que são muito mais rápidos que os portadores de carga em qualquer tipo de material conhecido.
b) Melhoria de hardware. Os computadores atuais e de futuro próximo devem passar por uma melhoria em relação a quantidade de níveis lógicos usados no processamento de dados até se chegar a uma solução. Neste caso enquadramos as arquiteturas que possuem somadores com "vai um" antecipado.
c) Os circuitos lógicos combinacionais vão se tornando cada vez mais complexos substituindo os circuitos sequenciais. Com o uso cada vez maior de PLAs pode-se aumentar a velocidade de decodificação das instruções.
d) Substituição de software por hardware. Esta ideia á aparece em alguns equipamentos onde, graças ao baixo custo da implementação de funções em chips, é possível já incluir no computador circuitos feitos para a realização de funções mais frequentes. Estas funções não precisando ser chamadas num programa, podem, desta forma ser realizadas muito mais rapidamente aumentando assim a velocidade final do sistema.
e) Mudança das estruturas de memórias - notamos que a organização das memórias já está mudando nos computadores de nossa geração e existem algumas tendências futuras que devem se tornar normais nos próximos anos.
A ideia de se usar novas organizações é sempre a mesma: maior capacidade e diminuição do tempo de acesso.
f) Chegada da computação quântica em que os bits passam a ser armazenados nos spins de elétrons, aumentando assim a capacidade de processamento e velocidade numa proporção gigantesca.
Para isso existem diversos procedimentos, alguns já usados e outros em estudo como:
* Inserção de uma memória cache ultra-rápida entre a memória principal e a CPU.
* Ampliação do uso da memória virtual
* Potenciação dos registros internos da CPU
* Uso de memória entrelaçada. A memória principal é dividida em vários módulos com um determinado número de palavras cada um.
* Uso de multiprocessadores.
* Reforço do nível de concorrência nas instruções. A idéia é eliminar a dependência na execução das instruções de modo a se aumentar a capacidade de processamento paralelo.
* Aumento do paralelismo em todos os níveis. Isso pode ser feito em diversos níveis:
Em nível de tarefas ou programas com um processo de multiprogramação ou ainda tempo compartilhado. Em nível de segmentação em que se divide em partes um programa. Em nível de instruções, em que se faz uma análise da dependência dos dados. Finalmente, pode ser feito em nível de partes em que as instruções podem ser decomposta o que implica num relacionamento maior com o hardware.
* Temos finalmente a possibilidade de se usar processadores de fluxos de dados sistólicos.
O conceito de arquitetura sistólica foi desenvolvido na Universidade Carnegie-Mellon por Kung e cinsiste num conjunto de células interligadas, cada uma das quais sendo capaz de executar uma instrução simples. As células se conectam em forma de matriz ou árvore de modo que as informações fluem na forma de impulsos para as células adjacentes.
Podemos dizer que este sistema opera de modo semelhante às pulsações do coração propagando as instruções resolvidas para as células adjacentes que se multiplicam, dada a estrutura em matriz ou árvore, daí sua denominação.
Nesta geração começam a aparecer os denominados computadores inteligentes (AI). O processamento da informação em lugar de dados é algo que já começa a tomar corpo.
Um computador inteligente procura dados na memória não por seus endereços mas sim por seu conteúdo. Um computador inteligente não realiza operações lógicas, mas sim inferências lógicas (LI). Sua velocidade é medida não em FLOPS (Operações com Pontos Flutuantes por Segundo), mas sim em LIPS (Inferência Lógicas por Segundo).
A linguagem de máquina empregada por tais máquinas será do tipo linguagem de núcleo ou kernel baseada numa lógica de predicados que, mesmo sendo uma linguagem de máquina, e considerada de muito alto nível já que se aproxima das linguagens humanas naturais.
Outras tecnologias já existem no sentido de implementar a inteligência artificial que será a base da informática nos próximos anos.