• Nenhum resultado encontrado

3 HIERARQUIA DE MEMÓRIA

3.2 Arquitetura de von Neumann

A arquitetura de von Neumann é uma arquitetura de computador digital com o conceito de programa armazenado, o qual é formado por três componentes principais: processador ou unidade de processamento central (Central Processing Unit - CPU); memória para armazenamento de instruções e dados; entrada e saída (Input/Output - I/O) para permitir a comunicação com outros dispositivos ou com o ser humano (STALLINGS,2006).

O conceito de programa armazenado determina que instruções e dados são representados na memória como números binários. Desta maneira, o processador pode realizar a leitura de instruções e dados da mesma forma diretamente da memória.

Os projetistas do ENIAC1e John von Neumann (que era consultor do ENIAC na época),

desenvolveram a ideia de programa armazenado; paralelamente, Alan Turing desenvolveu uma ideia similar. A concretização do conceito ocorreu em 1945, com a proposta de um novo computador, o EDVAC2.

1 Electronic Numerical Integrator And Computer- Foi o primeiro computador eletrônico de propósito geral. (WEIK,1961)

2 Electronic Discrete Variable Automatic Computer- utilizava o sistema binário e possuía arquitetura de von Neumann.

EmStallings(2006) é apresentado o esboço da proposta realizada por von Neumann para a criação da arquitetura proposta von Neumann. A descrição completa dessa proposta encontra-se emNeumann(1945). Baseado nesta proposta, em 1946 von Neumann e seus colegas começaram a desenvolver uma arquitetura de computador conhecida como Institute for Advanced Studies (ISA) da Universidade de Princeton.

Um protótipo foi construído em 1952 com todas as características de um computador de propósito geral, além do conceito de programa armazenado. O protótipo serviu de modelo para todos os computadores de propósito geral subsequentes até hoje, com raras exceções (STALLINGS,2006). A arquitetura IAS é apresentada na Figura3.

Figura 3 – arquitetura IAS baseada na arquitetura de von Neumann (STALLINGS,2006).

Os componentes da arquitetura IAS são:

• Main Memory (M): conhecida como memória principal, é o local onde são armazenados e acessados as instruções e os dados dos programas;

• Artithimetic-Logic Unit (CA): conhecida como unidade lógica e aritmética, é a unidade que realiza operações Aritméticas/Lógicas básicas, como soma, subtração, multiplicação AND, OR, entre outras;

• Program Control Unit (CC): conhecida como unidade de controle, é a unidade responsável por interpretar as instruções de um programa vindas da memória e coordenar a sequência de execução dessas instruções;

• I/O equipment (I/O): conhecido como módulo de entrada e saída, é responsável por coordenar operações de entrada e saída de dados de dispositivos periféricos.

Os componentes de um computador precisam comunica-se entre si, portanto, deve haver cami- nhos para a ligação entre os módulos. Segundo (STALLINGS,2006), a coleção desses caminhos

3.2. Arquitetura de von Neumann 47 que conectam os módulos de um computador é chamada de estrutura de interconexão. Essa estrutura depende de como será realizada a troca de informações entre os módulos.

O barramento é uma estrutura de interconexão utilizada nos computadores atuais. Di- versos componentes podem ser conectados em um barramento, onde somente um componente pode realizar a transmissão de dados para outro componente por vez. Caso mais de um com- ponente transmita dados no barramento ao mesmo tempo, os dados podem ser sobrepostos, corrompendo-os e, assim, inviabilizando a leitura dos mesmos.

O barramento que liga a CPU à memória na arquitetura de von Neumann torna-se um gargalo, pois somente ocorre uma transmissão por vez; isso limita seriamente a velocidade de processamento. A CPU é continuamente forçada a esperar por dados que precisam ser transferidos para ou a partir da memória. Como a velocidade da CPU e o tamanho da memória têm aumentado mais rapidamente que a taxa de transferência do barramento, o gargalo se tornou um problema, cuja gravidade aumenta a cada geração de CPU.

A partir da observação do comportamento dos programas foi descrito um princípio que tenta minimizar o gargalo entre a CPU e a memória. Esse princípio é baseado no fato que a grande maioria dos programas executam repetidamente alguns trechos de código e acessam muitas vezes dados que estão armazenados próximos na memória. Observando esse comportamento dos programas foi observado o princípio de localidade.

SegundoPatterson e Hennessy(2014), o princípio de localidade diz que os programas acessam uma pequena parte do seu espaço de endereçamento em um instante de tempo e tendem a ficar acessando essa pequena parte do espaço de endereçamento por um tempo. O princípio de localidade é dividido em:

• Localidade Temporal: quando uma posição do espaço de endereçamento é referenciada, ela tende a ser referenciada novamente num futuro próximo. Isso ocorre, por exemplo, devido ao uso de loops e contadores no código.

• Localidade Espacial: quando uma posição do espaço de endereçamento é referenciada, as posições próximas tendem a ser os próximos endereços referenciados. Isso ocorre, por exemplo, devido ao uso de vetores, pilhas e busca sequencial de instruções no ciclo de busca.

Segundo Patterson e Hennessy (2014), para aproveitar o princípio de localidade temporal e espacial, as memórias de um computador podem ser construídas como uma hierarquia de memória. Aspectos da hierarquia de memória são descritos na próxima Seção.

Backus(1977) descreve uma maneira de solucionar o problema do gargalo entre a CPU e a memória. Nesse trabalho foi cunhado o termo “gargalo de von Neumann” e para converter esse problema pode-se utilizar uma memória cache entre o processador e a memória principal. Como

as memórias caches baseiam-se no princípio de localidade temporal e espacial, o problema de desempenho pode ser aliviado, até certo ponto e dependendo do padrão de acesso.

A memória cache e a memória principal fazem parte da hierarquia de memória e serão descritas com mais riqueza de detalhes na próxima Seção.