next up previous contents
Next: Suporte ao Sistema de Up: Arquitectura e Organização Interna Previous: Memória Externa


Entrada/Saída

A juntar ao processador e ao conjunto de módulos de memória, o terceiro elemento chave de um sistema de computação é um conjunto de módulos de E/S. Cada módulo faz o interface com o barramento de sistema ou comutador central e controla um ou mais dispositivos periféricos. Um módulo de E/S não é simplesmente um conector mecânico que liga um dispositivo ao barramento de sistema. Pelo contrário, o módulo de E/S possui alguma `` inteligência'', isto é, contém lógica para efectuar a função de comunicação entre os periféricos e o barramento.

O leitor pode perguntar-se porque é que não se conectam os periféricos directamente ao barramento de sistema. As razões são

Por isso, é necessário um módulo de E/S. Este módulo tem duas funções principais (Figura 6.1): Dá-mos início a este capítulo com uma breve discussão dos dispositivos externos, seguida por uma vista geral da estrutura e função de um módulo de E/S. Seguidamente, olhamos para as várias maneiras através das quais as funções de E/S podem ser efectuadas em cooperação com a CPU e a memória: a interface interna de E/S. Finalmente, é examinada a interface externa de E/S entre o módulo de E/S e o mundo exterior.

Dispositivos Externos

Um sistema de computação não é utilizável se não disposer de alguma espécie de entrada e de saída. As operações de E/S são realizadas através de uma vasta gama de dispositivos externos que fornecem uma forma de transferência de dados entre o ambiente externo e o computador. Um dispositivo externo pendura-se ao computador por uma ligação a um módulo de E/S (Figura 6.1). A ligação é usada para trocar controlo, status e dados entre o módulo de E/S e o dispositivo externo. Um dispositivo externo ligado a um módulo de E/S é muitas designado por dispositivo periférico ou, simplesmente, por periférico.

Figura 6.1: Modelo genérico de um módulo de E/S.
\begin{figure}
\end{figure}

De forma geral, podemos classificar os dispositivos externos dentro de três categorias:

Exemplos de dispositivos humano-legivéis são os terminais de monitores de vídeo (VDTs) e as impressoras. Exemplos de dispositivos máquino-legivéis, são os discos magnéticos e os sistemas de fita magnética e os sensores e actuadores, tais como os que são usados em aplicações de robótica. É de notar que, neste capítulo, estamos a ver os discos e os sistemas de fita magnética como dispositivos de E/S, enquanto que no capítulo 5 olhamos para estes como dispositivos de memória. De um ponto de vista funcional, estes dispositivos fazem parte da hierarquia de memória e o seu uso é apropriadamente discutido no Capítulo 5. De um ponto de vista estrutural, estes dispositivos são controlados por módulos de E/S e, por isso, tratados neste capítulo.

Em termos muito gerais, a natureza de um dispositivo externo é a mostrada na figura 6.2. O interface para o módulo de E/S está sob a forma de controlo, status e sinais de dados. Os dados estão sob a forma de conjuntos de bits para serem enviados ou recebidos do módulo de E/S. Os sinais de controlo determinam a função que o dispositivo deverá efectuar, tais como, o envio de dados para o módulo de E/S (Entrada ou Leitura), a aceitação de dados do módulo de E/S (Saída ou Escrita), relato de status, ou a efectivação de uma função particular ao dispositivo (e.g., posicionamento da cabeça leitura). Os sinais de status indicam o estado do dispositivo. Como exemplos temos READY/NOT-READY para mostrar quando o dispositivo está pronto para as transferências de dados.

Figura 6.2: Um dispositivo externo.
\begin{figure}
\end{figure}

A lógica de controlo associada com o dispositivo controla a operação do dispositivo em resposta ao módulo de E/S. O transdutor converte informação eléctrica em outras formas de energia, durante a saída, e de outras formas para energia eléctrica, durante a entrada. Tipicamente, é associado um tampão com o transdutor, para armazenar temporariamente os dados que estão a entre o módulo de E/S e o ambiente externo; é comum um tamanho de tampão de 8 a 16 bits.

O interface entre o módulo de E/S e o dispositivo externo irá ser examinado na secção 6.7. O interface entre o dispositivo externo e o ambiente ultrapassa o âmbito deste livro, mas vários exemplos, breves, são aqui apresentados .

Teclado/Monitor

A forma mais habitual de interacção utilizador/computador é o arranjo teclado/monitor. O utilizador fornece a entrada através do teclado. Esta entrada é seguidamente transmitida para o computador e pode ser apresentado no monitor. Adicionalmente, o monitor mostra os dados fornecidos pelo computador.

A unidade básica de transferência é o carácter. Associado com cada carácter há um código, tipicamente de 7 ou 8 bits de comprimento. O mais habitualmente usado nos Estados Unidos é um código de 7-bits designado por ASCII (American Standard Code for Information Interchange) e o Alphabet Number 5 International, da CCITT. Cada carácter neste código é representado por um código binário único de 7-bits; assim, podem ser representados, 128 caracteres diferentes 6.1. A tabela 6.1 lista todos os valores de códigos. Na tabela, os bits de cada carácter são de dois tipos: de impressão e de controlo. Os caracteres de impressão são: os alfabéticos, os numéricos e caracteres especiais que podem ser impressos em papel ou num ecrã. Por exemplo, a representação em bits do carácter ``K'' é $1001011$. Alguns dos caracteres de controlo têm a ver com o controlo da impressão de caracteres; um exemplo é o carácter de retorno de carreto. Outros caracteres de controlo estão relacionados com procedimentos de comunicação.

Na entrada por teclado, quando um tecla é premida pelo utilizador, gera-se um sinal eléctrico que é interpretado pelo transdutor no teclado e, seguidamente, convertido na padrão de bits de código ASCII correspondente. Este padrão de bits é seguidamente transmitido para o módulo de E/S no computador. Aí, o texto pode ser armazenado no mesmo código ASCII. Na saída, os códigos dos caracteres ASCII são transmitidos para um dispositivo externo do módulo de E/S. O transdutor no dispositivo interpreta este código e envia os sinais eléctricosnecessários para o dispositivo de saída para mostrar o carácter indicado ou para efectuar a função de controlo requerida.

Controlador de Disco

Um controlador de disco contém electrónica para troca de dados, controlo e sinais de status com um módulo de E/S, juntamente com a electrónica para o controlo do mecanismo de leitura e de escrita. Num disco de cabeça fixa, o transdutor é capaz de fazer a conversão entre os padrões magnéticos na superfície de deslocação das cabeças e os bits no tampão do dispositivo (Figure 6.2). Um disco de cabeça móvel deverá ser, também, capaz levar o braço do disco a mover-se radialmente, para dentro e para fora da superfície do disco.


Tabela 6.1: Um dispositivo externo.
\begin{table}
\end{table}


Módulos de E/S

Função do Módulo

Um módulo de E/S é a entidade dentro de um computador responsável pelo controlo de um ou mais dispositivos externos e pela transferência de dados entre aqueles dispositivos e a memória principal e os registos da CPU. Assim, o módulo de E/S tem de ter um interface interno ao computador (da CPU e a memória principal) e um interface externo para o computador (ao dispositivo externo).

As categorias principais de funções ou requisitos para um módulo de E/S caem dentro das seguintes:

Durante qualquer período de tempo, a CPU pode comunicar com um ou mais dispositivos externos de forma imprevisível, dependendo das necessidades de E/S. Os recursos internos, tais como, a memória principal e o barramento de sistema, têm de ser partilhados entre um certo número de actividade incluindo o processamento de informação de E/S. Assim, a função de E/S inclui um requisito de temporização e controlo, para controlar o fluxo de tráfego entre os recursos internos e os dispositivos externos. Por exemplo, o controlo da transferência de dados de um dispositivo externo para a CPU pode envolver a seguinte sequência de passos:

  1. A CPU interroga o módulo de E/S para testar o status do dispositivo associado.
  2. O módulo de E/S retorna o status do dispositivo.
  3. Se o dispositivo estiver operacional e pronto para transmitir, a CPU requer a transferência de dados, através de um comando para o módulo de E/S.
  4. O módulo de E/S obtém uma unidade de dados (e.g. 8 ou 16 bits) do dispositivo externo.
  5. Os dados são transferidos do módulo de E/S para a CPU.

Se o sistema usa um barramento, então cada uma das interacções entre a CPU e o módulo de E/S envolve uma ou mais arbitragens do barramento.

O anterior cenário simplificado ilustra, também, que o módulo de E/S tem de ter a capacidade de se envolver em comunicação com a CPU e com o dispositivo externo. A comunicação com a CPU envolve:

Numa outra perspectiva, o módulo de E/S tem de ser capaz de efectuar comunicação com o dispositivo. Esta comunicação envolve comandos, informação de status e dados (Figura 6.2)

Uma tarefa essencial de um módulo de E/S é a tamporização de dados. A necessidade desta função é evidente na Tabela 6.2.


Tabela 6.2: Exemplos de Dispositivos de E/S categorizados por Comportamento, Parceiro e Taxa de Dados.
\begin{table}
\end{table}


Enquanto que a taxa de transferência de e para a memória principal ou para a CPU é significantemente elevada, a taxa de transferência inferior baixa em várias ordens de grandeza para a maior parte dos dispositivos de E/S. Os dados vindos da memória são enviados para um módulo de E/S em rajadas rápidas. Os dados são tamporizados no módulo de E/S e seguidamente enviados para o periférico à sua taxa de dados. Na direcção oposta, os dados são tamporizados para não empatar a memória numa operação de transferência lenta. Assim o módulo de E/S tem de ser capaz de operar à velocidade quer do dispositivo quer da memória.

Finalmente, um módulo de E/S é muitas responsável pela detecção de erros e pelo subsequente relato de erros à CPU. Uma classe de erros inclui disfunções mecânicas e eléctricas reportadas pelo dispositivo (e.g. obstrução de papel ou pista de disco corrompida), Uma outra classe compreende as alterações não intencionais dos padrões de bits, à medida que são transmitidos do dispositivo para o módulo de E/S. Por exemplo, o código ASCII de caracteres ocupa 7 bits de um octeto. O oitavo bit é ajustado de forma a que o número total de `` uns'' no octeto seja par (paridade par) ou impar (paridade impar). Quando é recebido um octeto, o módulo de E/S verifica a paridade para determinar se ocorreu um erro.

Estrutura de um Módulo de E/S

Os módulos de E/S variam consideravelmente em complexidade e no número de dispositivos externos que controlam. Aqui, ensaiaremos, apenas, uma descrição muito geral. (Um dispositivo específico, O Intel 8255A, é descrito na Secção 6.4). A figura 6.3 fornece um diagrama de blocos geral de um módulo de E/S. O módulo liga-se ao resto do computador através de um conjunto de linhas de sinal (e.g. linhas do barramento de sistema). Os dados transferidos do, e para o, módulo são tamporizados em um ou mais registos de dados. Podem, também, existir um ou mias registos de status que fornecem informação de status. Um registo de status pode, também, funcionar como um registo de controlo, para aceitar informação detalhada de controlo da CPU.

Figura 6.3: Diagrama de Blocos de um módulo de E/S.
\begin{figure}
\end{figure}

A lógica dentro do módulo interactua com a CPU através de um conjunto de linhas. Estas são usados pela CPU para emitir comandos para o módulo de E/S. Algumas das linhas de controlo podem ser usadas pelo módulo de E/S (e.g. para arbitragem e sinais de status.) O módulo deve, também ser capaz de reconhecer e gerar endereços associados com os dispositivos que controla. Cada módulo de E/S tem um único endereço ou, no caso de controlar mais do que um dispositivo externo, um conjunto único de endereços. Finalmente, O módulo de E/S contém lógica específica de interface para cada um dos dispositivos que controla.

Um módulo de E/S funciona para permitir à CPU observar um largo gama de dispositivos de uma forma simples. Há um espectro de possibilidades que podem ser oferecidas. O módulo de E/S pode esconder os detalhes temporais, de formato e os mecanismos electro-mecânicos de um dispositivo externo, de forma a que a CPU possa funcionar em termos de comandos simples de leitura e escrita e, possivelmente, comandos de abertura e fecho de ficheiros. Na sua forma mais simples, o módulo de E/S pode, ainda, deixar muito do trabalho de controlo de um dispositivo (e.g. rebobinar uma cassete) visível à CPU.

Um módulo de E/S que toma conta da maior parte do, pormenorizada, encargo de processamento, apresentando à CPU um alto nível de interface, é usualmente designado por canal de E/S ou processador de E/S. Um módulo de E/S que seja bastante primitivo e requeira um controlo detalhado é usualmente designado por controlador de E/S ou controlador de dispositivo de E/S. Os controladores de E/S são vistos, habitualmente, em micro-computadores, enquanto que os canais de E/S são usados em grandes sistemas e os minicomputadores empregam uma mistura dos dois.

No que segue, iremos usar o termo genérico módulo de E/S, quando daí não resultar qualquer confusão, e iremos usar termos mais específicos sempre que necessário.

E/S Programada

Com operações de E/S são possíveis três técnicas. Com E/S programada, os dados são trocados entre a CPU e o módulo de E/S. A CPU executa um programa que lhe dá o controlo directo da operação de E/S, incluindo a apreensão do status do dispositivo, a emissão de comandos de leitura e de escrita e a transferência de dados. Quando a CPU emite um comando para o módulo de E/S, deve esperar até estar completa a operação de E/S. Se a CPU for mais rápida que o módulo de E/S, isto é um desperdício de tempo de CPU. Com E/S conduzida por interrupção a CPU emite um comando de E/S, continua a executar outras instruções e é interrompida pelo módulo de E/S quando este tiver concluído o seu trabalho. Tanto com E/S programada como por interrupção, a CPU é responsável por extrair os dados da memória principal e armazenar os dados na memória, para saída ou para entrada de dados, respectivamente. A alternativa é conhecida por acesso directo à memória (DMA). Neste modo, o módulo de E/S e a memória principal trocam dados directamente, sem envolvimento da CPU.

A tabela 6.3 indica a relação entre estas três técnicas. Nesta secção, exploramos a E/S programada. A E/S por interrupção e por DMA é explorada nas duas secções seguintes, respectivamente.


Tabela 6.3: Técnicas de E/S.
\begin{table}
\end{table}


Vista Geral

Quando a CPU está a executar um programa e encontra uma instrução relacionada com a E/S, executa-a através da emissão de um comando apropriado para o módulo de E/S. Com E/S programada, o módulo de E/S vai efectuar a acção requerida e seguidamente ajustar os bits apropriados no registo de status de E/S (Figura 6.3). O módulo de E/S não toma nenhuma acção ulterior para alertar a CPU. Em particular, não interrompe a CPU. Assim, é da responsabilidade da CPU verificar, periodicamente, o status do módulo de E/S até que a operação esteja concluída.

Para explicar a técnica de E/S programada, vê-la-emos primeiramente, do ponto de vista dos comandos de E/S emitidos pela CPU para o módulo de E/S e, seguidamente, do ponto de vista dos comandos de E/S executados pela CPU.

Comandos de E/S

Para executar uma instrução relacionada com a E/S, a CPU envia um endereço, especificando o módulo de E/S particular, o dispositivo de E/S e o comando de E/S. Há quatro tipos de comandos de E/S que um módulo de E/S pode receber quando a CPU se lhe dirige. Estes são classificados como controlo, teste, leitura e escrita.

Um comando de controlo é emitido para activar um periférico e dizer-lhe o que tem de fazer. Por exemplo, uma unidade de fita magnética pode ser instruída para rebobinar ou andar para a frente um registo. Estes comandos são ajustados ao tipo particular de dispositivo periférico.

Um comando de teste é usado para verificar várias condições de status associado com o módulo de E/S e os seus periféricos. A CPU irá querer saber se o periférico em questão está alimentado disponível para uso. Também quererá saber se a operação de E/S mais recente já foi concluída e se ocorreu algum erro.

Um comando de leitura leva o módulo de E/S a obter dados do periférico e a colocá-los no barramento de dados. De modo oposto, um comando de escrita leva o módulo de E/S a colher um item de dados (octeto ou palavra) do barramento de dados e transmitir subsequentemente aquele dados para o periférico.

A figura 6.4a mostra um exemplo de utilização da E/S programada para ler um bloco de dados de um dispositivo periférico ( e.g. um registo de uma unidade de fita) para a memória. Os dados são lidos uma palavra (e.g. 16 bits) de cada vez. Por cada palavra que for lida, a CPU deve manter-se num ciclo de verificação de status até descobrir que a palavra está disponível no registo de dados do módulo de E/S. Este diagrama de fluxo põe a descoberto a desvantagem principal desta técnica: é um processo consumidor de tempo que mantém o processador ocupado, sem necessidade.

Figura 6.4: Três técnicas para entrada de um bloco de dados.
\begin{figure}
\end{figure}

Instruções de E/S

Com E/S programada, há uma correspondência apertada entre as instruções relacionada com a E/S que a CPU extrai da memória e os comandos de E/S que a CPU emite para um módulo de E/S para executar a s instruções. Isto é, as instruções são facilmente convertidas em comandos de E/S e há, frequentemente, um relação simples de um-para-um. A forma da instrução depende da maneira como são endereçados os dispositivos externos.

Tipicamente, existirão muitos dispositivos de E/S ligados ao sistema, através de módulos de E/S. A cada dispositivo é atribuído um identificador único ou endereço. Quando a CPU emite um comando de E/S, o comando contém o endereço do dispositivo pretendido. Assim, cada módulo de E/S deve interpretar as linhas de endereços para determinar se o comando é para si próprio.

Quando, a CPU, memória principal e a E/S partilham um barramento comum, dois modos de endereçamento são possíveis: E/S no espaço de memória e E/S isolada. Com E/S no espaço de memória há um único espaço de endereçamento para posições de memória e para dispositivos de E/S. A CPU trata os registos de status e de dadosdos módulos de E/S como posições de memória e usa as mesmas intruções máquina para ter acesso posições de memória e dispositivos de E/S. Assim, por exemplo com $10$ linhas de endereços, um número total, combinado, de $1024$ localizações de memória e endereços de E/S podem ser suportados, em qualquer combinação.

Com E/S no espaço de memória, são necessárias, apenas, uma linha única de leitura e uma linha única de escrita. Em alternativa, o barramento pode estar equipado com linhas de leitura e escriat na memória, mais linhas de comando para entrada e saída. Agora, a linha de comando especifica quando o endereço designada uma posição de memória ou um dispositivo de E/S. A gama completa de endereços está disponível para ambos. De novo com $10$ linhas, o sistema pode, agora, suportar $1024$ posições de memória e $1024$ endereços de E/S. Uma vez que o espaço de endereços para E/S está isolada do espaço da memória, aquele é designado por E/S isolada.

Figura 6.5: E/S no Espaço de Memória e Isolada.
\begin{figure}
\end{figure}

A figura 6.5 contrasta estas duas técnicas de E/S. A figura 6.5a mostra a forma como a para um dispositivo de entrada simpes, tal como o teclado de um terminal, pode aparecer a um programador usando E/S no espaço de memória. Assume um endereço de $10$-bits com uma memória de $512$-bit (localizações $0-511$) e até $512$ endereços de E/S (localizações $512-1023$). Dois endereços são dedicados ao teclado de um determinado terminal. O endereços $516$ designa o registo de dados e o endereço $517$ designada o registo de status, que também funcuiona como registo de controlo para receber comandos da CPU. O programa apresentado vai ler $1$ octeto de dados do teclado para um registo acumulador na CPU. É de notar que a CPU dá um laço até que o octeto de dados esteja disponível.

Com E/S isolada (figura 6.5b), o aceso aos portos de E/S faz-se, apenas, através de comandos especializados de E/S, que activam as linhas de comando de E/S do barramento.

Para a maior parte dos tipos de CPUs, há um conjunto, relativamente,grande de diferentes instruções para referenciar a memória. Se for usada E/S isolada, há só algumas instruções de de E/S. Assim, uma vantagem da E/S no espaço de memória é que este grande reportório de instruçoes pode ser usado, permitindo uma mais eficiente programação. Uma desvantagem é que é consumido um valioso espaço de endereço em memória. Tanto a E/S isolado como a E/S no espaço de memória são comummente utilizadas.

E/S Conduzida por Interrupção

O problema com a E/S programada é que a CPU tem de esperar muito tempo para que o módulo de E/S, em causa, esteja pronto quer para receber ou transmitir daods. A CPU enquanto em espera, tem de interrogar, repetidamente, o status do módulo de E/S. Como resultado, o nível de desempenho do sistema, na sua totalidade, é severamente degradado.

Uma alternativca é a CPU emitir um comando de E/S para o módulo e, seguidamente, continuar a fazer outro trabalho útil. O módulo de E/S irá interromper a CPU para requerer um serviço quando estiver pronto para trocar dados com a CPU. A CPU, seguidamente, executa a transferência de dados, tal como antes, e retoma o seu processo inicial.

Vamos ver como isto trabalha, em primeiro lugar, do ponto de vista do módulo de E/S. Para entrada, o módulo recebe um comando READ (de leitura) da CPU. O módulo de E/S procede, seguidamente, para ler dados de um dos periféricos associados. Quando os dados estão no registos de dados de módulo, este produz um sinal de interrupção da CPU através de uma linha de controlo. O módulo espera, então, até que os seus dados sejam pedidos pela CPU. Quando o pedido é efectuado, o módulo coloca os seus dados no barramento de dados e fica pronto para uma outra operação de E/S.

A acção para entrada, do ponto de vista da CPU, é a seguinte. A CPU emite um comando READ. Seguidamente, vai embora e faz outra coisa qualquer (e.g. a CPU pode estar a trabalhar em vários programas diferentes ao mesmo tempo). No fim de cada ciclo de instrução, a CPU faz o teste de interrupção (Figura 3.9). Quando ocorre a interrupção, vinda do módulo de E/S, a CPU salvaguarda o contexto (e.g. contador de programa e registos da CPU) do programa corrente e processa a interrupção. Neste caso, a CPU lê a palavra de dados do módulo de E/S e armazena-a na memória. Seguidamente, restaura o contexto do programa em que estava a trabalhar (ou qualquer outro programa) e retoma a execução.

A figura 6.4b mostra o uso da E/S por interrupção para a leitura de um bloco de dados. Compare-a com a figura 6.4a. A E/S por interrupção é mais eficiente do que a E/S programada, porque elimina a espera desnecessária. Contudo, a E/S por interrupção continua a consumir muito tempo da CPU, uma vez que toda a palavra de dados que vem da memória para o módulo, ou do módulo para a memória, tem de passar através da CPU.

Processamento de Interrupção

Consideremos, em maior detalhe o papel do processador na E/S. A ocorrência de uma interrupção faz desencadear um certo número de eventos, tanto no hardware como no software do processador. A figura 6.6 mostra uma sequência típica. Quando um dispositivo de E/S completa uma operação de E/S ocorre a seguinte sequência de eventos no hardware

Figura 6.6: Processamento simples de interrupção.
\begin{figure}
\end{figure}

  1. O dispositivo emite um sinal de interrupção para o processador.
  2. O processador termina a execução da instrução corrente, antes de responder ah interrupção, como é indicado na figura 3.9.
  3. O processador verifica as interrupções, determina se existe alguma e envia um sinal de reconhecimento para o dispositivo que emitiu a interrupção. O reconhecimento permite ao dispositivo retirar o seu sinal de interrupção.
  4. O processador necessita, agora, de preparar-se para transferir o controlo para a rotina de interrupção. Para começar necessita de salvaguardar a informação necessária para retomar o programa corrente no ponto de interrupção. A mínima informação necessária é (a) o status de processador, que está contido num registo chamado palavra de status de programa (PSW) e (b) a localização da próxima instrução a ser executada, que está contida no contador de programa. Estes podem ser empurrados para a pilha 6.2.
  5. O processador carrega, agora, o contador de programa com a localização de entrada da rotina de tratamento de interrupção que irá responder a esta interrupção. Dependendo da arquitectura do computador e do projecto de sistema de operação, pode existir um único programa, um por cada tipo de interrupção, ou, um por cada dispositivo e por cada tipo de interrupção. Se existir mais do que uma rotina de tratamento de interrupção, o processador tem de determinar qual delas evocar. Esta informação pode ter sido incluída na origem do sinal de interrupção, ou o processdador pode ter de enviar um pedido para o dispostivo que emitiu a interrupção para obter uma resposta que contenha a necessária informação.

    Uma vez carregado o contador de programa, o processador prossegue para o próximo ciclo de instrução, que se inicia com uma extracção de instrução. Uma vez que a extracção da instrução é determinada pelo conteúdo do contador de programa, o resultado é que o controlo é transferido para o programa de tratamento de interrupção.

  6. Neste ponto, o contador de programa e o PSW relacionados com o programda interrompido tinham sido salvaguardados na pilha de sistema. Contudo, há uma outra informação que é considerada parte do ``estado'' do programa em execução. Em particular, o conteúdo dos registos do processador necessitam de ser salvaguardados, uma vez que, estes registos podem ser usados pelo rotina de tratamento de interrupções. Assim, todos estes valores, mais outra qualquer informação de estado, necessitam de ser salvaguardados. Tipicamente, a rotina de tratamento de interrupções começa por salvaguardar o conteúdo de todos os registos na pilha. A figura 6.7a mostra um exemplo simples. Neste caso, um programa de utilizador é interrompido depois da instrução na posição $N$. O conteúdo de todos os registos mais o endereço da próxima instrução $(N+1)$ são empurrados para o topo da pilha. O apontador de pilha é actualizado para apontar para o novo topo da pilha e o contador de programa é actualizado para apontar para o início da rotina de tratamento de interrupções.
  7. A rotina de tratamento pode, agora, prosseguir para processar a interrupção. Isto irá incluir a examinação da informação de status relacionada com a operação de E/S, ou outro evento que tenha causado a interrupção. Pode também envolver o envio de comandos adicionais ou sinais de reconhecimento para o dispositivo.
  8. Quando é completado o tratamento da interrupção, o registos salvaguardados são recuperados da pilha e restaurados nos registos (e.g., ver Figura 6.7b).
  9. O acto final é a restaturação dos valors do PSW e do contador de programa da pilha. Como resultado, a próxima instrução a ser executada virá do programa previamente interrompido.

É de notar que é importante salvaguardar todo a informação de estado acerca do programa interrompido para que seja reassumida mais tarde. Isto, porque a interrupção não é uma rotina chamada do programa. Mais propriamente, a interrupção pode ocorrer a qualquer momento e, além disso, em qualquer ponto da execução do programa de um utilizador. A sua ocorrência é imprevísivel. Na verdade, como veremos no próximo capítulo, os dois programas podem não ter nada em comum e podem pertencer a dois utilizadores distintos.

Figura 6.7: Modificações na memória e registos durante uma interrupção.
\begin{figure}
\end{figure}

Tópicos de Projecto

Na implementação da E/S por interrupção sobressaem dois tópicos: Em primeiro lugar, uma vez que haverá, quase invariavelmente, múltiplos módulos de E/S, como é que a CPU determina qual o dispositivo que provocou a interrupção? Em segundo lugar, se tiverem ocorrido múltiplas interrupções, como é que a CPU decide qual a que deverá processar?

Em primeiro lugar, vamos considerar a identificação de dispositivo. Quatro categorias gerais de técnicas são de uso comum:

A abordagem mais directa do problema é fornecer múltiplas linhas de interrupção entre a CPU e os módulos de E/S. Contudo, é impraticável dedicar mais do que algumas linhas de barramento, ou pinos da CPU, para linhas de interrupção. Consequentemente, mesmo se forem usadas múltiplas linhas, é de esperar que cada linha irá ter múltiplos módulos de E/S pendurados. Assim, uma das outras três técnicas tem de ser usada em cada linha.

Uma alternativa é a sondagenm por software. Quando a CPU detecta uma interrupção deriva para uma rotina de tratamento de interrupção, cuja tarefa é sondar cada módulo de E/S para descobrir qual dos módulos provocou a interrupção. A sondagem pode ser sob a forma de uma linha de comando separada (e.g. TESTAE/S). Neste caso, a CPU arma TESTAE/S e coloca o endereço de um módulo de E/S específico no barramento de endereços. O módulo de E/S responde afirmativamente, em caso de ter pedido a interrupção. Alternativamente, cada módulo de de E/S pode conter um registo de status endereçável. A CPU, seguidamente, lê o registo de status de cada módulo de E/S para identificar o módulo que pediu a interrupção. Uma vez identificado o módulo correcto, a CPU deriva para uma rotina de serviço de dispositivos específica daquele dispositivo.

A desvantagem da sondagem por software é que consumidadora de tempo. Uma técnica mais eficiente é usar encadeamento prioratizado. O reconhecimento da interrupção passa por um encadeamento prioratizado através dos módulos. Quando a CPU sente uma interrupção, emite um reconhecimento de interrupção. Este sinal propaga-se através de uma série de módulos de E/S até que chega a um módulo requisitante. Tipicamente, o módulo requisitante responde colocando uma palavra nas linhas de dados. Esta palavra, designada vector, é o endereço do módulo de E/S ou um outro, qualquer, identificador único. Em qualquer dos casos, a CPU usa o vector como um apontador para a rotina de serviço de dispositivos. Isto evita a necessidade de executar, em primeiro lugar, uma rotina geral de serviço de interrupção. Esta técnica é designada por interrupção vectorizada.

Há uma outra técnica que recorre a interrupções vectorizadas, que é a arbitragem de barramento. Com arbitragem de barramento, um módulo de E/S deve ganhar primeito o controlo do barramento, antes de poder armar a linha de pedido de interrupção. Assim, só um módulo, de cada vez, pode armar a linha. Quando a CPU detecta a interrupção, responde pela linha de reconhecimento de interrupções. O módulo requisitante coloca, seguidamente, o seu vector na linha de dados.

As técnicas listadas, acima, servem para identificar o módulo de E/S requisitante. Também, fornecem uma forma de atribuir prioridades quando mais do que um dispositivo está a requisitar serviços de interrupção. Com múltiplas linhas, a CPU selecciona, apenas, a linha de prioridade com prioridade mais elevada. Com sondagem por software a ordem pela qual os dispositivos são sondados determina a sua prioridade. Similarmente, a ordem dos módulos num cadeia prioratizada determina a sua prioridade. Finalmente, a arbitragem do barramento pode empregar um esquema de prioridade, tal como o discutido na seccão 3.4.

Voltamo-nos, agora, para dois exemplos de estruturas de interrupção.

O Controlador de Interrupções, Intel 8259A

O Intel 8259A fornece uma única linha de PEDIDO de INTERRUPÇÃO (INTR) e uma linha única de RECONHECIMENTO de INTERRUPÇÃO (INTA). Para que o 8086 possa manipular com flexibilidade uma variedade de dispositivos e estruturas de priorização, é habitualmente configurado com um árbitro de interrupções externas, o 8259A. Os dispositivos externos são ligados ao 8259A o qual, por sua vez, se liga ao 8086.

A figura 6.8 ilustra o uso do 8259A para ligar ao 8086 múltiplos módulos de E/S. Um único 8259A pode gerir até 8 módulos. Se for necessário controlar mais do que 8 módulos, pode ser usado um arranjo em cascata para gerir um total de 64 módulos.

Figura 6.8: Uso do controlador de interrupções 8259A.
\begin{figure}
\end{figure}

A única responsabilidade de 8259A é a gestão de interrupções. Aceita pedidos de interrupção dos módulos agarrados, determina qual das interrupções tem a prioridade mais elevada e, seguidamente, assinala a CPU, armando a linha de INTR. A CPU faz o reconhecimento através da linha de INTA. O que induz o 8259A a colocar no barramento de dados a informação de vector de interrupções apropriada. A CPU pode, então, prosseguir para processar a interrupção e comunicar directamente com o módulo de E/S para ler ou escrever dados.

O 8259A é programável. O 8086 determina o esquema de prioridade a ser usado ajustando uma palavra de controlo no 8259A. São possíveis os seguintes modos de interrupção.

O Periférico de Interface Programável, Intel 8255A

Consideremos o Periférico de Interface Programável, Intel 8255A, como exemplo de um módulo de E/S usado para E/S programada e E/S conduzida por interrupção. O 8255A é um integrado simples , módulo de E/S de uso geral, usado em conjunto com a CPU, Intel 8086. A figura 6.9 mostra o diagrama de blocos geral, juntamente com a atribuição de pinos para o invólucro de 40-pinos, em que se apresenta.

Figura 6.9: O Periférico de Interface Programável, Intel 8255A
\begin{figure}
\end{figure}

O lado direito do diagrama de blocos é o interface externo do 8255A. As 24 linhas de E/S são programadas pelo 8086 através do registo de controlo. O 8086 pode ajustar o valor do registo de controlo para especificar uma variedade de modos de operação e de configurações. As 24 linhas estão divididas em três grupos de 8 bits ($A,B, C$). Cada grupo pode funcionar como uma porta de E/S de 8-bits. Além disso, o grupo $C$ está subdividido em grupos de 4-bits ($C_A e C_B$), os quais podem ser usados em conjunção com as portas de E/S $A$ e $B$. Configuradas desta forma transportam sinais de status e de controlo.

O lado esquerdo do diagrama de blocos é a interface externa para o barramento do 8086. Inclui um barramento de dados bidireccional de 8-bits (D0 até D7), usado para transferir dados das, e para, portas de E/S e para passar informação de controlo para o registo de controlo. As duas linhas de endereço especificam uma das três portas de E/S ou o registo de controlo. A linha de CHIP SELECT (Seleccão de Dispositivo) quando é habilitada, em conjunto com a linha de (READ) ou de (WRITE) dá lugar a uma transferência. A linha de RESET é usada para iniciar o módulo.

O registo de controlo é carregado pela CPU para controlar o modo de operação e definir os sinais, se for o caso. Na operação em Modo $0$, os três grupos de $8$ linhas externas funcionam como três portas de E/S de 8-bits. Cada porta pode ser definida como entrada ou como saída. De outro maneira, os grupos $A$ e $B$ funcionam como portas de E/S e as linhas do grupo $C$ servem como linhas de controlo para $A$ e $B$. Os sinais de controlo servem dois objectivos principais: ``aperto de mão'' e pedidos de interrupção. O aperto de mão é um mecanismo simples de temporização. Uma linha de controlo é usada pelo emissor como uma linha de DATA READY (dados preparados), para avisar quando os dados estiverem presentes nas linhas de dados de E/S. Uma outra linha é usada pelo receptor como um ACKNOWLEDGE (reconhecimento), indicando que os dados foram lidos e as linhas de dados podem ser alteradas. Uma outra linha pode ser designada como uma linha de INTERRUPT REQUEST (pedido de interrupção) vinculada ao barramento de dados do sistema.

Como o 8255A é programável através do registo de controlo pode ser usado para controlar uma variedade de dispositivos periféricos simples. A figura 6.10 ilustra o seu uso para controlar o teclado/visor de um terminal. O teclado fornece entradas de 8-bits. Dois desses bits SHIFT e CONTROL (maiúsculas e controlo) tem um significado especial para o programa de tratamento de teclado executado pela CPU. Contudo, esta interpretação é transparente ao 8255A que simplesmente aceita 8-bits de dados e apresenta-os ao barramento de dados do sistema. Duas linhas de controlo para aperto de mão são fornecidas para serem usadas com o teclado.

O visor está, também, ligado por uma porta de dados de 8-bits. De novo, $2$ dos bits têm um significado especial que é transparente ao 8255A. Juntamente com as duas linhas para aperto de mão, duas linhas fornecem funções de controlo adicionais.

Figura 6.10: Interface teclado/visor para o Intel 8255A
\begin{figure}
\end{figure}

Acesso Directo AH Memória

Obstáculos ah E/S Programada e por Interrupção

A E/S por interrupção, apesar de mais eficiente do que a E/S programada simples, necessita, ainda, de intervenção da CPU para transferir dados entre a memória e o módulo de E/S. Assim, ambas as formas de E/S têm duas desvantagens inerentes.

  1. A taxa de transferêcnia de E/S está limitada pela velocidade com que a CPU pode testar e servir um dispositivo.
  2. A CPU está presa ah gestão do dispositivo. Consideremos a transferência de um bloco e dados.
Usando E/S programada simples, a CPU fica dedicada ao serviço de E/S e pode mover dados a uma taxa elevada, ao custo de não fazer mais nada. A E/S por interrupção liberta a CPU, até uma determinada extensão, ah custa da taxa de transferência de dados. Todavia, ambos os métodos têm um impacto negativo na actividade da CPU e na taxa de transferência.

Quando for necessário mover grandes volumes de dados, torna-se necessário uma técnica mais eficiente: acesso directo ah memória (DMA).

Função de DMA

A DMA envolve um módulo adicional no barramento de sistema. O módulo de DMA (figura 6.11) é capaz de imitar a CPU e, na verdade, de retirar da CPU o controlo do sistema.

Figura 6.11: Diagrama de blocos típicos de DMA.
\begin{figure}
\end{figure}

A técnica funciona como segue. Quando a CPU pretende ler ou escrever um bloco de dados emite um comando para o módulo de DMA, através do envio para o módulo de DMA da seguinte informação:

A CPU, em seguida, continua com outro trabalho. Tinha delegado a operação de E/S ao módulo de E/S e o módulo iria tomar conta dela. O módulo de DMA transfere o bloco de dados completo, uma palavra de cada vez, directamente para a, ou da, memória, sem passar pela CPU. Quando for dada por completa a transferênica, o módulo de DMA envia um sinal de interrupção para a CPU. Assim, a CPU é envolvida, apenas, no ínico e no fim da transferência (figure 6.4c)

O módulo de DMA necessita de tomar o controlo do barramento de forma a transferir os dados para a, e da, memória. Para esse efeito, o módulo de DMA tem de usar o barramento, apenas, quando a CPU não necessitar dele, ou tem de forçar, temporariamente, a CPU a suspender a actividade. A técnica anterior é a mais comum sendo designada por furto de ciclos uma vez que o módulo de DMA roupa, efectivamentem, ciclos de barramento.

A figura 6.12 mostra onde, durante o ciclo de instrução, pode ser suspensa a CPU. Em cada caso, a CPU é suspensa imediatamente antes de ter necessidade de usar o barramento. O módulo de DMA, seguidamente, transfere uma palavra e retorna o controlo para a CPU. É de notar que isto não é uma interrupção; a CPU não salvaguarda o contexto, nem poutra coisa qualquer. Pelo contrário, a CPU faz uma pausa durante um ciclo de barramento. O efeito global é fazer a CPU executar mais lentamente. Todavia, para uma transferência de E/S de múltiplas palavras, a DMA é de longe mais eficiente do que a E/S programada ou por interrupção.

Figura 6.12: Pontos de quebra e DMA durante um ciclo de instrução.
\begin{figure}
\end{figure}

O mecanismo de DMA pode ser configurado numa variedade de maneiras. São mostradas na figura 6.13 algumas das possibilidades. No primeiro exemplo, todos os módulos partilham o mesmo sistema de barramento. O módulo de DMA, actua como um substituto da CPU, usa a E/S programada para trocar dados entre a memória e o módulo de E/S através do módulo de DMA. Esta configuração, apesar de pouco dispendiosa é claramente ineficiente. Tal como com E/S programada controlada pela CPU, cada transferêcnia de uma palavra consome dois ciclos de barramento.

O número de ciclos de barramento necessários pode ser reduzido substancialmente integrando a função de DMA e de E/S. Tal como a figura 6.13b mostra, isso significa que existe um caminho entre o módulo de DMA e um ou mais módulos de E/S que não inclui o barramento de sistema. A lógica de DMA pode ser, efectivamente, uma parte do módulo de E/S, ou pode ser um módulo separado que controla um ou mais módulos de E/S. Este conceito pode ser levado um pouco mais adiante, ligando módulos de E/S ao módulo de DMA usando um barramento de E/S (Figura 6.13c). Isto reduz para um o número de interfaces de E/S, no módulo de DMA e, ao mesmo tempo, proporciona uma configuração facilmente expansível. Em todos estes casos, (figura 6.13b e c), o barramento de sistema, que o módulo de DMA partilha com a CPU e a memória, é usado pelo módulo de DMA, só para trocar dados com a memória. A troca de dados entre os módulos de DMA e de E/S têm lugar fora do barramento de sistema.

Figura 6.13: Configurações de DMA possíveis.
\begin{figure}
\end{figure}

Canais e Processadores

A evolução da Função de E/S

AH medida que os sistemas de computação evoluiram houve um padrão de complexidade e sofistificação crescente dos componentes individuais. Em parte alguma, isto, é tão evidente como na função de E/S. Os passos da evolução podem ser sumariados como se segue:

  1. A CPU controla um dispositivo periférico. Isto via-se nos dispositivos simples controlados por microprocessador.
  2. Um controlador ou módulo de E/S foi adicionado. A CPU usa E/S programada sem interrupções. Com este passo, a CPU fica, de alguma forma, divorciada dos detalhes específicos das interfaces dos dispositivos externos.
  3. É usada a mesma configuração do passo $2$ mas, agora, são empregadas interrupções. A CPU não necessita de desperdiçar tempo ah espera de que seja efectuada um operação de E/S, o que aumenta a eficiência.
  4. Ao módulo de E/S é dado acesso directo ah memória. Este pode, agora, mover um bloco de dados para a, ou da, memória sem envolvimento da CPU, excepto no ínicio e no fim da transferência.
  5. O módulo de E/S é melhorado para tornar-se um processador, de direito próprio, com um jogo de instruções especializado, adaptado para E/S. A CPU dirige o processador para executar um programa de E/S na memória. O processador de E/S extrai e executa estas instruções sem intervenção da CPU. Isto permite ah CPU especificar uma sequência de actividades de E/S e ser interrompido apenas quando a sequência completa tiver sido efectuada.
  6. O módulo de E/S tem um memória própria e é, de facto, um computador de direito próprio. Com esta arquitectura, um conjunto grande de dispositivos pode ser controlado com um envolvimento mínimo da CPU. Um emprego comum de um tal arquitectura tem sido o controlo de comunicações com terminais interactivos. O processador de E/S toma conta das tarefas envolvidas no controlo de terminais.
Ah medida que se prossegue neste caminho de evolucionário, mais e mais da função de E/S é efectuada sem intervenção da CPU. A CPU é progressivamente libertada das tarefas relacionadas com a E/S, o que aumenta o desempenho. Com os últimos dois passos (5-6) uma mudança maior ocorre com a introdução do conceito de módulo de E/S capaz de executar um programa. Para o passo $5$, o módulo de E/S é muitas vezes designado por canal de E/S. Para o passo $6$, o termo processador de E/S é muitas vezes empregue. Contudo, ambos os termos são ocasionalemente aplicados em ambas as situações. No que segue iremos utilizar o termo canal de E/S.

Características dos Canais de E/S

O canal de E/S representa uma extensão ao conceito de DMA. Um canal de E/S tem a capacidade de executar instruções de E/S, o que lhe dá um controlo completo sobre as operações de E/S. Num sistema de computação com um tal dispositivo, a CPU não executa instruções de E/S. Tais instruções estão guardadas na memória principal para serem executadas por um processador de uso-específico no próprio canal de E/S. Assim, a CPU inicia uma transferência de E/S instruindo o canal de E/S para executar um programa na memória. O programa deve especificar o dispositivo, ou dispositivos, a área, ou áreas, de memória para armazenamento, a prioridade e as accões a tomar em certas condições de erro. O canal de E/S segue as instruções e controla a transferência de dados.

São comuns dois tipos de canais de E/S, tal como é ilustrado na figura 6.14. Um canal selector controla múltiplos dispositivos de alta velocidade e, em cada tempo, fica dedicado ah transferência de dados com um daqueles dispositivos. Assim, o canal de E/S seleccciona um dispositivo e efectua a transferência de dados. Cada dispositivo, ou pequeno conjunto de dispositivos, é manipulado por um controlador, ou módulo de E/S, que é muito parecido com os módulos de E/S que temos vindo a discutir. Assim, o canal de E/S toma o lugar da CPU no comando destes controladores de E/S. Um canal multiplexador pode manipular múltiplos dispositivos de E/S ao mesmo tempo. Para dispositivos de baixa velocidade, um multiplexador de octeto aceita e transmite caracteres tão rapidamente quanto possível para múltiplos dispositivos. Por exemplo, a sequência de caracteres resultante de três dispositivos com taxas diferentes e sequências individuais $A_1A_2A_3A_4D..., B_1B_2B_3B_4...,C_1C_2C_3...$ pode ser $A_1B_1C_1A_2B_2C_2A_3B_3C_3$ e assim sucessivamente, um multiplexador de bloco intercala blocos de dados de vários dispositivos.

Figura 6.14: Arquitectura de um canal de E/S
\begin{figure}
\end{figure}

Canais e Processadores

Interface Externo

Tipos de Interface

O interface de um módulo de E/S com um periférico tem de ser ajustado ah natureza da operação do periférico. Uma característica principal do interface é ser em série ou em paralelo (figura 6.15). Num interface paralelo, há múltiplas linhas ligando o módulo de E/S e o periférico, sendo transferidos múltiplos bits simultaneamente. Da mesma forma que os múltiplos bits de uma palvra são transferidos, simultaneamente, através do barramento. Num inteface série há só uma linha usada para transmitir dados e os bits têm de ser transmitidos um de cada vez. Um interface paralelo é comummente usado para periféricos de alta velocidade, tais como disco e fita. O interface série é mais habitual em impressoras e terminais.

Em qualquer dos casos, o módulo de E/S tem de envolver-se num diálogo com o periférico. Em termos gerais, o diálogo para uma operação de escrita é como se segue:

Figura 6.15: E/S em paralelo e em série.
\begin{figure}
\end{figure}

  1. O módulo de E/S envia um sinal de controlo a pedir permissão para enviar dados.
  2. O periférico autoriza o pedido.
  3. O módulo de E/S transfere dados (uma palavra ou bloco dependendo do periférico).
  4. O periférico acusa a recepção dos dados.

Uma operação de leitura prossegue de forma similar.

A chave para a operação de um módulo de E/S é o tampão interno que pode armazenar dados, passados entre o periférico e o resto do sistema. Este tampão permita ao módulo de E/S fazer compensar as diferenças entre o barramento de sistema e as suas linhas externas.

Configurações Ponto-a-Ponto e Multi-Ponto

A ligação entre um módulo de E/S e um sistema de computação pode ser tanto ponto-a-ponto como multi-ponto. Um interface ponto-a-ponto disponibiliza uma linha dedicada entre o módulo de E/S e o dispositivo externo. Em pequenos sistemas (PCs, estações de trabalho), ligações ponto-a-ponto, incluem, tipicamente, ligações para o teclado, para a impressora e para um modem externo. Um exemplo típico de um tal interface é a especificação EIA-232 (ver para uma descrição [#!STAL!#]).

A importância crescente dos interfaces multi-ponto externos, usados para suportar dispositivos externos de arzenamento em massa (discos e unidades de fita) e dispositivos multimédia (CDROM, vídeo, áudio). Estes interfaces multi-ponto são, para todos os efeitos, barramentos externos que exibem o mesmo tipo de lógica que os barramentos discutidos no Capítulo 3. Nesta secção, examinamos dois exemplos chave: SCSI e P1349.

Interface para Pequenos Sistemas de Computação (SCSI)

Um bom exemplo de um interface para dispositivos externos é o SCSI. Popularizado, inicialmente pela Macintosh em 1984, o SCSI é, actualmente, largamento usado tanto em Macintosh e em sistemas IBM-PC compatíveis, como em muitas estações de trabalho. O SCSI é a norma para o interface de unidades de CD-ROM, equipamento de aúdio e dispositivos de armazenamento de massa. A especificação original da SCSI usa um interface paralelo, com 8, 16, ou 32 linhas.

A configuração do SCSI é geralmente designado como um barramento, embora, na verdade, os dispositivos ficam no seu conjunto em encadeamento priorizado. Cada dispositivo SCSI tem dois conectores: um para entrada e outro para saída. Todos os dispositivos, no seu conjunto, são encadeados e um dos lados pendurados no computador hospedeiro. Todos os dispositivos funcionam independentemente e podem trocar dados tanto entre si, como com o sistema hospedeiro. Os dados são transferidos em pacotes de mensagens, como é descrito abaixo:

Versões SCSI

A especificação original SCSI, agora chamada SCSI-1, foi desencolvida no início dos anos 80. O SCSI-1 apresenta 8 linhas para dados e opera a uma velocidade de relógio de 5Mhz, ou a taxa de transferêcnia de 5 MOctetos/seg. O SCSI permite pendurados no sistema hospedeiro até sete dispositivos em encadeamenmto prioritizado.

Em 1991 foi introduzida uma especificação revista, SCSI-2. As alterações mais notórias foram a expansão, opcional, das linhas de dados para 16 ou 32 e o aumento da velocidade do relógio para 10 MHz. O resultado é uma taxa de transferêcnia máxima de 20 ou 40 MOctetos/seg.

Presentemente, está em curso o trabalho de especificação do SCSI-3 que deverá suportar velocidades superiores.

Figura 6.16: Fases de Barramento em SCSI.
\begin{figure}
\end{figure}

Figura 6.17: Exemplo de Diagrama Temporal em SCSI.
\begin{figure}
\end{figure}

Figura 6.18: Formato do Descritor de Comandos de Bloco em SCSI.
\begin{figure}
\end{figure}

Barramento Série P1394

Com a velocidade dos processadores a atingir os 100 MHz e os dispositivos de armazenamento com capacidades para múltiplos, gigaoctetos, é formidável a demanda em E/S para computadores pessoais, estações de trabalho e servidores. Apesar de tudo a alta-velocidade das tecnologias de canal de E/S que têm vindo a ser desenvolvidas para sistemas de grandes computadores e de supercomputadores é demasiado dispendiosa e volumosa para ser usada em sistemas mais pequenos. Em concordância, tem havido um grande interesse em desenvolver uma alternativa de alta velocidade ao SCSI e a outros interfaces de E/S. O resultado foi a proposta de uma norma ANSI, P1349, para um Barramento Série de Elevada Desempenho.

O P1349 possui um certo número de vantagens sobre o SCSI e outros interfaces de E/S. É de elevada velocidade, baixo custo e fácil de implementar.


next up previous contents
Next: Suporte ao Sistema de Up: Arquitectura e Organização Interna Previous: Memória Externa

2000-05-10