terça-feira, 27 de março de 2012

Arquitetura de computadores

A evolução da informática foi caracterizada pelo desenvolvimento de computadores com características as mais diversas, 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.

Existem vários modos de uso do termo, que podem ser usados referindo-se a:

* O desenho da arquitetura da CPU do computador, o seu conjunto de instruções, "addressing modes" e técnicas, tais como paralelismo SIMD e MIMD.
* Arquiteturas de hardware mais generalizadas, tais como computação em cluster e arquiteturas NUMA (acesso não-uniforme à memória).
* A utilização menos formal do termo refere-se a uma descrição dos requisitos (especialmente requisitos de velocidades e interligação) ou implementação do design para as várias partes de um computador, tais como memória, placa-mãe, periféricos eletrônicos ou, mais frequentemente, CPU.
* 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 aquando 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: (1)desenhar hardware que se comporta como o programador pensa que se irá comportar, (2)utilizar implementações existentes de tecnologias (por exemplo, semicondutores) para construir o melhor computador possível. A 2ª consideração é frequentemente referida como a microarquitetura.

Índice
[esconder]

* 1 História
* 2 Memória virtual
* 3 Pipeline ou segmentação das instruções
* 4 Ligações externas

[editar] História

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 super computador desenvolvido pela IBM para Los Alamos Scientific Laboratory (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 a nível de "Arquitetura do Sistema" - Um termo que parecia ser mais útil do que "Organização de Máquina".

Posteriormente, Brooks, um dos designers 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.
[editar] Memória virtual

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.
[editar] Pipeline ou segmentação das instruções

O conjunto e instruções orienta fortemente como funcionará o pipeline 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 1 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).

Nenhum comentário:

Postar um comentário

Seguidores