Você está na página 1de 15

INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

BARRAMENTOS

ÍNDICE:

1. Componentes do Computador

2. Funções do Computador

3. Estruturas de Interconexão

4. Interconexão de Barramentos

5. Modelos de Barramentos

6. Bibliografia

1 de 1
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

1. COMPONENTES DO COMPUTADOR
Como já visto anteriormente, praticamente todos os projetos de computadores atuais
são fundamentados nos conceitos desenvolvidos por John von Neumann do Instituto de
Estudos Avançados de Princeton. Esse projeto, conhecido como Arquitetura von
Neumann, é baseado em três conceitos básicos:
• Os dados e as instruções são armazenadas em uma única memória de leitura e
escrita.
• O conteúdo dessa memória é endereçado pela sua posição, independentemente do
tipo de dado nela contidos.
• A execução de instruções ocorre de modo seqüencial (exceto quando essa seqüência
é explicitamente alterada de uma instrução para a seguinte).

O computador é composto de um pequeno conjunto de componentes lógicos básicos,


que podem ser combinados de vários modos para armazenar dados binários e executar
operações aritméticas e lógicas sobre esses dados. É possível obter, para cada aplicação
particular, uma configuração de componentes lógicos projetada especificamente para
executar essa aplicação. Esse processo de conectar os diferentes componentes do
sistema para obter a configuração desejada pode ser concebido como uma forma de
programação. O ‘programa’ resultante é formado pelo hardware e é chamado programa
hardwired.
Suponhamos, que agora, construímos uma configuração de funções lógicas e
aritméticas de propósito geral. Esse conjunto de componentes de hardware é capaz de
executar várias funções sobre os dados, dependendo dos sinais de controle que lhe são
aplicados. Na situação anterior, em que o hardware é dedicado para uma aplicação
particular, o sistema apenas lê dados e produz resultados (fig. 1a). Um hardware de
propósito geral é capaz de ler dados e sinais de controle e produzir resultados. Assim, em
vez de projetar um novo hardware para cada aplicação nova, o programador simplesmente
precisa fornecer um novo conjunto de sinais de controle.
Como esses sinais de controle devem ser fornecidos? Um programa é constituído de
uma seqüência de passos. A cada passo, alguma operação lógica ou aritmética é
executada sobre algum dado. Para cada passo, é necessário um novo conjunto de sinais
de controle. Podemos definir um código para cada possível conjunto de sinais de controle
e acrescentar ao hardware de propósito geral um elemento capaz de interpretar esses
códigos e gerar os sinais de controle correspondentes (fig. 1b).

2 de 2
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Figura 1: Abordagens de programação em hardware e em software

Programar agora ficou muito mais fácil. Em vez de projetar um novo hardware para
cada aplicação, precisamos fornecer apenas uma nova seqüência de códigos. Cada
código corresponde a uma instrução; uma parte do hardware interpreta essas instruções e
gera os sinais de controle correspondentes. Para distinguir esse novo método de
programação, uma seqüência de códigos ou instruções é chamada de software.
A figura 1b indica os dois componentes mais importantes do sistema: o módulo que
interpreta as instruções e o módulo que executa as funções lógicas e aritméticas de
propósito geral. Esses componentes constituem a CPU. Vários outros componentes são
necessários para que um computador possa funcionar. Os dados e as instruções devem
ser introduzidos no sistema de alguma maneira. Para isso, é necessário um módulo de
entrada de dados. Esse módulo contém componentes básicos que recebem dados e
instruções, em algum formato, e os converte em uma representação interna, composta de
sinais usados pelo sistema. Além disso, o sistema deve ser capaz de mostrar os
resultados produzidos; isto é feito por um módulo de saída de dados. Esses dois módulos
são denominados componentes de entrada/saída (E/S).
É necessário, ainda, mais um componente. Um dispositivo de entrada fornece as
instruções e os dados seqüencialmente. No entanto, um programa nem sempre é
executado seqüencialmente, podendo incluir desvios. Do mesmo modo, uma operação
pode precisar acessar mais de um dado de cada vez, em uma seqüência predeterminada.
Dessa maneira, deve existir um local para armazenar instruções e dados temporariamente.

3 de 3
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Esse módulo é chamado de memória, ou memória principal, para distingui-la da área de


armazenamento externo. Von Neumann mostrou que a mesma poderia ser usada para
armazenar tanto dados quanto instruções.
A figura 2 ilustra esses componentes de alto nível do sistema e sugere as interações
entre eles. A CPU troca dados com a memória. Para isso, ela tipicamente usa dois
registradores internos da CPU: um registrador de endereçamento à memória (memory
address register – MAR), que especifica o endereço da memória a ser usado pela próxima
instrução de leitura ou escrita, e um registrador temporário de dados (memory buffer
register – MBR), que contém um valor a ser gravado na memória ou recebe um valor lido
da memória. Da mesma maneira, o registrador de endereçamento de E/S (I/O address
register – I/O AR) especifica um determinado dispositivo de E/S. Um registrador temporário
de dados de E/S (I/O buffer register – I/O BR) é usado para troca de dados entre um
módulo de E/S e a CPU.

Figura 2: Componentes do computador: visão global

Um módulo de memória é constituído de um conjunto de posições de memória


identificadas por endereços numerados seqüencialmente. Cada posição contém um
número binário que pode ser interpretado como uma instrução ou como um dado. Um
módulo de E/S transfere dados de dispositivos externos para a CPU e para a memória e
vice-versa. Ele contém áreas de armazenamento temporário (buffers) internas, para
guardar temporariamente esses dados até que possam ser enviados.

4 de 4
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

2. FUNÇÕES DO COMPUTADOR
A função básica desempenhada por um computador é executar um programa que é
constituído por um conjunto de instruções armazenadas na memória. O processador
realiza o trabalho efetivo de executar as instruções especificadas no programa. Em sua
forma mais simples, há dois passos para o processamento de instruções: o processador lê
(busca) instruções na memória, uma de cada vez, e executa cada uma. A execução de um
programa consiste na repetição desse processo de busca e execução de instruções. A
execução de uma instrução pode envolver diversas operações, dependendo da natureza
da instrução.
O processamento necessário para a execução de uma instrução é chamado de ciclo
de instrução. Na figura 3 é mostrado o ciclo de instrução simplificado para dois passos. Os
dois passos são denominados ciclo de busca e ciclo de execução. A execução de
programas encerra-se somente se a máquina for desligada, se ocorrer algum tipo de erro
irrecuperável ou se for executada uma instrução de programa que pare a operação do
computador.

Figura 3: Ciclo de instrução básico

2.1. Busca e Execução de Instruções


No início de cada ciclo de instrução, o processador busca uma instrução da memória.
Em um processador típico, um registrador chamado contador de instruções ou contador de
programa (program counter – PC) é usado para guardar o endereço da próxima instrução
a ser buscada na memória. Normalmente, o computador sempre incrementa o PC depois
de cada busca de instrução, de modo que a próxima instrução esteja em uma seqüência
(isto é, ela está localizada no endereço de memória seguinte).
A instrução buscada na memória é carregada no registrador do processador
conhecido como registrador de instruções (instruction register – IR). Ela contém bits que
especificam a ação que o processador deve executar. O processador interpreta a
instrução e executa a ação requisitada. Em geral, essas ações são classificadas em quatro
categorias:
• Processador-memória: transferência de dados do processador para a memória ou
da memória para o processador;

5 de 5
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

• Processador-E/S: transferência de dados entre o processador e um dispositivo


periférico por meio de um módulo de E/S;
• Processamento de dados: execução de operações aritméticas ou lógicas sobre
os dados;
• Controle: determinadas instruções podem especificar que a seqüência de
execução de instruções seja alterada.
A execução de uma instrução pode envolver uma combinação dessas ações.
Consideremos um exemplo simples, que utiliza uma máquina hipotética com as
características ilustradas na figura 4. O processador possui apenas um registrador de
armazenamento de dados, denominado acumulador (AC). Instruções e dados têm, ambos,
tamanho de 16 bits. É conveniente, portanto, organizar a memória em palavras de 16 bits.
O formato das instruções contém 4 bits para o código de operação, podendo existir, assim,
24 = 16 códigos de operação distintos e até 212 = 4.096 (4k) palavras de memória que
podem ser endereçadas diretamente.

Figura 4: Características de uma máquina hipotética

A figura 5 ilustra a execução parcial de um programa, mostrando as partes da


memória e os registradores relevantes. O trecho de programa ilustrado acrescenta o
conteúdo da palavra de memória de endereço 940 ao conteúdo da palavra de memória de
endereço 941 e armazena o resultado nesse último endereço. São necessárias três
instruções, que podem ser descritas em três ciclos de busca e de execução:

6 de 6
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

1. O conteúdo do PC é 300, o endereço da primeira instrução. Essa instrução é


carregada dentro do registrador de instrução, IR.
2. Os quatro primeiros bits do IR indicam que um valor deve ser armazenado no
registrador AC. Os 12 bits restantes especificam o endereço 940, de onde o valor
deve ser obtido.
3. O PC é incrementado e a próxima instrução é buscada.
4. O conteúdo de AC é somado com o conteúdo da posição de memória de endereço
941 e o resultado é armazenado em AC.
5. O PC é incrementado e a próxima instrução é buscada.
6. O conteúdo de AC é armazenado na posição de memória de endereço 941.

Figura 5: Exemplo ilustrativo de execução de um trecho de programa

Nesse exemplo, são necessários três ciclos de instruções, cada um com um ciclo de
busca e um ciclo de execução, para somar os conteúdos dos endereços de memória 940 e
941. Em um computador com um conjunto de instruções mais complexo, um número
menor de ciclos poderia ser necessário. Processadores modernos incluem instruções que
contêm mais de um endereço. Desse modo, o ciclo de determinada instrução pode
envolver mais de uma referência à memória. Uma instrução pode também especificar uma
operação de E/S, em vez de uma referência à memória.
Levando-se em conta essas considerações adicionais, a figura 6 fornece uma visão
mais detalhada do ciclo básico de instrução mostrado na figura 3. Para um dado ciclo de
instrução, alguns estados podem ser nulos e outros podem ser visitados mais de uma vez.
7 de 7
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Figura 6: Diagrama de transição de estados de um ciclo de instrução

Os estados podem ser descritos como:


• Cálculo de endereço de instrução (cei) – instruction address calculation: o
endereço da próxima instrução a ser executada é determinado. Isso geralmente
envolve a soma de um valor constante ao endereço da instrução anterior;
• Busca de instrução (bi) – instruction fetch: uma instrução é lida da memória e
armazenada no processador;
• Decodificação de instrução (di) – instruction operation decoding: o código da
instrução a ser executada é analisado, para determinar qual é a operação a ser
realizada e o(s) operando(s) a ser(em) usado(s);
• Cálculo de endereço de operando (ceo) – operand address calculation: se a
operação envolver a referência a um operando na memória ou estiver disponível
via E/S, o endereço do operando será determinado;
• Busca de operando (bo) – operand fetch: o operando é localizado na memória
ou é lido no dispositivo de E/S;
• Execução da operação (eo) – data operation: a operação indicada na instrução é
executada;
• Armazenamento de resultado (ar) – operand store: o resultado é escrito na
memória ou no dispositivo de E/S.

Os estados na parte superior da figura 6 envolvem transferências de valores entre o


processador, de um lado, e a memória ou um dispositivo de E/S, de outro. Os estados na
parte inferior da figura envolvem apenas operações realizadas internamente no
processador. O estado ceo aparece duas vezes, pois uma instrução pode envolver uma
operação de leitura, de escrita ou ambas. Entretanto, a ação executada nesse estado é

8 de 8
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

essencialmente a mesma nos dois casos e, portanto, um único código é necessário para
identificar o estado.
O diagrama possibilita representar ciclos de instruções com múltiplos operandos e
múltiplos resultados, como ocorre em algumas máquinas. Finalmente, em algumas
máquinas uma única instrução pode especificar uma operação a ser executada sobre um
vetor de números ou sobre uma cadeia de caracteres. A execução dessa instrução
envolve repetidas operações de busca de operando e/ou de armazenamento de
resultados.

2.2. Interrupções
Quase todos os computadores possuem algum mecanismo pelo qual componentes
distintos do processador podem interromper a seqüência normal de execução de
instruções no processador. A tabela abaixo contém uma relação das classes mais comuns
de interrupções.

Interrupção de software Gerada por alguma condição que ocorra como


resultado da execução de uma instrução, tal como
overflow em uma operação aritmética, divisão por
zero, tentativa de executar uma instrução de
máquina ilegal e referência a um endereço de
memória fora do espaço de endereçamento do
programa.
Interrupção de relógio Gerada pelo relógio interno do processador. Esse
tipo de interrupção permite que o sistema
operacional execute certas funções a intervalos de
tempos regulares.
Interrupção de E/S Gerada por um controlador de E/S para sinalizar a
conclusão de uma operação ou para sinalizar a
ocorrência de uma situação de erro.
Interrupção de falha de Gerada na ocorrência de uma falha, tal como queda
hardware de energia ou erro de paridade na memória.

O mecanismo de interrupções visa, principalmente, melhorar a eficiência de


processamento. Por exemplo, suponha que o processador esteja transferindo dados para
uma impressora utilizando o esquema de ciclo de instrução da figura 3. Como a maioria
dos dispositivos externos é muito mais lenta que o processador, o processador deve
esperar o término da operação de escrita, permanecendo ocioso até que a impressora

9 de 9
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

termine de capturar os dados. Esse tempo de espera pode ser da ordem de muitas
centenas de ciclos de instrução que não envolvem acesso à memória. Isso constitui um
desperdício de tempo de processamento.
Isso é ilustrado na figura 7a. O programa de usuário efetua uma série de chamadas à
rotina WRITE, intercaladas com processamento. Os segmentos de código 1, 2 e 3
referem-se às seqüências de instruções que não envolvem E/S. As chamadas à rotina
WRITE iniciam a execução de uma rotina do sistema que efetua a operação de E/S
requisitada. Essa rotina de E/S consiste em três partes:
• Uma seqüência de instruções (marcada com rótulo 4 na figura) para preparar a
operação de E/S requisitada. Isso pode incluir a cópia de dados de saída em uma
área de armazenamento temporário especial e a preparação de parâmetros para
um comando de dispositivo;
• O comando de E/S propriamente dito. Se não for usado o mecanismo de
interrupções, uma vez emitido esse comando, o programa deve aguardar o término
da operação de E/S requisitada. Ele realiza essa espera simplesmente efetuando
repetidos testes para determinar se a operação de E/S foi concluída.
• Uma seqüência de instruções (marcadas com o rótulo 5 na figura) para completar a
operação. Isso pode incluir a ativação de um sinal (flag) para indicar sucesso ou
falha da operação.
Como a operação de E/S pode levar um tempo relativamente longo para ser
concluída, a execução da rotina de E/S fica suspensa, esperando pelo término da
operação; por isso, o programa de usuário permanece parado no ponto de chamada à
rotina WRITE por um período de tempo considerável.

10 de 10
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Figura 7: Fluxo de controle de um programa com e sem interrupções

A. As Interrupções e o Ciclo de Instrução


Com o uso do mecanismo de interrupções, o processador pode executar outras
tarefas enquanto uma operação de E/S está em andamento. Considere o fluxo de controle
apresentado na figura 7b. Como antes, o programa de usuário faz uma chamada de

11 de 11
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

sistema na forma de uma chamada à rotina WRITE. O programa de E/S solicitado, nesse
caso, consiste apenas no código de preparação e no comando de E/S requisitado. Após a
execução dessas instruções, o controle retorna ao programa de usuário. Enquanto isso, o
dispositivo externo se ocupa de obter os dados da memória do computador e imprimi-los.
Essa operação de E/S é conduzida simultaneamente com a execução das instruções do
programa de usuário.
Quando o dispositivo externo estiver pronto para ser utilizado, isto é, quando estiver
pronto para receber mais dados do processador, um sinal de requisição de interrupção é
enviado para o processador pelo módulo de E/S desse dispositivo. Em resposta a esse
sinal, o processador suspende a execução do programa atual, desviando o controle para
uma rotina que controla a operação daquele dispositivo de E/S (conhecida como tratador
de interrupções) e retornando a execução original após os dados terem sido enviados ao
dispositivo. Os pontos em que essas interrupções ocorrem são indicadas na figura 7b por
um asterisco.
Do ponto de vista do programa de usuário, uma interrupção é apenas uma interrupção
da seqüência normal de execução, que depois prossegue normalmente, quando o
processamento dessa interrupção é concluído (figura 8). Assim, o programa de usuário
não precisa de nenhum código especial que considere a possibilidade de ele ser
interrompido; o processador e o sistema operacional são responsáveis por suspender o
programa de usuário e depois por retornar sua execução no mesmo ponto.

Figura 8: Transferência de controle via interrupção

Para acomodar interrupções, um ciclo de interrupção é adicionado ao ciclo de


instrução, como mostrado na figura 9. No ciclo de interrupção, o processador verifica se
alguma interrupção ocorreu, o que é indicado pela presença de um sinal de interrupção.
Caso não exista nenhuma interrupção pendente, o processador prossegue com o ciclo de
busca. Se houver alguma interrupção pendente, o processador faz o seguinte:
12 de 12
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

1. Suspende a execução do programa atual e salva seu contexto. Isto é, salva o


endereço da próxima instrução a ser executada e qualquer outro dado relevante
para a atividade corrente do processador.
2. Armazena no PC o endereço de início da rotina apropriada de tratamento de
interrupções.

Figura 9: Ciclo de instrução com interrupções

O processador continua agora com o ciclo de busca, obtendo a primeira instrução da


rotina de tratamento de interrupções, que passa então a tratar a interrupção. O tratador de
interrupção geralmente é parte do sistema operacional. Ele determina o tipo da interrupção
e realiza as ações necessárias, de acordo com o tipo da interrupção que ocorreu. Quando
a rotina do tratador de interrupções termina de ser executada, o processador pode retornar
a execução do programa de usuário no ponto em que a interrupção ocorreu.
É claro que existe um certo custo envolvido nesse processo. Devem ser executadas
instruções adicionais para determinar o tipo da interrupção e para executar as ações
adequadas. Entretanto, como o tempo para tratamento de uma interrupção é muito menor
do que o tempo que seria despendido aguardando o término da operação de E/S, o uso de
interrupções permite que o processador seja utilizado de maneira muito mais eficiente.
No caso mais comum, especialmente para um dispositivo lento como uma impressora,
o tempo de execução de uma operação de E/S é muito maior do que o tempo de execução
de uma seqüência de instruções de um programa de usuário. Isso é mostrado na figura 7c.
Nesse caso, o programa de usuário executa a segunda chamada à rotina WRITE antes
que a operação de E/S gerada pela primeira chamada tenha sido completada. Portanto, o
programa de usuário é suspenso nesse ponto. Apenas quando a operação de E/S anterior
é completada, a nova chamada à rotina WRITE pode ser processada, iniciando uma nova
operação de E/S.
A figura 10 mostra um diagrama revisado de transição de estados do ciclo de
instrução que inclui o processamento de ciclos de interrupção.

13 de 13
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Figura 10: Diagrama de transição de estados de um ciclo de instrução com


interrupções

B. Múltiplas Interrupções
Na discussão precedente, consideramos a possibilidade de ocorrência de uma única
interrupção. Entretanto, supomos que podem ocorrer várias interrupções. Por exemplo, se
um programa estiver recebendo dados de uma linha de comunicação e enviando
14 de 14
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

resultados para impressão, a impressora gera uma interrupção sempre que completar uma
operação de impressão e o controlador da linha de comunicação produz uma interrupção
sempre que chega uma nova unidade de dados. Uma unidade de dados pode ser
constituída de um único caractere ou de um bloco de caracteres, dependendo da natureza
da comunicação. Em qualquer caso, pode ocorrer uma interrupção de comunicação
enquanto uma interrupção da impressora está sendo processada.
Existem duas abordagens possíveis para o tratamento de múltiplas interrupções. A
primeira é desabilitar as interrupções enquanto uma interrupção está sendo processada.
Enquanto as interrupções estiverem desabilitadas, o processador pode ignorar qualquer
sinal de requisição de interrupção. Caso ocorra alguma interrupção durante esse intervalo
de tempo, a interrupção permanecerá pendente e será verificada pelo processador
somente depois que as interrupções forem novamente habilitadas. Dessa maneira, quando
um programa de usuário está sendo executado e uma interrupção ocorre, as interrupções
são imediatamente desabilitadas. Quando o tratador de interrupções termina de ser
executado, as interrupções são novamente habilitadas antes que o controle volte para o
programa de usuário, e o processador verifica se ocorreu alguma outra interrupção. Essa
abordagem é simples e precisa, uma vez que as interrupções são manipuladas em uma
ordem estritamente seqüencial (figura 11a).
A desvantagem dessa abordagem é que ela não leva em consideração prioridades
relativas ou requisitos de tempo críticos.
Uma segunda abordagem possível consiste em definir prioridades para as
interrupções, permitindo que uma interrupção de maior prioridade interrompa a rotina de
tratamento de uma interrupção de prioridade mais baixa (figura 11b). Para mostrar essa
segunda abordagem, considere um sistema com três dispositivos de E/S, uma impressora,
um disco e uma linha de comunicação, com prioridades crescentes: 2, 4 e 5,
respectivamente.

15 de 15

Você também pode gostar