Baixe o app para aproveitar ainda mais
Prévia do material em texto
Arquitetura de Computadores 5: Sistema de entrada e saída (E/S). Módulos de E/S; tipos de operações de E/S Objetivo: Conhecer os dispositivos de armazenamento por meio do conceito e dos tipos de memórias utilizadas no computador. 1. Barramentos Em sistemas como computadores pessoais e estações de trabalho as interfaces de E/S estão ligadas ao processador através de barramentos. Os barramentos são meios de comunicação responsáveis pelo reconhecimento e endereçamento, de forma a existir interligação entre o processador e os demais componentes. É um meio de comunicação compartilhado composto por vários caminhos (ou linhas de comunicação). Um sistema de computação contém diversos barramentos que fornecem caminhos de comunicação entre seus componentes. Os barramentos podem ser divididos do seguinte modo: Figura 1: Barramento de sistema: liga o CPU com a memória principal; Barramento de I/O: liga a CPU aos outros componentes. Fonte: http://alumni.ipt.pt/~sandrina/trabalhos/barramento.gif A estrutura de um barramento é subdividida em Barramento de Dados, Barramento de Endereço e Barramento de Controle. 1.1. Barramento de Dados No Data Bus trafegam os dados entre as unidades; dentre eles: informação da instrução (através do código de operação), variável do processamento (cálculo intermediário de uma fórmula, por exemplo) ou informação de um periférico de E/S (dado digitado em um teclado). O tamanho da via de dados determina respectivamente o máximo número de instruções e a precisão do processamento aritmético (através do cálculo de ponto flutuante) ou o número de símbolos possíveis a ser representado (por exemplo, pontos de uma foto). O número de linhas é conhecido como largura do barramento de dados. Como cada linha pode transmitir 1 bit por vez, o número de linhas determina quantos bits podem ser transferidos de uma vez. Parâmetro importante para o desempenho do sistema. O tamanho do barramento de dados está ligado a capacidade de processamento do sistema. Se o processamento é simples (como o controle booleano de um CLP), 8 bits são suficientes. Por outro lado, se há a necessidade de um processamento complexo (como os sistema de multimídia onde há a necessidade de processarmos milhões de pontos de imagem) processamento de até 128 bits já estão disponíveis. Figura 2: Exemplo do uso do barramento de dados pela CPU. Fonte: http://www.mitchellwebdesign.com/arm/images/busstructure.gif 1.2. Barramento de Endereço O Address Bus é usado para designar a fonte ou o destino dos dados transferidos pelo barramento de dados. Ele conduz endereços. Quando o processador deseja ler uma palavra da memória, ele coloca o endereço da palavra desejada nas linhas de endereço. A largura do barramento de endereço determina a capacidade máxima da memória. Em geral, linhas de endereço são utilizadas para endereçar portas de E/S. Figura 3: Barramento de endereço. Fonte: http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH03/ch03a1.gif 1.3. Barramento de Controle O Control Bus serve para sincronizar as atividades do sistema. Ele conduz o status e a informação de controle de/para o Microprocessador. É utilizado para controlar o acesso e a utilização das linhas de dados e de endereço. Como ambas (linhas de dados e de endereço) são usadas por todos os componentes, deve existir uma maneira de controlá-las. Os sinais de controle são utilizados tanto para transmitir comandos, quanto para informações de temporização entre os módulos do sistema. As linhas de controle típicas são: • Escrita na Memória • Leitura da Memória • Escrita em porta de E/S • Leitura de porta de E/S • Confirmação (ACK) de transferência • Requisição do barramento • Requisição de Interrupção • Relógio • Inicialização (reset) Os barramentos são como linhas de comunicação real. Eles podem ser posicionados como parte do circuito de um chip (barramentos internos) ou podem servir de comunicação externa entre os chips (barramentos externos). Os barramentos externos podem ser expandidos para facilitar a conexão de dispositivos especiais. Um projeto eficiente de barramentos é crucial para a velocidade do sistema. Figura 4: Exemplo de barramento. http://image.shutterstock.com/display_pic_with_logo/213277/213277,1288036180,1/stock-photo- detail-of-printed-circuit-board-old-motherboard-63742870.jpg A organização típica de um computador incluindo o subsistema de E/S e as subdivisões do barramento é mostrada na figura abaixo. Figura 5: Barramento e suas subdivisões. Fonte: STALLINGS, Willian. Arquitetura e Organização de Computadores, 5ª Edição. Prentice Hall. São Paulo, 2006. 1.4. Princípios de comunicação Quando um módulo do sistema deseja enviar dados para outro, ele deve: • obter o controle do barramento; • e transferir os dados por meio do barramento. Quando um módulo do sistema deseja requisitar dados de outro, ele deve: • obter o controle do barramento; • transferir uma requisição para o outro módulo por meio das linhas de endereço e de controle apropriadas; • e aguardar os dados resultantes do envio. O Sistema operacional também tem um papel importante, pois é o principal responsável pelo tratamento da E/S, uma vez que possui as seguintes atribuições: • garantir que o programa do usuário somente acesse os dispositivos de E/S para os quais o programa de usuário tenha permissão; • fornecer rotinas de manipulação das operações de baixo nível dos dispositivos de E/S; • e tratar as interrupções geradas pelos dispositivos (da mesma maneira que trata as exceções geradas por um programa). Figura 6: Interligação entre software e hardware no processo de comunicação. Fonte: STALLINGS, Willian. Arquitetura e Organização de Computadores, 5ª Edição. Prentice Hall. São Paulo, 2006. O subsistema de E/S isola complexidade dos dispositivos das camadas superiores (sistema de arquivos ou aplicação). Permite flexibilidade ao S.O. para comunicação com qualquer tipo de periférico. Os detalhes do periférico (velocidade de transferência, tipos de operações, etc) ficam a cargo do device driver de cada dispositivo. 1.5. Barramento dedicado O barramento dedicado tem uma função fixa ou é associado a um subconjunto de componentes físicos de um computador. Ex: linhas distintas para dados e endereços. Tipicamente é empregado na interligação entre os componentes internos do processador. 1.6. Barramento multiplexado Permite a utilização de uma mesma linha do barramento para diferentes propósitos. Um esquema muito utilizado é a multiplexação de tempo, onde transmissão de dados e endereços alterna o uso do barramento durante intervalos de tempos. A principal vantagem deste tipo de barramento é a economia com de espaço com os barramentos e, consequentemente, custos. Com a multiplexação, no início de uma transferência de dados, o endereço é colocado no barramento e a linha de endereço válido é ativada. Cada módulo do sistema tem um determinado período de tempo para ver se os dados são endereçados a ele e copiar o endereço. O endereço é removido do barramento e as mesmas linhas são utilizadas para transferência dos dados. 1.7. Arbitração de barramento Como no barramento, apenas uma unidade pode realizar uma transmissão de cada vez, é necessária a arbitração. Mecanismos de arbitração do uso do barramento são necessários para controlar seu uso já que vários componentes podem compartilhar um mesmo canalde comunicação e, assim, desejar transmitir informações pela estrutura no mesmo instante de tempo. Os métodos utilizados para este controle são classificados em: centralizado e distribuído. 1.7.1. Arbitração centralizada Um único árbitro determina quem será o próximo mestre do barramento. Ele não é capaz de distinguir entre ausência e presença de requisição de uso do barramento (bus request). Pode ser o processador ou um chip o escolhido para ser o árbitro. Quando o árbitro “enxerga” a requisição do barramento, ele envia um sinal de garantia de uso do barramento (bus grant) por meio de uma linha dedicada. A arbitragem é então definida pelo esquema conhecido como Daisy Chaining (não muito justo). Tem a propriedade de estabelecer implicitamente uma prioridade para uso do barramento. Quanto mais perto fisicamente do árbitro estiver um dispositivo, mais prioridade ele terá para usar o barramento. Há a possibilidade do estabelecimento físico de linhas de requisição e de garantia de uso do barramento com níveis de prioridades diferentes. Cada dispositivo é ligado a um dos níveis de prioridade para requisição do barramento. Figura 7: Arbitração centralizada. Fonte: http://www.dpi.inpe.br/~carlos/Academicos/Cursos/ArqComp/3-39.jpg 1.7.2. Arbitração distribuída Neste tipo de arbitração não existe controlador central. Cada módulo contém uma lógica de controle de acesso e os módulos agem de forma conjunta para compartilhar o barramento. Todos os dispositivos monitoram todas as linhas. Ao final do ciclo de requisição, cada dispositivo sabe se foi ou não ele que requisitou a linha de maior prioridade. Apresenta muitas linhas de requisição de barramento, mas não possui o custo de se ter um árbitro. Outra forma de se implementar arbitração distribuída é por meio do uso de três linhas: Bus Request, Busy (ativada pelo mestre atual do barramento) e a linha de arbitragem (arbitration line). A linha de arbitragem é conectada a todos os dispositivos no modo daisy chaining e permanece ativa enquanto nenhum dispositivo precisar do barramento. Figura 7: Arbitração distribuída. Fonte: http://www.dpi.inpe.br/~carlos/Academicos/Cursos/ArqComp/3- 40.jpg 1.8. Temporização Faz referência ao modo como as operações/eventos de barramento são coordenadas. Basicamente, temos um esquema de transmissão síncrona e outro assíncrona. 1.8.1. Temporização síncrona A ocorrência de eventos é determinada por um relógio. O barramento inclui uma linha de relógio pela qual transmite uma seqüência de 1s e 0s de igual duração. Uma transmissão de um 1 e um 0 é denominado ciclo do relógio. Todos os dispositivos conectados ao barramento podem ler a linha de relógio e todos os eventos no barramento devem começar no início de um ciclo do relógio. 1.8.2. Temporização assíncrona Não possui nenhuma linha de clock do barramento. Os ciclos de barramento podem ser de qualquer tamanho e não precisam ser os mesmos para todos os pares de dispositivos. Em vez de amarrar todos os eventos ao clock, quando o mestre ativa o endereço, os sinais MREQ e RD, um sinal especial MSYN (Master SYNchronization) deve ser ativado. Quando o escravo enxerga o MSYN ativo, ele faz seu trabalho o mais rápido possível. Ao terminar, o sinal SSYN (Slave SYNchronization) é ativado. O sinal SSYN ativo informa ao mestre que os dados estão disponíveis. A ocorrência de um evento no barramento depende da ocorrência de um evento ocorrido anteriormente. Comparando os dois métodos de temporização, observa-se o seguinte: • O barramento síncrono é mais simples de se trabalhar, em virtude dos intervalos discretos de tempo. Tudo acontece em múltiplos de ciclo de clock do barramento. • No síncrono pode ocorrer o seguinte problema: se uma CPU e uma memória forem aptos a completar uma transferência em 3,1 ciclos, será necessário esperar quatro ciclos se completarem. • No síncrono, se as velocidades dos dispositivos forem heterogêneas,o desempenho do sistema estará limitado pelo desempenho do dispositivo mais lento, ou seja, o barramento deve operar de acordo com a velocidade desse dispositivo. • Os ganhos de performance em processadores e dispositivos de I/O ficam limitados ao desempenho do barramento síncrono. • No assíncrono, a lentidão de um determinado par mestre-escravo não afeta a velocidade de outros pares que poderão ser mais rápidos quanto mais lentos que o outro par. • Em geral, um sistema assíncrono é mais complicado e mais custoso de se construir do que um sistema síncrono (construção de dispositivos capazes de detectar e tratar os sinais). 1.9. O módulo de E/S Um módulo de E/S ou Interface é o elemento responsável pelo controle de um ou mais dispositivos externos e pela transferência de dados entre aqueles dispositivos e a memória principal e os registradores da CPU. Assim, o módulo de E/S precisa conter uma interface interna ao computador (da CPU e a memória principal) e uma interface externa para o computador (ao dispositivo externo). Figura 8: Conexão existente entre o módulo de E/S e o barramento. Fonte: STALLINGS, Willian. Arquitetura e Organização de Computadores, 5ª Edição. Prentice Hall. São Paulo, 2006. 1.9.1. Justificativas para o uso de Interfaces Há uma grande variedade de periféricos, com diferentes mecanismos de operação. É impraticável incorporar a lógica necessária para controlar vários dispositivos diferentes. A taxa de transferência de dados dos periféricos é relativamente baixa. Não faz sentido usar barramentos de alta velocidade para comunicação direta com um periférico. Os periféricos usam freqüentemente formatos de dados e tamanhos de palavras diferentes dos usados internamente. 1.9.2. Funções principais As categorias principais de funções ou requisitos para um módulo de E/S são: • Temporização e controle. • Comunicação com a CPU. • Comunicação com o dispositivo periférico. • Temporização dos dados. • Detecção de erros. Durante qualquer período de tempo, a CPU pode comunicar-se 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 que ser partilhados entre certo número de atividades, incluindo o processamento de informação de E/S. Assim, a função de E/S inclui um requisito de temporização e controle, para gerenciar o fluxo de tráfego entre os recursos internos e os dispositivos externos. Por exemplo, o controle da transferência de dados de um dispositivo externo para a CPU pode envolver a seguinte seqüência de passos: a) A CPU interroga o módulo de E/S para testar o status do dispositivo associado. b) O módulo de E/S retorna o status do dispositivo. c) 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. d) O módulo de E/S obtém uma unidade de dados (por exemplo, 8 ou 16 bits) do dispositivo externo. e) Os dados são transferidos do módulo de E/S para a CPU. O contexto anterior ilustra 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. A comunicação com a CPU envolve: • Decodificaçã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 setor), WRITE SECTOR (escrever setor), SEEK (procura) número detrilha e SCAN ID 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 controle. 1.9.3. Como ocorre a comunicação A transferência de dados da memória principal para o módulo de E/S é feita rapidamente. Esses dados são temporariamente armazenados no módulo de E/S e então enviados para o dispositivo numa taxa adequada. No caminho oposto, os dados são também armazenados temporariamente no módulo de E/S para não reter a memória numa transferência de dados a baixa velocidade. O módulo de E/S deve ser capaz de realizar operações tanto à velocidade da memória quanto à do dispositivo externo. Figura 9: Exemplo de comunicação num módulo de E/S. Fonte: STALLINGS, Willian. Arquitetura e Organização de Computadores, 5ª Edição. Prentice Hall. São Paulo, 2006. Durante o processo de comunicação de dados podem ocorrer falhas, tais como: • Mau funcionamento elétrico ou mecânico: falha de alimentação de papel; t Trilha de disco defeituosa; etc. • Alterações no padrão de bits transmitidos por um dispositivo para o módulo de E/S. Bits de paridade. Assim como acontece em relação à memória principal, o processador realiza acessos de leitura ou de escrita a uma interface de e/s. Em um acesso de leitura, o processador obtém um dado recebido do dispositivo periférico conectado à interface, ou então uma informação de estado sobre uma operação de e/s em andamento ou recém-completada. Em um acesso de escrita, o processador fornece à interface um dado que deve ser enviado ao dispositivo periférico, ou então o código de um comando que inicia uma operação de e/s ou uma operação de controle sobre o dispositivo periférico. Cada interface de e/s é identificada por um endereço único. Em um acesso de leitura, o processador coloca o endereço da interface no barramento de endereço e ativa um sinal de leitura. Após certo intervalo de tempo, a interface coloca a informação desejada no barramento de dados. O processador finaliza o ciclo de barramento lendo a informação presente no barramento de dados e retirando o endereço e o sinal de controle. Em um acesso de escrita, o processador coloca o endereço da interface e o dado nos respectivos barramentos, e ativa um sinal de escrita. A interface selecionada armazena a informação presente no barramento de dados. No final do ciclo de barramento, o processador retira o endereço e o dado e desativa o sinal de controle. Assim como nos ciclos de barramento com a memória, todos estes eventos são comandados pelo processador e ocorrem em sincronismo com o sinal de clock. 1.9.4. Estrutura Interna de um Módulo de E/S Podemos considerar que uma interface de e/s é organizada em duas partes (parte genérica e parte específica), como mostra a figura a seguir. Figura 10: Organização da interface de E/S em duas partes (genérica e específica). Fonte: STALLINGS, Willian. Arquitetura e Organização de Computadores, 5ª Edição. Prentice Hall. São Paulo, 2006. A parte genérica, como o próprio nome indica, é semelhante entre os diferentes tipos de interfaces de e/s. É esta porção da interface que é vista pelo processador. Em geral, na parte genérica existem alguns registradores, cujo número e função depende em parte do tipo de periférico acoplado à interface. No entanto, na maioria das interfaces a parte genérica inclui pelo menos um registrador de dados, um registrador de controle e um registrador de estado. O acesso a cada um destes registradores é feito pelo processador através de um endereço de e/s diferente. O registrador de dados é usado para as transferências de dados entre o processador e o dispositivo periférico. Em uma operação de saída, o processador escreve um dado neste registrador e a interface se encarrega de enviá-lo para o periférico. No sentido contrário, em uma operação de entrada, a interface recebe um dado do periférico e o armazena no registrador de dados. O processador executa então um acesso de leitura à interface o obtém o dado depositado no registrador. Figura 11: Uso do registrador pelo processador. Fonte: STALLINGS, Willian. Arquitetura e Organização de Computadores, 5ª Edição. Prentice Hall. São Paulo, 2006. O processador usa o registrador de controle para enviar comandos à interface. Este comando é enviado sob a forma de um código. Cada interface possui um repertório de comandos próprio. Quando o processador escreve um comando no registrador de controle, a interface interpreta o código do comando e executa a operação solicitada, que pode ser uma operação interna à interface ou sobre o periférico a ela conectado. Finalmente, o registrador de estado é usado para veicular informação geral sobre uma operação de e/s. Tipicamente, este registrador possui bits para indicar o término de uma operação e para indicar condições de erro que eventualmente possam acontecer durante a operação. A parte específica interage diretamente com o periférico, e por isso ela difere bastante entre os diferentes tipos de interfaces. No entanto, apesar das diferenças, a parte específica na maioria das interfaces possui dois conjuntos de sinais. Um deles é a própria via através da qual são transferidos os dados entre a interface e o periférico. O outro conjunto é formado pelos sinais usados no controle do periférico. Exercícios de fixação a) O que você entende por barramento de sistema? E como é subdividido? b) Dentre as subdivisões de barramentos (de Dados, de Endereço e de Controle), qual pode ser considerado como o mais importante? Justifique. c) Quais são os papéis do S.O. quanto a entrada e saída de dados do sistema? d) Diferencie barramento dedicado de barramento multiplexado. e) Qual a melhor alternativa: arbitração centralizada ou distribuída? Explique. f) Por que a temporização assíncrona de barramento é considerada mais eficaz? g) Identifique as principais atribuições de uma Interface de E/S. h) Quanto à estrutura interna de um módulo de E/S, diferencie a parte genérica da parte específica. BIBLIOGRAFIA BÁSICA STALLINGS, Willian. Arquitetura e Organização de Computadores, 5ª Edição. Prentice Hall. São Paulo, 2006. TANENBAUM. Andrew S. Organização Estruturada de computadores. Edição 5ª. LTC. Rio de Janeiro, 2007. MACHADO, Francis B., MAIA, Luiz P. Arquitetura de Sistemas Operacionais. Edição 4ª. LTC. Rio de Janeiro, 2007. BIBLIOGRAFIA COMPLEMENTAR WEBER, Raul Fernando. Arquitetura de computadores pessoais, Edição 2ª. Sagra Luzzatto. Porto Alegre, 2003. WEBER, Raul Fernando. Fundamentos de Arquitetura de Computadores, Edição 3ª, Porto Alegre, Sagra Luzzatto, 2004.
Compartilhar