EA-869 - Dúvidas Frequentes
Capítulo VII
Como os periféricos podem ser endereçados pelo processador ao qual eles
estão conectados?
Por que o acesso ao registrador
de estado de uma interface é explicitamente de leitura e ao registrador de controle
é de escrita?
Como se faz a transferência de dados entre dois dispositivos
que trabalham em bases de tempo distintas?
Supondo que uma impressora e um terminal (monitor e teclado) são
conectados ao processador e ambas as interfaces suportam controle de transferência de dados programado
condicional e por interrupção. Identifique o controle mais apropriado para as seguintes situações:
- um programa que ecoa os caracteres digitados pelo usuário.
- um programa que imprima um relatório armazenado na Memória.
Quando se recomenda a transferência de dados via DMA?
Na comunicação serial assíncrona, como
o receptor consegue reconstruir um caracter a partir
dos bits recebidos?
O que é um bit de paridade?
Na comunicação serial assíncrona o transmissor sempre coloca na linha
dois stop bits após o envio de uma sequência de bits de dados?
Qual é a eficiência de comunicação serial assíncrona em termos de bits
de dados transmitidos?
Quais são os problemas envolvidos na comunicação serial
síncrona?
Como os periféricos podem ser endereçados pelo processador ao qual eles estão
conectados?
Vimos na seção VII.4 que um processador se comunica com os
periféricos através de interfaces. Através das interfaces, cada
periférico é representado, em geral, por um conjunto de
- registradores de dados, também conhecidos como
portas ou canais
- registradores de estado; e
- registradores de controle.
O processador acessa estes registradores tanto para leitura
(p. ex. consultar o estado de um periférico ou ler o dado
captado pelo periférico) quanto para escrita (p.ex. operação a
ser executada pelo periférico ou dado a ser transferido para
periférico). O acesso a estes registradores se faz através de
endereços.
Sob o ponto de vista do processador, duas
formas mais conhecidas de endereçar os periféricos são (seção VII.1):
- E/S isolada (mesmos barramentos de dados e de endereços,
mas distintos sinais/linhas de controle): Vimos nos Capítulos
II e III distintos sinais de controle são implementados
através de códigos de operações distintos, ou seja, nesta
arquitetura existem instruções específicas para operações de
E/S. Como as instruções de acesso à memória são isoladas
das instruções de acesso a E/S, cada um pode ter um
espaço de endereços próprio.
- E/S mapeada (mesmos barramentos de dados, de endereços
e de controle): O processador trata os registradores das interfaces
como parte da Memória (lembre-se de que a Memória é em última instância
um banco de registradores!). Tipicamente um segmento do espaço de endereços
da Memória é reservado para os registradores de interface. Através de um
circuito adicional consegue-se mapear um endereço deste segmento a
um específico registrador de uma específica interface. Com isso, pode se
manipular os dados dos periféricos com o mesmo repertório de instruções
utilizadas para acessar a Memória.
Do lado de interface, todas as pastilhas dispõem de um pino denominado chip select, CS, e
um conjunto de pinos denominados register select, RS. Estes pinos são ligados
aos barramentos de endereços. O processador seleciona uma interface através
de CS e um registrador específico dentro da interface através de RSs, como exemplifica o
seguinte esquema de uma arquitetura de E/S mapeada:
Por que o acesso ao registrador
de estado de uma interface é explicitamente de leitura e ao registrador de controle
é de escrita?
O registrador de estado informa o estado do periférico associado.
Usualmente cada bit é associado a uma determinada situação do periférico e este bit é setado
automaticamente pelo periférico toda vez que a tal situação ocorrer. O registrador
de controle, por sua vez, armazena o código de função a ser executada pela interface e o
periférico associado. Este código de função deve ser fornecido pelo processador.
Como se faz a transferência de dados entre dois dispositivos
que trabalham em bases de tempo distintas?
Dois dispositivos, como a interface e o periférico, foram projetados independentemente
e trabalham em bases de tempo distintas. Para indicar que um dado está sendo transmitido
utilizam-se sinais de controle adicionais. Dois mecanismos mais conhecidos para
este fim são:
- Controle pelo sinal de strobe: uma unidade sinaliza a outra unidade
quando uma transferência vai ocorrer; e
- Handshaking: as duas unidades trocam sinais avisando a presença de dados
no barramento e a recepção.
O sinal de strobe pode ser ativado tanto pelo transmissor como pelo receptor. Se for
pelo transmissor, este sinal é ativado após os dados serem colocados no barramento. Usualmente,
a borda de descida do sinal de strobe é utilizada para ativar o registrador do receptor
Se for pelo receptor, o transmissor responde ao sinal de strobe colocando dados no
barramento. Estes dados permanecem no barramento por um intervalo de tempo pré-determinado,
que deve ser o suficiente para transferi-los a um dos registradores do receptor. Novamente,
é comum utilizar a borda de descida do sinal de strobe para ativar o registrador
do receptor.
Um exemplo do uso de sinal de strobe para indicar a presença de dados
na linha é o conector Centronics utilizado por algumas impressoras
(UCP como fonte e a impressora como destino). Este conector será apresentado
em maiores detalhes no curso EA870.
O sinal de strobe é um sinal de controle unilateral no sentido de que o transmissor
não tem como saber se o receptor realmente recebeu os dados. Este problema é resolvido no
mecanismo de handshaking que provê um segundo sinal de controle como resposta ao
sinal inicial. Se o sinal inicial for emitido pelo transmissor ao colocar dados na linha,
o receptor responde com o sinal de "dados aceitos" assim que os dados forem transferidos
para um dos seus registradores.
E se o sinal inicial for emitido pelo receptor, requisitando dados, o transmissor responde
colocando dados válidos na linha e o sinal avisando que foram colocados os dados solicitados.
Observe que este esquema permite comunicação confiável entre unidades de velocidades distintas.
A taxa de transferência se "auto-ajusta" de acordo com a da unidade mais lenta. Portanto, é o
esquema mais utilizado.
Supondo que uma impressora e um terminal (monitor e teclado) são
conectados ao processador e ambas as interfaces suportam controle de transferência de dados programado
condicional e por interrupção. Identifique o controle mais apropriado para as seguintes situações:
- um programa que ecoa os caracteres digitados pelo usuário.
- um programa que imprime um relatório armazenado sequencialmente na Memória.
- Um programa que ecoa os caracteres digitados pelo usuário é por natureza
sequencial. Só se pode ecoar um dado após a sua entrada, ou
seja o envio de um dado ao terminal está condicionado
ao fato do teclado ter recebido o dado. E a recepção de um novo dado, por sua
vez, deve estar condicionada ao envio do dado anterior, para não perder (sobreescrever)
o dado existente no registrador de dados da interface. Portanto,
o controle de E/S mais apropriado é o programado condicional.
- O programa deve ter o endereço inicial do relatório e a partir daí ler sequencialmente
as palavras da Memória e enviá-las à impressora. Como o relatório já está integralmente
na Memória, o único fator que limita a taxa de transferência de dados para a
impressora é a velocidade da impressora. Toda vez que ela estiver "pronta" pode-se
enviar uma nova palavra até chegar ao fim do relatório. Isso pode ser feito automaticamente
via mecanismo de interrupção, ao invés de incluir explicitamente no programa instruções
que testam se a impressora está pronta para receber novas palavras. Neste caso,
é necessário prover uma rotina de serviço que lê o dado da Memória,
envia-o para a impressora e atualiza o endereço do próximo dado a ser lido
na ocorrência da próxima interrupção.
Quando se recomenda a transferência de dados via DMA?
Quando requer somente a transferência de grandes blocos de dados entre
a Memória e os dispositivos de armazenamento de grande velocidade
como unidades de CD ou de discos magnéticos.
A transferência via DMA é também útil em aplicações interativas.
Tipicamente, o conteúdo da tela de um terminal interativo raster é armazenada
numa memória dedicada, conhecida como frame buffer. Quando ocorre
alterações neste conteúdo (p.ex., reposicionar uma janela da tela), a tela deve
ser atualizada "em tempo real". Isso pode ser feita de forma eficiente via
DMA.
No Capítulo II vimos que as instruções de E/S sempre atuam em sentidos
Periférico<->UCP e Memória<->UCP. Se
precisarmos fazer uma transferência Periférico<->Memória,
no mínimo duas instruções serão requeridas. Isso pode acarretar
um aumento desnecessário no tempo de transferência.
Com o uso do
controlador DMA ( Direct Memory Acces), a transferência
Periférico<->Memória é direta sem precisar passar pela UCP.
Neste modo de transferência, a UCP delega o gerenciamento
dos barramentos de dados e de
endereços (bus grant) ao controlador e deixa que este controle o
sentido do fluxo de dados.
Observe que durante a transferência por DMA, a UCP não pode processar
nenhuma instrução que requer acesso a barramentos, nem mesmo a busca
de uma instrução!
Na comunicação serial assíncrona, como
o receptor consegue reconstruir um caracter a partir
dos bits recebidos?
Na comunicação serial assíncrona os dados são
transferidos em grupo de bits denominados
caracteres.Cada caracter é composto por bits de
"informação" e bits de controle. O intervalo de tempo
entre dois caracteres é variável e neste intervalo a
linha fica no denominado estado em repouso ou
ocioso (idle state). Por convenção, este
estado corresponde ao nível lógico 1.
Quando o transmissor intenciona enviar dados,
coloca na linha space level, conhecido
também como start bit. Envia os bits de informação e
de paridade. E o término de um caracter
é sinalizado pelos stop bits.
O receptor sincroniza a sua operação ao detetar na linha
a transição de "1" para "0". Após o intervalo correspondente
ao start bit, ele amostra, com base no seu relógio
local, os N seguintes bits de informação, no centro
nominal de cada bit. Os bits são agrupados para construir a
nova palavra. Sua paridade é calculada e comparada com o bit de
paridade recebido. Caso for diferente, o bit de erro de paridade
no registrador de estado da interface é setado.
O aspecto mais crítico neste tipo de comunicação é o temporizador
do receptor. Como vimos, a borda de descida do start bit
dispara o temporizador do receptor, que procura amostrar os bits no
seu centro nominal Se o relógio do receptor não for exatamente
sincronizado com o relógio do transmissor, esta amostragem não ocorre
exatamente no centro, podendo ocorrer por exemplo a cada (T + t) como
mostra o seguinte esquema
Assim o stop bit é amostrado no instante
(T + t)/2 + N (T + t)
O total de erro acumulado é então
(T + t)/2 + N (T + t) - (T/2 + NT) = (2N + 1)t/2.
Para garantir a correta transferência de todos os bits de um caracter é
então necessário que
T/2 > (2N + 1) t/2
e a duração do stop bit deve ser tal que permite
a resincronização.
O que é um bit de paridade?
Durante a transmissão de uma informação podem ocorrer ruídos que
alteram bits de 0 para 1, ou vice versa. Para detectar, ou até corrigi-los
automaticamente, são utilizados códigos detetores, ou corretores,
de erros. O código detector de erro mais popular é o bit de paridade.
O bit de paridade é um bit adicional a uma mensagem binária de forma que o
número total de 1's seja par (paridade par) ou
ímpar (paridade ímpar), como exemplifica a seguinte tabela:
Mensagem de 4 bits |
Bit de Paridade Par |
Bit de Paridade Ímpar |
0000 |
0 |
1 |
0110 |
0 |
1 |
1000 |
1 |
0 |
1111 |
0 |
1 |
Na comunicação serial assíncrona são sempre colocados na linha
dois stop bits após o envio de uma sequência de bits de dados?
Não. No término do envio de um caracter, a linha
deve ser mantido no nível lógico 1 (linha em repouso)
por um intervalo suficiente para o transmissor e
o receptor se
resincronizarem. O intervalo de tempo necessário depende
do equipamento. Alguns terminais eletromecânicos antigos
usam dois stop bits, enquanto os terminais mais novos
utilizam um stop bit. Alguns dispositivos modernos
dispensam, sob o ponto de vista técnico, os stop bits.
Qual é a eficiência de comunicação serial assíncrona em
termos de bits de dados transmitidos?
Na comunicação serial assíncrona são transmitidos além dos bits
de informação efetivos, os bits de controle - start bits,
stop bits e bits de paridade. Supondo um caracter constituído
por
- 7 bits de informação
- 1 start bit
- 2 stop bits
e
- 1 bit de paridade,
então o fator de eficiência da transferênica em percentagem é
7/(7+4) x 100% = 64%.
Por exemplo, numa taxa de transferência de 110 bauds (número de bits por segundo)
somente 70 bits de informação são efetivamente transferidos em cada
segundo.
Quais são os problemas envolvidos na comunicação serial
síncrona?
Na comunicação serial são eliminados os bits delimitadores de bits de
informação, tornando a comunicação mais eficiente. Ao invés de enviar
cada caracter separadamente, um bloco de bits s&cute; enviado sequencialmente.
Portanto, ela é muito utilizada em redes de computadores, onde os
dispositivos interligados (computadores) são dispositivos rápidos.
Entretanto, dois problemas críticos são inerentes a este tipo de comunicação:
- sincronização; e
- extração de informações a partir da sequência de bits recebidos.
Uma forma de manter o sincronismo entre o transmissor e o receptor é codificar
nos sinais enviados os sinais de relógio do transmissor, como mostra o seguinte
esquema:
Este sinal pode ser facilmente decodificado em sinais de dados e sinais de
relógio no receptor. Qualquer desvio entre a frequência do transmissor
e a do receptor pode ser identificado e ações de ajuste são tomadas, por exemplo pela interface, para manter
o sincronismo.
Quanto à extração correta de caracteres de informação a partir de um stream
de bits, a estratégia consiste basicamente em utilizar uma sequência de bits especial
para demarcar o início e o fim de cada bloco de mensagem. Uma vez identificado esta sequência
de bits, os bits seguintes são lidos:
- em caracter (comunicação orientada a caracter), para por exemplo dados
em ASCII; ou
- de bit a bit (comunicação orientada a bits), para dados binários.
Conforme a seção VII.6.2 do livro-texto, quando a comunicação é orientada a caracter a sequência
de bits especial é denominado o caracter de sincronismo. Em ASCII, o código 0010110 (SYN)
é reservado para esta finalidade. Para evitar que uma
sequência de bits crie um falso caracter SYN, envia-se sempre
dois caracteres SYN sequencialmente. Um formato típico de uma
mensagem na comunicação síncrona orientada a
caracter é:
SYN |
SYN |
SOH |
Cabeçalho da Mensagem |
STX |
Mensagem em caracteres |
ETX |
BCC |
onde SOH (0000001), STX (0000010) e ETX (0000011) são
caracteres que indicam, respectivamente o início do cabeçalho,
o início da mensagem e o fim da mensagem. O campo BCC contém códigos para verificação da
ocorrência de erros durante a transmissão.
Para comunicação orientada a bit, utiliza-se a sequência 01111110 como delimitador de
uma mensagem, de acordo com o seguinte formato
01111110 |
Cabeçalho |
Sequência de bits |
Campo detector de erros |
01111110 |
Para evitar que o padrão 01111110 seja confundido com uma subsequência de bits da mensagem,
é comum utilizar a técnica conhecida como bit-stuffing. Esta técnica consiste
em inserir um 0 após uma sequência de cinco 1's durante a transmissão. O receptor, após
receber a mensagem deve eliminar todos os 0's após uma sequência de 5 1's para
recuperar a sequência original.
Last modified: Thu Nov 6 23:10:29 BRA 1997
Sugestões para ting@dca.fee.unicamp.br
Voltar para a página do curso.
Ting