You are on page 1of 10

Interface de E/S Conjunto de circuitos lógicos que já vêem embarcados na placa mãe de um computador, situação esta conhecida como dispositivo

onboard, este módulo é responsável pelo controle de um ou mais dispositivos externos e pela transferência de dados entre estes dispositivos com a memória principal e os registradores da CPU. O módulo de E/S ou I/O (input/output) tem uma interface interna ao computador onde será feita a comunicação com o processador e a memória, e uma interface externa para comunicação com os dispositivos externos. Essas interfaces externas seguem padrões de protocolos mundiais para assim garantir total compatibilidade física e lógica dos dispositivos externos com o computador. As principais funções ou requisitos para um módulo de E/S são os Temporização e Controle, Comunicação com a CPU, Comunicação com o Dispositivo, Temporização dos Dados, Detecção de Erros. Essas funções e requisitos acontece em cinco etapas que ocorrem quando a CPU precisa falar com um dispositivo externo ligado ao módulo de entrada e saída são elas: 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 (8 ou 16 bits) do dispositivo externo. 5. Os dados são transferidos do módulo de E/S para a CPU. A seqüência acima ilustra também que o módulo de E/S tem que ter a capacidade de se envolver em comunicação com a CPU e com o dispositivo externo em questão. A comunicação com a CPU envolve:

Descodificação de Comandos: O módulo de E/S aceita comandos da CPU. Estes comandos são geralmente enviados como sinais no barramento de controle. Por exemplo, um módulo de E/S para um controlador de disco pode aceitar os seguintes comandos: READ SECTOR (ler sector), WRITE SECTOR (escrever sector), SEEK (procura) número de pista e SCAN (obtém) ID (identificação) de registro. Cada um dos dois últimos comandos, inclui um parâmetro que é enviado pelo barramento de dados.

• •

Dados: Os dados são trocados entre a CPU e o módulo de E/S através do barramento de dados. Relato de status: Uma vez que os periféricos são lentos, é importante saber o estado do módulo de E/S. Por exemplo, se for pedido a um módulo de E/S para enviar dados para a CPU (leitura), este pode não estar pronto a fazê-lo, porque ainda está trabalhando no

comando de E/S anterior. Este fato pode ser relatado através de um sinal de status. Sinais de status comuns são: BUSY (ocupado) e READY (pronto). Pode, também, haver sinais para reportar várias condições de erro.

Detecção de Erros: Cada dispositivo de E/S possui um endereço, tal como acontece com cada palavra na memória. Assim, um módulo de E/S tem de reconhecer um único endereço para cada periférico sobre o seu controlo

A transmissão de dados entre o modulo de entrada e saída com os dispositivos internos e externos do computador são feitas de duas formas, transmissão serial e transmissão paralela. Transmissão Serial A comunicação serial, bastante comum nos dias atuais, transmite apenas um bit por vez, porém sua comunicação se dá em modo full-duplex, em outras palavras, os dados são enviados e recebidos simultaneamente já que temos canais dedicados para que isso seja possível, ou seja, apenas este fator já faz com que uma transmissão serial seja duas vezes mais rápida que uma transmissão paralela se comparado com as mesmas taxas de transmissão. As principais características da transmissão serial são: • • • Transmissão de dados mais simples Utiliza apenas um canal de comunicação “Menor” velocidade de transmissão

Quando um dispositivo vai iniciar uma comunicação serial, ele obrigatoriamente tem que informar ao receptor que a transmissão do bit foi iniciada e concluída, caso isto não ocorra o receptor não tem como saber qual é o conjunto de bits que referencia aquela determinada mensagem, causando problemas de erros de transmissão. Existem três métodos que podem ser usados na transmissão serial par que haja a perfeita compreensão entre emissor e receptor, estes são: • Comunicação Síncrona: Os dois nós de transmissão se comunicam e sincronizam suas ações. Se dados vão ser transmitidos ou recebidos, os nós sabem da transmissão quase imediatamente e se preparam para a comunicação tendo como base taxas de transmissão e tamanhos ordenados e conhecidos de dados. É um tipo de comunicação mais cara, pois exige para o sincronismo relógios sofisticado no hardware. É utilizada por redes com alta velocidade de transmissão.

Comunicação Assíncrona: Neste tipo de transmissão bits especiais são inseridos no início e no fim de cada caracter transmitido, permitindo assim que o receptor “entenda” claramente o que foi transmitido. O receptor não precisa saber quando uma seqüência de dados será enviada nem o comprimento da mensagem, pois isto poderá ser identificado pelos bits de início-parada. Entretanto, os nós de uma linha de transmissão assíncrona precisam estar sempre prontos para receber dados sem aviso prévio do emissor. Isto faz com que comas linhas fiquem ociosas até receber o conjunto de bits característico avisando do início de uma transmissão. A maioria das comunicações é assíncrona.

Comunicação Isócrona: É um tipo de transmissão onde a taxa de transferência de dados é pré-negociada entre os dispositivos de origem e recepção, sendo criada uma taxa de entrega de dados contínua. Foi criada originalmente para permitir a entrega constante e completa de comunicações de vídeo por meio de transmissão. Ao estabelecer que uma sessão de transmissão precisara de uma largura de banda específica para o caminho e de uma taxa de bits bem definida, um fluxo contínuo e ininterrupto de dados pode ser estabelecido durante a transmissão.

Transmissão Paralela Este tipo de transmissão mais rápida que a serial, esta ficando cada vez menos comum para os dispositivos que não são integrados a placa mãe, como os Hds e as impressoras, pois este tipo de transmissão apesar de ser rápida pelo fato de transmitir os bits paralelamente, ou seja, todos ao mesmo tempo, infelizmente acaba sofrendo com limitações físicas devido às interferências eletromagnéticas geradas pelos cabos que possuem muitos filetes de cobre em paralelo, para termos idéia, na comunicação por transmissão paralela, um slot pci 32 bits, tem que obrigatoriamente possuir um meio físico que possua 32 vias de transmissão. Os efeitos de interferências eletromagnéticas só começam a causar problemas em distâncias grandes de transmissão, como por exemplo, um cabo de impressora, por isso na construção dos barramentos de uma placa mãe a melhor solução ainda é a comunicação paralela, os principais barramentos que utilizam esta tecnologia são os, PCI, FSB e Hyper Transport, pois estes barramentos necessitam de alta largura de banda e pelo fato de serem curtos fisicamente, a comunicação paralela é ainda muito eficiente para estes casos. Na transmisão paralela os bits são transmitidos simultaneamente e sua a taxa e q velocidade de transmissão depende do numero de bits do sistema e da frequência do sinal de controle ou do CLOCK. Para sabermos a taxa de transmissão aplicamos a formula TX = (CLOCK x BITS) / 8,

logo com um CLOCK de 100mhz e 64BITS, a taxa de transmissão paralela será de 800MB/S. Temos uma taxa tão alta com um clock tão baixo porque todos os bits são transmitidos de vez, ação impossível na transmissão serial. Porém o modo que esses dados são transmitidos,é em Half-Duplex, quer dizer que o meio físico é compartilhado para enviar e receber bits. As principais características da transmissão paralela são: • • • Transmissão de dados mais custosa e complexa Requer mais de um canal de comunicação Maior velocidade de transmissão

A diferença entre Serial é paralelo: Características Velocidade Custo Imunidade a ruído Distancia Serial Baixa Baixo Alto Alta Paralelo Alta Alto Baixo Baixa

Metodos de realização de entradas e/s Para a realização de operações E/S três técnicas são utilizadas, são elas a E/S programada, a E/S dirigida a interrupção e a terceira técnica trata do DMA (Direct Memory Access).

E/S Programada Na E/S programada o processador detém o controle do módulo de E/S, podendo detectar seu estado, enviar comandos de leitura e escrita além da transferência de dados. Neste caso, assim que o processador envia um comando para um módulo de E/S, precisa ficar aguardando até que a operação seja concluída. Em um cenário onde o processador é mais veloz do que o módulo de E/S logicamente isso representará uma subutilização do processador ocasionando desperdício de processamento. Quando um processador está executando um programa e existe uma instrução relacionada com E/S, nesse caso um comando é enviado ao módulo de E/S correspondente, então o módulo de E/S executa a operação e, ao término, carrega um sinal no registrador de estado do módulo E/S

e nada mais é realizado a fim de alertar o término da operação ao processador, que não é interrompido. Então cabe ao processador a responsabilidade de verificar constantemente o registrador de estado do módulo de E/S para saber se a operação foi concluída, para descrever melhor essa técnica vamos entender quatro comandos que são enviados do processador para o módulo de E/S que são eles: Controle, teste, leitura e gravação. Toda vez que um processador necessita executar operações de E/S ele gera um comando e um endereço que especifica o módulo de E/S correspondente e a um dispositivo externo são eles. Controle: Utilizado para ativação de um periférico e indicação de realização de alguma operação E/S. Teste: Utilizado para verificar os vários estados do módulo de E/S e periféricos. Leitura: Operação em que o módulo de E/S obtém um dado do periférico e o armazena em um local temporário, um registrador, por exemplo, onde o processador poderá solicitar que essa informação seja posta no barramento de dados para tenha acesso. Gravação: É o inverso do processo de leitura, ou seja, o módulo de E/S tem acesso ao dado através do barramento de dados e o envia para o periférico. Agora que vimos uma rápida descrição dos comandos vamos falar das instruções de E/S. Nesta técnica para operação de E/S existe uma correspondência entre os comandos de E/S e as instruções de E/S, ou seja, entre as instruções de E/S que o processador busca na memória e os comandos que ele envia para o módulo de E/S. Na verdade essa correspondência é freqüentemente uma-para-uma. Num típico cenário temos diversos módulos de E/S conectados a diversos dispositivos (periféricos). A cada um destes dispositivos é associado um id ou um endereço distinto. Dessa forma, quando o processador deseja efetuar uma operação de E/S, este envia um comando para o módulo e neste comando existe o endereço associado ao dispositivo desejado, assim, os módulos de E/S devem saber interpretar as linhas de endereço para distinguir se o comando é destinado a ele ou a não. No cenário mais comum temos processador, módulos de E/S e memória compartilhando um barramento comum, neste caso, dois modos de endereçamento podem ser utilizados. O endereçamento mapeado na memória e o endereçamento independente. Na E/S mapeada um único espaço de endereçamento é utilizado para endereçar posições de E/S e posições de memória. Utilizando E/S mapeada na memória, o barramento apenas precisa de duas linhas, uma para a leitura e outra para a escrita. Entretanto, linhas de comandos podem ser incluídas para especificar se um determinado endereço é correspondente a um módulo de E/S ou a uma

posição de memória. Se analisarmos qualquer endereço pode ser uma posição de memória ou um dispositivo de E/S. No modo E/S independente existe independência entre os espaços de endereços para posições de memória e para dispositivos E/S. O acesso as portas de E/S por meio desse modo é realizado através de comandos especiais lançados no barramento para ativação das linhas de comando de E/S.

Fonte da Imagem: Arquitetura e Organização de Computadores 5ª Edição – William Stallings – Página 205.

Fonte da Imagem: Arquitetura e Organização de Computadores 5ª Edição – William Staliings – Página 204.

E/S por interrupção (dirigida à interrupção) Antigamente era utilizada E/S programada onde o processador tinha que ficar na espera do dispositivo de E/S requerido estivesse pronto para enviar ou receber dados. Além de ficar na espera, o processador ainda tinha que ficar verificando continuamente o estado do dispositivo, levando assim a uma perca do desempenho do sistema. Com o adjunto do E/S por interrupção, a CPU não precisa mais ficar aguardando o dispositivo, visto que agora ela pode enviar a requisição para o dispositivo de E/S e pode executar outras instruções que estejam esperando para utilizar a CPU. Quando o dispositivo está pronto para trocar informações com o processador, este último envia uma mensagem de interrupção avisando ao processador que ele já esta pronto para iniciar a transferência de dados. Ao receber essa mensagem o processador suspende a operação que estava fazendo salvando o PC e os outros registradores. Então, começa a processar os dados de E/S.Após o término do

processamento da operação de E/S, o processador recupera o contexto do programa que foi interrompido e segue com sua execução normalmente. Existem dois tipos de interrupção: • • Interna ou de programa Externa

As interrupções internas ou de programa são aquelas provocadas geralmente por erros na execução de um programa ou de uma instrução. Exemplos: uma divisão por zero, overflow em operações aritméticas, código de operação errado, etc. Interrupções externas são aquelas que o sinal vem de fora da CPU, geralmente relacionado aos dispositivos de E/S que querem avisar ao processador que estão prontos para transferir dados. Voltando a frisar que a CPU precisa salvar todos os estados do programa interrompido, visto que para voltar a executar o programa interrompido serão necessárias essas informações, isso ocorre por que não se tem tempo exato para ocorrer interrupções, pois as mesmas podem ocorrer a qualquer hora na execução de outro programa. Mas surge uma questão importante, como a CPU vai identificar da onde veio à interrupção devido a vários dispositivos de E/S existentes.Se chegarem duas ou mais interrupções qual será a prioridade que será tratada essas interrupções. Para se descobrir qual dispositivo de E/S são utilizada quatro técnicas, são elas: • • • • Múltiplas linhas de interrupção Identificação por software Dayse Chain (identificação por hardware, vetorada) Arbitração de barramento (vetorada)

Múltiplas linhas de interrupção utiliza-se entre a CPU e os dispositivos de E/S. Na prática, entretanto, apenas poucas linhas do barramento e pinos do processador são utilizados para as linhas de interrupção. Com isto, provavelmente alguns dispositivos compartilhem as mesmas linhas. A interrupção por software ocorre quando a CPU detecta uma interrupção, a mesma sai perguntando a cada dispositivo de E/S para descobrir qual deles mandou o sinal de interrupção. Uma linha de comando especial poderá ser utilizada para isso (TEST I/O). Neste caso a CPU

ativaria o comando e colocaria o endereço de um dispositivo de E/S nas linhas de endereço.Caso o dispositivo tenha realmente enviado o sinal ele manda um OK para a CPU. O problema deste método é que consome muito tempo. O Dayse Chain que diferentemente da técnica anterior, utiliza identificação via hardware, utilizando-se uma conexão entre os dispositivos e a CPU, na forma de cadeia circular. Nesta técnica os módulos de E/S compartilham uma linha de requisição de interrupção, esta linha também é em forma de cadeia circular. Quando um processador recebe o sinal de interrupção, ele envia um sinal de reconhecimento de interrupção que se propaga pelos dispositivos, então o mesmo responde colocando uma palavra na linha de dados, essa palavra é chamada de vetor de interrupção onde neste vetor há uma informação de identificação do dispositivo. De posse dessa informação, o processador pode então enviar uma rotina específica de interrupção para esse dispositivo. A última técnica de identificação de dispositivos, é arbitração de barramento, que consiste primeiramente em o dispositivo obter o controle do barramento. Dessa forma apenas um dispositivo pode ter acesso ao barramento. Quando o processador reconhece um sinal de interrupção, ele responde pela linha de dados, e então o dispositivo manda seu vetor de interrupção nas linhas de dados. Com essas técnicas o processador consegue definir quem foi o dispositivo que mandou o sinal de interrupção. No caso das linhas da interrupção, o processador utiliza a linha que tem a prioridade maior, já na técnica de identificação de software, a prioridade é definida pela ordem em que os dispositivos são interrogados pelo processador, com o primeiro tendo maior prioridade. Nesse mesmo caminho está a Dayse Chainonde a prioridade é definida pela ordem dos módulos na conexão em cadeia circular. Na arbitração de barramento a prioridade é definida por quem pegar o barramento primeiro, já que no barramento os dispositivos podem enviar informações um de cada vez.

DMA (Direct Memory Access) Esta técnica consiste na inserção de um módulo adicional no barramento de sistema que reproduz o processador e assim controla o sistema do processador. Essa “imitação” se faz necessária para que o módulo de DMA possa enviar informações de e para a memória utilizando o barramento de sistema. Existem duas formas para esta atuação do módulo DMA, em uma delas o módulo DMA só utiliza o barramento quando este não estiver sendo utilizado pelo processador, em outra situação, e esta mais comum, o módulo de DMA forçosamente interrompe temporariamente o processador em uma técnica conhecida como “roubo de ciclo”.

Vamos agora abordar uma operação em que o processador deseja ler ou escrever um bloco de dados, neste caso ele envia ao módulo DMA um comando contendo as seguintes informações: • • • • Indicação de Operação de Leitura e Escrita Endereço do dispositivo de E/S envolvido na operação Endereço de memória para início da operação de leitura ou escrita Número de palavras a serem lidas ou escritas

No caso do endereço de memória e número de palavras a serem lidas ou escritas, estas são respectivamente armazenadas em registradores especiais de endereço e contador de dados do módulo DMA. Após o envio do comando o processador continua a executar outras instruções. Isso porque a execução da operação de E/S é agora responsabilidade do módulo DMA que transfere o bloco de dados, palavra por palavra, diretamente de ou para a memória sem necessidade da intervenção do processador. Ao finalizar a operação do módulo DMA envia um sinal de interrupção do processador, assim, o processador só é necessário no início e no final de cada operação E/S. É importante salientar que ao transferir uma palavra o módulo DMA devolve para o processador, mas isso não é de fato uma interrupção, já que o processador não necessita salvar o contexto e executar qualquer outra operação. Na verdade é apenas uma espécie de pausa com duração de um ciclo de barramento. Podemos então imaginar que a execução de instruções se tornará mais lenta, contudo essa técnica, em se tratando de transferência de bloco de palavras, é mais eficiente que as outras duas técnicas de E/S Programada e E/S por Interrupção. Abaixo segue alguns arranjos possíveis para implementação do mecanismo de DMA.