Arquitetura de computadores

Origem: Wikipédia, a enciclopédia livre.

A evolução da informática foi caracterizada pelo desenvolvimento de computadores com as mais diversas características, traduzidas pelos diferentes parâmetros, cada vez mais conhecidos da maioria de usuários de computador: a CPU adotada, a capacidade de memória, a capacidade do disco rígido, a existência de memória cache e outros menos conhecidos. A definição destes parâmetros e a forma como os diversos componentes de um computador são organizados, define aquilo que é conhecido por arquitetura de computador e vai determinar aspectos relacionados à qualidade, ao desempenho e à aplicação para a qual o computador vai ser orientado.[1][2]

Existem vários modos de uso do termo, que podem se referir a:

A arquitetura é frequentemente definida como o conjunto de atributos da máquina que um programador deve compreender para que consiga programar o computador específico com sucesso, ou seja, para que consiga compreender o que o programa irá fazer quando da sua execução. Por exemplo, parte da arquitetura são as instruções e o raio de operadores manipulados por elas. De uma maneira semelhante, a frequência em que o sistema opera não é incluída na arquitetura. Esta definição revela as duas principais considerações dos arquitetos de computadores: desenhar hardware que se comporta como o programador pensa que se irá comportar e utilizar implementações existentes de tecnologias (por exemplo, semicondutores), para construir o melhor computador possível. A segunda consideração é frequentemente referida como a microarquitetura.[3]

História[editar | editar código-fonte]

A expressão "arquitetura de computadores", na literatura, pode ser atribuída a Lyle R. Johnson, Muhammad Usman Khan e Frederick P. Brooks, Jr. Em 1959, eram membros do departamento de Organização de Máquinas da IBM.

Johnson teve a oportunidade de escrever uma comunicação de pesquisa proprietária sobre Strech, um supercomputador desenvolvido pela IBM para o Laboratório Nacional de Los Alamos. Na tentativa de caracterizar o seu nível desejado de detalhe, ele observou que sua descrição de formatos, tipos de instruções, os parâmetros de hardware e melhorias de velocidade foi no nível de "arquitetura do sistema" - Um termo que parecia ser mais útil do que "organização de máquina".

Posteriormente, Brooks, um dos projetistas do Strech, começou o capítulo 2 de um livro (Planning a Computer System: Project Stretch, ed W. Buchholz, 1962), escrevendo: "Arquitetura de computadores, como outra arquitetura, é a arte de determinar as necessidades do usuário de uma estrutura e, possível dentro das limitações econômicas e tecnológicas.".

Brooks passou a desempenhar um papel no desenvolvimento do IBM System/360(agora chamado de IBM System z) linha de computadores, onde a "arquitetura" ganhou moeda como um substantivo com a definição como "o que o usuário precisa saber". Mais tarde, o mundo da informática, empregaria o termo, em formas muito menos explícitas.

Funções básicas de um computador[editar | editar código-fonte]

Tanto a estrutura quanto o funcionamento de um computador são, essencialmente, simples. Em termos gerais, existem apenas quatro:

Estrutura do Computador[editar | editar código-fonte]

Existem quatro componentes estruturais principais.[4]

  • CPU: Faz o controle da operação do computador e realiza suas funções de processamento de dados;[4]
  • Memória principal: Faz o armazenamento de dados;[4]
  • E/S (Entrada/Saída): Movimenta os dados entre o computador e seu ambiente externo;[4]
  • Interconexão do sistema: Mecanismo que oferece comunicação entre a CPU, memória principal e E/S.[4]

Memória virtual[editar | editar código-fonte]

Outro problema recorrente envolve a memória virtual.

Historicamente, a memória de acesso aleatório (RAM) foi centenas de vezes mais cara que o armazenamento mecânico rotativo, isto é, discos rígidos, num computador moderno.

O processador só pode executar uma instrução que esteja na memória real. O mecanismo de Memória Virtual divide a memória real em frames e divide um arquivo no disco em páginas de mesmo tamanho dos frames. No disco existem muito mais páginas do que frames na memória. Sempre que for preciso uma página é copiada da memória virtual (arquivo em disco) para um frame da memória real. Surge a necessidade de saber quando é preciso copiar. Surge a necessidade de saber se um frame pode ser descartado ou se precisa ser recopiado para sua página correspondente no arquivo em disco. Sempre que uma instrução é executada a partir de um frame o hardware controlador de memória virtual testa se o dado a que ela se refere já se encontra em algum frame. Se for o caso, uma interrupção ocorre para que a rotina de tratamento cuide de copiar do disco para a memória real uma página completa contendo o dado necessário.

Memória principal e secundária[editar | editar código-fonte]

Memória principal (RAM): componente de memória volátil para armazenar os programas e execuções de forma mais rápida.[4]

Memória secundária: é a de acesso mais lento para armazenagem dos dados não-volátil também conhecida como HD ou HDD (hard disk drive ou disco rígido) hoje também difundida em SSD. Curiosidade que a primeira memória secundária foi a fita magnética ainda muito usada, mesmo sendo o componente mais lento.[4]

Memórias voláteis são as que perdem os dados assim que o fluxo de energia é encerrado. Por este motivo as memórias primárias são voláteis e as secundárias não-voláteis, pois a primeira precisa armazenar os dados para processamento de forma rápida, já a segunda, não precisa de acesso tão rápido, e sim de segurança de que a informação armazenada lá não se perca quando o fluxo de energia for cortado.[4]

Segmentação das instruções (pipeline)[editar | editar código-fonte]

O conjunto e instruções orienta fortemente como funcionará a segmentação de instruções. A ideia é análoga a linha de produções em série, mas utilizada na execução das instruções. Primeiro divide-se as instruções em pedaços menores de forma que uma instrução em código de máquina demore muitos ciclos curtos para ser executada. Depois disso o controle do microprocessador encarrega-se de executar várias instruções ao mesmo tempo, cada uma utilizando um pedaço distinto do processador. Isto tem como objetivo que na média cada instrução demore um ciclo curto para ser executada. Existem diversas complicações em instruções de desvio (condicionais), que são tratadas por paralelismo de código conhecida como threading (nome comercial da Intel Hyperthreading).

Ver também[editar | editar código-fonte]

Referências

  1. Gerrit A. Blaauw & Frederick P. Brooks (1997). Computer Architecture: Concepts and Evolution. [S.l.]: Addison-Wesley. ISBN 0-201-10557-8 
  2. Anthony Ralston & Edwin D. Reilly (1993). Encyclopedia of Computer Science Third Edition. [S.l.]: Van Nostrand Reinhold. ISBN 0-442-27679-6 
  3. [1]
  4. a b c d e f g h i j k l STALLINGS, W. Arquitetura e Organização de Computadores. 8 ed. - https://github.com/xstpl/Livros-1/raw/master/Arquitetura%20e%20Organiza%C3%A7%C3%A3o%20de%20Computadores%20-%208%C2%AA%20Ed.pdf

Ligações externas[editar | editar código-fonte]