
MZ Editora
Membro VIP-
Posts
28 -
Cadastrado em
-
Última visita
Nunca
-
STAR ALPHA começou a seguir MZ Editora
-
MZ Editora se cadastrou na comunidade
-
Tópico para a discussão do seguinte conteúdo publicado no Clube do Hardware: Arquitetura de 64 bits da AMD (x86-64) "Aprenda tudo sobre o funcionamento da arquitetura de 64bits da AMD." Comentários são bem-vindos. Atenciosamente, Equipe Clube do Hardware https://www.clubedohardware.com.br
-
Tópico para a discussão do seguinte conteúdo publicado no Clube do Hardware: Arquitetura Plug and Play "Aprenda sobre o funcionamento da Arquitetura Plug and Play." Comentários são bem-vindos. Atenciosamente, Equipe Clube do Hardware https://www.clubedohardware.com.br
-
Tópico para a discussão do seguinte conteúdo publicado no Clube do Hardware: USB - Estrutura de Software "Saiba tudo sobre a estrutura de software do barramento USB." Comentários são bem-vindos. Atenciosamente, Equipe Clube do Hardware https://www.clubedohardware.com.br
-
Tópico para a discussão do seguinte conteúdo publicado no Clube do Hardware: USB - Estrutura Elétrica "Saiba tudo sobre a estrutura elétrica do barramento USB." Comentários são bem-vindos. Atenciosamente, Equipe Clube do Hardware https://www.clubedohardware.com.br
-
Tópico para a discussão do seguinte conteúdo publicado no Clube do Hardware: DVD - Arquitetura "Veja como funciona os aparelhos de DVD." Comentários são bem-vindos. Atenciosamente, Equipe Clube do Hardware https://www.clubedohardware.com.br
-
Continuando o estudo dos artigos anteriores, neste artigo exporemos a arquitetura de 64 bits da AMD. Ao longo dos últimos quatro meses, vimos o surgimento dos computadores, dos microcomputadores e a consolidação dos seus princípios fundamentais. Em seguida, estudamos como esses princípios evoluíram para o processamento paralelo e os novos problemas que daí surgiram. De posse dessas idéias, pudemos melhor compreender a complexidade das modernas máquinas de alto desempenho. Constatamos também que o processamento paralelo não está limitado às máquinas sofisticadas, mas é empregado em diversos processadores. Mesmo nossos “velhos” PCs-Pentium fazem uso de um paralelismo, mas a nível de instrução, ou seja, executam mais de uma instrução por vez. Agora, neste artigo e no próximo, abordaremos os processadores de 64 bits que irão impulsionar nossos próximos computadores pessoais. Os projetos da Intel e AMD são inovadores e, se as promessas forem cumpridas, em menos de um ano deverão estar nas prateleiras das lojas. Essas novas arquiteturas prometem levar o paralelismo ainda mais longe, fornecendo mecanismos para que os compiladores passem para as CPUs não só as instruções arrumadas de forma eficiente, mas principalmente como e quais podem ser executadas em paralelo. Quando se fala de CPUs de 64 bits, é importante elucidar uma certa confusão que se faz com processadores atuais. Devemos ter claro que todos os atuais processadores, Intel ou AMD, são CPUs de 32 bits. O Pentium 4 ou o Athlon têm barramento de dados de 64 bits, porém a arquitetura da CPU é de 32 bits. Neste artigo, vamos ver o que a AMD está planejando para a sua arquitetura de 64 bits. No mês que vem, será a vez da Intel. Arquitetura x86-64 da AMD Iniciamos com uma pergunta: como fazer a transição das CPUs de 32 bits para 64 bits? A AMD está respondendo a esta pergunta com uma arquitetura que, além do ambiente 64 bits, promete compatibilidade com todos os programas desenvolvidos para 16 e 32 bits. O objetivo é oferecer um caminho de baixo custo para que os usuários façam essa transição de forma bastante suave. Com uma arquitetura compatível com o mundo x86, os fabricantes de placas, de software e os usuários podem gerenciar mais facilmente seus investimentos. A ideia é oferecer uma ponte segura para a transição de 32 para 64 bits. A computação de 64 bits está voltada para aplicações que têm uma grande “fome” por memória, como as grandes bases de dados, as ferramentas CAD e as simulações que, de acordo com os recursos atuais, estão limitadas pelo espaço de endereçamento de 4 GB. Até há pouco tempo, dizia-se que as CPUs RISC ultrapassariam de forma definitiva as arquiteturas CISC. Porém, isso não aconteceu e as atuais máquinas CISC se equiparam às RISC, em termos de operações com inteiros, e já diminuíram bastante desvantagem que tinham em operações com ponto-flutuante. Por isso, afirma a AMD, os próximos ganhos de desempenho terão mais a ver com as técnicas de implementação (ex: paralelismo) do que com o conjunto de instruções: RISC, CISC-64 ou VLIW. Na verdade, há um certo abuso com esses nomes, pois as atuais CPUs x86 só têm uma casca CISC, sendo seu núcleo formado por máquinas RISC. A AMD está denominando sua nova arquitetura de “x86-64” e ela será iniciada com uma família de processadores que tem o nome código “Hammer”. As promessas apontam para a comercialização ainda no final deste ano. A estratégia de 64 bits da AMD é a extensão das atuais CPUs x86 para trabalharem em 64 bits, com a introdução do chamado Modo Longo. Essa solução é segura pois já foi empregada por ocasião da transição de 16 bits (CPUs 8088 e 286) para 32 bits (CPUs 386 e diante). Desde há muito tempo, as CPUs de 32 bits operam em dois modos. Quando em modo real, elas ficam iguais ao antigo 8088, porém, quando em modo protegido, elas oferecem recursos de 32 bits, junto com gerenciadores de tarefas e de memória. A arquitetura x86-64 oferece um novo modo denominado “Modo Longo”, em inglês “long mode”, que serve para colocar a CPU operando a 64 bits. Quando em Modo Longo, além dos recursos de 64 bits, são oferecidos registradores estendidos para 64 bits e, além disso, novos registradores foram adicionados. Passemos ao estudo desse novo modo. O Modo Longo é ativado através de um bit de controle chamado LMA, do inglês “Long Mode Active”. Quando o LMA estiver desativado, o processador operará no modo padrão x86 e será compatível com os sistemas operacionais e aplicativos de 16 e 32 bits, ou seja, será compatível com tudo que existe nos dias de hoje. Quando o LMA for ativado (Modo Longo), a extensão de 64 bits estará habilitada, oferecendo uma nova CPU de 64 bits. O Modo Longo é ainda dividido em dois submodos: o Modo 64-bits e o Modo Compatível. Esses dois submodos são controlados pelos bits D e L, presentes no descritor apontado pelo registrador CS (Segmento de Código). O Modo Compatível é interessante porque permite que, a nível de programa, se rodem aplicativos de 16 ou 32 bits dentro do Modo 64-bits. É algo semelhante ao modo virtual 86 dos processadores 386. A Figura 1 apresenta um quadro explicativo desses modos. Figura 1: Modos de operação da família x86-64. O antigo modo x86 (32 ou 16 bits) é denominado Modo Legal (LMA=0). Quando nesse modo, as CPUs x86-64 podem trabalhar com dados de 16 ou 32 bits. Note que, quando nesse modo, o estado do bit CS.L não tem significado, ou seja, ele é um “don’t care”. Quando colocado em Modo Longo 64-bits (LMA=1, CS.L=1 e CS.D=0), o tamanho padrão do operando é de 32 bits e o tamanho padrão para o endereçamento é de 64 bits. Com o uso de prefixos de instrução, o tamanho do operando pode ser alterado para 64 ou 16 bits e o tamanho do endereço para 32 bits. Se colocado no Modo Longo Compatível (LMA=1 e CS.L=0), passa a existir a compatibilidade binária com as aplicações escritas em 16 e 32 bits x86. Isso é interessante, pois um sistema operacional em Modo Longo pode rodar os atuais programas de 16 e 32 bits apenas colocando em zero o bit CS.L do descritor apontado pelo segmento de código desses aplicativos. No submodo Compatível, o bit CS.D continua a selecionar entre os modos de 16 e 32 bits. Deve ainda ser notado que, quando o processador está no Modo Legal, o estado do bit CS.L não tem significado, ou seja, é um “don’t care”. A Figura 2 apresenta os detalhes de programação dessa nova arquitetura. Figura 2: Características de programação da arquitetura x86-64 da AMD. Vamos agora dar uma olhada mais cuidadosa no Modo Longo. Como já foi visto, o Modo Longo permite o uso dos recursos de 64 bits, ao mesmo tempo que oferece o submodo Compatível para rodar aplicações de 16 ou 32 bits. Esse modo traz uma grande quantidade de recursos, que estão listados a seguir: Endereçamento virtual de 64 bits; Registradores estendidos para 64 bits; Adição de 8 registradores (R8-R15); Adição de 8 registradores para SIMD (XMM8-XMM15); Ponteiro de instruções com 64 bits; Modo de endereçamento absoluto (“flat”). A adição de novos registradores para operações SIMD torna disponível um total de 16 registradores multimídia. Os novos registradores de finalidade geral vêm a diminuir um pouco uma das deficiências da arquitetura x86, que é a pequena quantidade de registradores. Para definir sua lógica de registradores, a AMD simplesmente estendeu o esquema usado para os registradores de 16 e 32 bits. Assim, continua sendo possível acessar de forma fracionada os registradores herdados do antigo 8086. Por exemplo, o registrador RAX pode ser acessado como um único bloco de 64 bits, mas também é possível acessar somente sua metade inferior através do registrador EAX. Além disso, também está acessível uma porção de 16 bits (AX) e duas porções de 8 bits (AH e AL). É claro que AX é formado pela justaposição dos registradores AH com AL. Assim é mantida toda compatibilidade com os antigos ambientes x86. A Figura 3 ilustra esses possíveis fracionamentos. Figura 3: Esquema de fracionamento dos registradores herdados da arquitetura x86-64. Os avanços da tecnologia de integração e o aumento de velocidade do relógio deverão possibilitar um maior desempenho destas CPUs, mesmo quando operando no Modo Legal. Com essa arquitetura, a AMD espera oferecer um caminho tranqüilo para a transição de 32 para 64 bits. No passado, uma transição não tão tranqüila, devido ao novo modelo de memória, permitiu uma evolução dos 16 bits (8086 e 286) para os 32 bits (386 em diante). A AMD aposta que, ao invés de mudar completamente a arquitetura, o sucesso estará com quem mantiver a compatibilidade.
-
O tempo em que se especulava sobre o sucesso do DVD já passou. Tendo provado seu valor como uma mídia de alta qualidade para a distribuição de vídeo e multimídia, o DVD agora avança sobre o mercado de alta capacidade de armazenamento, com técnicas inovadoras na gravação bem como na tecnologia de regravação. No início, o foco de interesse da indústria estava voltado às aplicações de vídeo. O sucesso do lançamento de vídeos em discos com 4.7 GB de capacidade foi prematuramente antecipado, sendo a qualidade do mesmo comparada com os discos laser e com a transmissão de televisão. Entretanto, de forma análoga ao que ocorre com toda nova tecnologia, vários foram os obstáculos pelos quais o DVD teve de passar até amadurecer e ganhar o espaço de mercado que hoje tem. Os primeiros DVD-5 produzidos foram testados em vários modelos de equipamentos, de diferentes fabricantes, e apresentaram alguns problemas relacionados com a qualidade de vídeo bem como com os leitores das mídias. Isto foi decisivo para que o processo de fabricação dos discos fosse melhorado de forma que se obtivesse uma maior qualidade a um menor custo. Ao mesmo tempo, os fabricantes de equipamentos delineavam os padrões de compatibilidade para os equipamentos. à medida que as melhorias eram implementadas, a expectativa de utilizarem-se CDs para armazenamento de informação de vídeo foi perdendo a força e o DVD começou a tornar-se um outro padrão de armazenamento, cujas versões estão mostradas na Figura 2. Com o crescente aumento de demanda, não demorou muito tempo para que os 4,7 GB não fossem suficientes para atender às aplicações multimídia. Mas o DVD Fórum, segmento da indústria responsável pela normatização, já havia previsto uma padronização para a família de produtos DVD: DVD-9 e DVD-10. Com 9,4 GB de capacidade de armazenamento, o DVD-10, que na prática corresponde a nada mais que dois DVD-5 fundidos, tornou-se a solução mais simples. Com a produção do DVD-5 já refinada, o processo de fusão usado para colocar dois discos unidos face à face não necessitou de considerações especiais. Entretanto, sob o ponto de vista da distribuição em massa, o DVD-10 é problemático. O disco não oferece qualquer face para que sejam colocadas identificações ou mesmo estampas decorativas. Além disto, a maioria dos leitores de DVDs dos consumidores contém somente uma cabeça de leitura ótica, o que os obriga a tirarem o disco do leitor e virarem a face de leitura. Esta deficiência compromete seriamente o produto pois nenhum usuário de títulos em DVD, consumidores vorazes de tecnologia, desejam ter preocupação com este tipo de detalhe. Por outro lado, o DVD-9 oferece 8,5 GB em uma única face de disco. Isto é possível ao fundirem-se dois discos cujas faces se encontram voltadas para o mesmo lado. O processo, que é extremamente difícil de ser produzido e requer que uma camada (ou "layer") semi-reflexiva seja fundida à outra camada reflexiva. Desta forma, o laser do leitor ótico realiza primeiro a leitura da camada mais externa do disco e, então, atravessa o material fundido chegando até os dados impressos na camada mais interna. Como observado na figura 1, para que seja lida a informação da camada #1, é necessário interpretar o laser que percorreu o trajeto ("a", "d"), enquanto que a informação da camada #2 vem do feixe laser que atravessou a camada #1, ou seja, que percorreu ("a", "b", "c", "d"). Aparentemente, parece estranho que se possa recuperar as duas informações das duas camadas, que não são correlacionadas, ao mesmo tempo. Contudo, a geometria dos discos é constituída por um processo tal que permita a implementação de detetores em quadratura, graças à diferença de fase estrategicamente calculada introduzida pelo espaçamento entre as camadas. Figura 1: Esquema de camadas nos discos DVD. As vantagens do DVD-9 possuem um preço. Somente alguns replicadores de disco podem produzir discos em tempo adequado e a um custo razoável. O custo de produção de um DVD-9 é cerca de US$1 à US$1,50, maior que o custo de um DVD-5. Além disto, soma-se o valor do elevado custo de edição das duas camadas, que é o fato preponderante para o sincronismo na leitura dos dados. Quando o DVD foi apresentado ao mercado, uma grande família de discos foi definida, abrangendo desde o DVD-5 até o DVD-18, cada um oferecendo um acréscimo significativo na capacidade de armazenamento e no número de camadas no disco. Para uma comparação entre os diversos formatos veja a tabela da Figura 2. A Warner Advanced Media Operations (WAMO) já está testando o processo de produção de DVD-14/18. De fato, a WAMO é o primeiro fabricante a anunciar a produção de DVD-18, o DVD de dupla face e dupla camada, que culminará nos 17GB de capacidade de armazenamento, prometidos para o final de ano. Ela também pretende oferecer o DVD-14, um híbrido entre o DVD-9 e o DVD-5. Tipo face/no. camadas Capacidade (GB) Capacidade (CDs) DVD-5 simples / 1 4,7 7 DVD-9 simples / 2 8,5 13 DVD-10 dupla / 1 9,4 14 DVD-14 dupla / 1 (numa face) e 2 (na outra) 13,2 20 DVD-18 dupla / 2 17 26 Figura 2: Padrões de discos DVD comerciais. O DVD permite que o áudio digital seja gravado a uma taxa de amostragem de até 96 kHz, com resolução de 24 bits, valores estes exageradamente superiores aos 44,1 kHz e aos 16 bits do CD. Essa qualidade antes era somente atingida nos modernos estúdios de gravação digital. Além disso, o áudio pode ser gravado no padrão AC-3 que, em vez de dois canais (direito e esquerdo), reserva seis canais: esquerdo frontal, direito frontal, esquerdo traseiro, direito traseiro, central e um canal exclusivo para "subwoofers" (sons extremamente graves). Este padrão foi desenvolvido para atender a filmes e a transmissões de áudio da HDTV (televisão de alta resolução). Para vídeo, o DVD apresenta diversas opções muito interessantes: oito opções de dublagem, 32 opções de legenda e 5 opções de formato de tela; tudo isto com um detalhe: utilizando áudio AC-3. A resolução do DVD é de 500 linhas, o dobro da resolução do vídeo-cassete tradicional. É importante lembrar que o DVD é um sistema digital de acesso aleatório, ao contrário do vídeo-cassete, que é um sistema analógico de acesso sequencial. Na prática, não é só o fato de a qualidade de áudio e vídeo serem muito superiores, já que a procura por um determinado trecho de filme é quase instantânea, não existindo a necessidade de "rebobinar o filme". Além disso, o DVD não gasta com o tempo e a qualidade da reprodução não é afetada com o uso. O DVD-5 foi originalmente desenvolvido para armazenar filmes de 135 minutos. Utilizando a compressão MPEG-2, uma imagem em movimento requer 3500 Kbps. Já o áudio, gravado no padrão AC-3, requer mais 384 Kbps. Conforme a WAMO, o valor superdimensionado para as faixas adicionais de legenda e para a dublagem em diferentes idiomas é de aproximadamente 807 Kbps. Consolidando estes valores, constatamos que são necessários 4,75 GB. Mas, como é possível que um disco com as mesmas dimensões das de um CD tenha 7 vezes a capacidade de um CD ? Basicamente, tornando os elementos de dados menores. O espaçamento entre as trilhas (em espiral) reduziu de 1,6 mícrons para 0,74 mícrons. Já o menor tamanho do dado que pode ser impresso na superfície do disco reduziu de 0,83 para 0,40 mícrons. O comprimento de onda (780 nanometros) do laser de leitores de CD ainda era grande para ler estas trilhas. Assim, os leitores de DVD utilizam um laser que produz um feixe luminoso com comprimento de onda de 640 nanometros. Esta configuração de comprimento de onda exige que a camada plástica protetora do disco seja mais fina, de tal forma que o laser não precise atravessar um meio tão espesso para chegar ao layer de dados. Por esse motivo, o disco de DVD teria apenas metade dos 1,2 mm de espessura do CD. No caso do DVD-5, um outro disco de 0,6 mm é colado ao DVD para manter a mesma espessura original do CD. Entretanto, apesar dos 4,7 GB fornecerem uma enorme capacidade de armazenamento, por que não aumentar ainda mais este valor ? Por exemplo, ao invés de colar um disco vazio ao DVD, pode-se colar um outro disco de dados ao DVD, mantendo a mesma espessura do CD e dobrando a capacidade de armazenamento do DVD-5. Alguns filmes em DVD já se aproveitam desta vantagem, colocando uma versão de um filme formatado para uma TV normal ou mesmo um monitor de computador, em um lado, e, no outro, uma versão formatada para as telas mais largas como no padrão dos cinemas. A indústria cinematográfica dividiu o mundo em um conjunto de seis regiões geográficas. A razão para esta divisão é permitir o controle do lançamento de filmes e home-vídeos em diferentes partes do mundo em diferentes épocas. Um filme, por exemplo, pode ser lançado na Europa e depois nos Estados Unidos, coincidindo com o lançamento do home-vídeo no Estados Unidos. Nessa situação, teme-se que cópias de discos DVD atinjam o mercado europeu prejudicando a arrecadação das bilheterias. Desta forma, é dado ao leitor de DVD um código de região na qual ele foi vendido. O aparelho não disponibilizará o conteúdo dos discos em regiões nas quais ele não é autorizado. Os discos comprados em uma certa região, como por exemplo o Japão, podem não funcionar em leitores comprados por exemplo no Brasil. Uma outra subdivisão de áreas também ocorre devido aos diferentes padrões de vídeo adotados por cada país. Por exemplo, o Japão está situado na região 2 mas usa o padrão NTSC que é compatível com os Estados Unidos (região 1). A Europa, por sua vez, também está situada na região 2 mas utiliza o padrão PAL, que não é compatível com o NTSC. A opção por incluir ou não um código de região a um disco DVD pertence ao estúdio ou ao distribuidor dos títulos. Entretanto, se seu disco não possuir código, então ele poderá ser reproduzido em qualquer parte do mundo. Alguns discos têm sido lançados sem código, mas, até o momento, nenhum destes lançamentos pertencem aos grandes estúdios. Muitos destes grandes estúdios pretendem laçar cópias sem código, contanto que não haja conflito entre este lançamento e a arrecadação das bilheterias. As 6 regiões citadas são compostas por: 1. Canadá e Estados Unidos 2. Japão, Europa, África do Sul, Oriente Médio (incluindo Egito) 3. Sudeste e Leste da Ásia (incluindo Hong Kong) 4. Austrália, Nova Zelândia, Ilhas do Pacífico, América Central, América do Sul, Caribe 5. Antiga União Soviética, Índia, África, Coreia do Norte e Mongólia 6. China Alguns leitores são fabricados para que possam ser facilmente modificados pelos consumidores para reproduzirem vídeos com quaisquer códigos. Existe também um mercado negro bastante ativo que fornece leitores com modificações nos circuitos eletrônicos que despistam os códigos de regiões. Os sistemas de DVD-ROM aplicam o código de região somente aos discos de vídeo em DVD e não para os discos contendo software. Muitos dos leitores de DVD-ROM de computadores permitem mudar através de software o código da região, até que, após sucessivas trocas, este se torne permanente. Também neste caso, já existe um mercado negro de softwares que manipulam estes códigos. Para encerrar, existem as denominações DVD-R, DVD-RAM, DVD+RW e DIVX, explicadas na Figura 3. DVD-R Disco DVD que pode ser gravado por uma única vez DVD-RAM Primeira especificação para um disco de DVD que pode ser regravável (capacidade de 2,6 GB por lado) DVD+RW Especificação de disco DVD regravável feita pela Sony, HP e Phillips (capacidade de 3 GB por lado) DIVX Disco DVD com o atributo "per-per-view". O drive para este disco inclui um modem que se comunica com uma central de cobrança. Figura 3: Denominações de discos DVD.
-
Na primeira parte, faremos uma breve introdução deste barramento, além dos procedimentos de software (a nível de sistema operacional, device-driver e aplicativo) que são realizados durante os processo de instalação e operação de um dispositivo USB. Numa segunda parte, estudar-se-ão as estruturas elétricas associadas ao novo padrão. O barramento serial universal, especificado pelas empresas líderes no mercado de computadores pessoais (Compaq, DEC, IBM, Intel, Microsoft, NEC e outras), permite uma expansão externa do PC praticamente ilimitada. Com o USB, os usuários aproveitam os benefícios da arquitetura plug-and-play, ou seja, não necessitam mais de efetuar configurações de recursos de hardware, como nos quebra-cabeças dos "dip-switches" e "jumpers", para a definição de IRQ’s, canais de DMA ou endereços de I/O. O USB utiliza um conector universal que permite ao usuário instalar e remover periféricos sem sequer abrir o computador. E ainda, com a característica de inserção e remoção automáticas, os periféricos podem ser instalados e removidos a qualquer momento, mesmo com o computador ligado e inicializado. Além da facilidade de utilização de periféricos convencionais, o USB abre caminho para novos aplicações, como a integração PC/telefonia e jogos multiusuários. Dois importantes atributos do USB são também destacados: a compatibilidade universal, pois nada impede que o USB seja aproveitado por outra arquitetura, e a simplicidade no projeto de periféricos, pois são eliminados diversos custos, como o de interfaces auxiliares (ex: alguns scanners e CD ROM precisam de uma interface SCSI). O USB pode ser usado com a maioria dos periféricos de PC’s, tais como: controladoras de vídeo, drives de CD ROM, joysticks, unidades de fita, drives de disco-flexível externos, scanners ou impressoras. A taxa de transmissão especificada de 12 Megabits/s também acomoda uma nova geração de periféricos, incluindo os produtos baseados em vídeo (ex: câmeras digitais). Quanto à organização das camadas de software necessárias para operar-se um dispositivo, o sistema USB HOST é composto por vários níveis de hardware e programas, conforme mostrado na Figura 1. Figura 1: Camadas de software necessárias para operarem-se dados via USB. Conforme a Figura 1 indica, um aplicativo requer o acesso a um periférico USB da forma padrão, como é feita para os periféricos comuns: chama funções da API. Num segundo estágio, a API chama rotinas do driver Cliente do periférico USB instalado. Este driver traduz os comandos da API para comandos USB. O driver Cliente é geralmente parte do sistema operacional ou vem instalável com o dispositivo USB. A terceira camada de software indicada é o driver USB (USBD), que é aquela que dá ao sistema operacional o suporte ao USB. A quarta camada de interesse é o driver do controlador HOST (HCD), que funciona a nível de Kernel do sistema operacional. O HCD provê o nível de software entre o hardware do controlador HOST e o USBD. É esta camada que realiza os acessos de I/O necessários para a operação do dispositivo USB. O HCD interpreta as chamadas do USBD e constrói uma lista de estruturas, um descritor de transferências, uma fila principal e um buffer de dados para o controlador HOST. A Figura 1 apresenta também duas camadas de hardware. A primeira delas é o Controlador HOST (HC), que é o circuito onde serão feitas as conexões de todos os dispositivos USB. Tal circuito executa eletronicamente os comandos programadas pelo HCD, além de registrar o estado das transações do USB. Sua operação é gerenciada pelo HCD. A segunda delas é constituída pelo conjunto de Dispositivos USB conectados, que são os periféricos que usam esse tipo de barramento. Uma característica extremamente inovadora do USB é a possibilidade de conectar-se um novo dispositivo durante a execução do aplicativo. Neste caso, o controlador HOST detecta a conexão e envia uma mensagem ao HCD para avisá-lo do fato. Em seguida, o HCD faz a mesma notificação ao driver USB (USBD). Este, então, inicializa o driver cliente do periférico conectado e, em seguida, torna-o operacional, de forma que o aplicativo já possa dispor de seus recursos. Tal seqüência está ilustrada na Figura 2. Figura 2: Seqüência de eventos desde a conexão da placa até a inicialização dos drivers. O USB é mais do que uma conexão Plug-and-Play. Esta nova tecnologia permite usar o PC em novos e interessantes caminhos. Seguem-se alguns exemplos de benefícios especiais que o USB pode proporcionar. Em Jogos Apesar de já existirem jogos onde é possível, via conexão de rede, que várias pessoas participem, o USB tem a interessante característica de permitir a entrada de novos jogadores sem que se interrompa a partida. Isto porque o USB permite conectar e desconectar joysticks e outros dispositivos de entrada sem que ocorra uma ação de parada. Lembrar que isto ocorre num único computador. Não há o ambiente de rede envolvido. Outro benefício associado a jogos é a possibilidade de sentir-se a massa de objetos virtuais e ter-se noção de aceleração em veículos. No fundo, é também um grande passo para simulações realísticas em robótica, devido à grande capacidade de fluxo de dados nos dois sentidos do cabo USB, que mantém um computador apto a receber as últimas novidades tecnológicas em termos de periféricos. Conexões na Internet O USB fornece a alternativa de utilizarem-se modem's externos de grande velocidade ou mesmo terminais de rede. Com isto, o acesso a Internet pode ser realizado sem a utilização de placas de rede. Fica também bastante flexível a topologia de um projeto de rede local, pois a substituição de nós (troca de computadores conectados) pode ser realizada com a simples troca do cabo, sem que se precise reinicializar qualquer computador. Compartilhamento Um dos mais importantes benefícios trazidos pelo USB é que ele permite o compartilhamento de periféricos entre PC’s, como dispositivos de segurança, telefones, monitores e outros. Telefonia e VIA PC A conexão via USB é imediata e flexível entre telefones e PC’s, especialmente com as novas aplicações que transformaram um simples computador numa sofisticada central de chamadas. Selecionar chamadas, adaptar as mensagens a serem enviadas, salvar e recuperar mensagens em voz ou fax e muitas outras ações podem ser controladas diretamente do PC através de aplicativos. A maioria dos computadores USB compatíveis apresenta pelo menos um um par de portas USB. Deve-se verificar a presença dos conectores. Outra maneira de saber se o sistema é compatível com o USB é analisar a característica do processador Pentium com tecnologia MMX ou Pentium II. Os PC’s vendidos em 1997 com esses processadores têm o hardware necessário instalado. Para trabalhar com o USB, é preciso ter um sistema operacional compatível. A maioria dos computadores vendidos em 1997 já têm essa característica. Caso se esteja utilizando uma versão do Windows incompatível, pode-se carregar um utilitário do USB através do site http://www.teleport.com/~usb Para verificar se o periférico comprado possui interface USB, verificar se o cabo de conexão tem forma semelhante à da Figura 3. Figura 3: Plug USB. A tecnologia USB reúne qualidades que tornam o PC mais flexível e capaz de explorar ainda mais suas potencialidades em termos de aplicação prática . O que antes limitava o PC a uns poucos periféricos, hoje o lança num ambiente de grande multiplicidade sem grandes complicações tecnológicas, facilitando a vida dos usuários. Na segunda parte, serão estudadas de forma bastante técnica as estruturas elétricas da especificação USB. Para saber mais: Ler parte 2 Artigo sobre USB Livro USB System Architecture, de Don Anderson
-
Este artigo complementa o estudo sobre o USB, quando foram abordadas as estruturas de software associadas aos processos de instalação e operação de dispositivos via USB. Desta vez, serão detalhadas as estruturas elétricas envolvidas. O Universal Serial Bus (USB) é uma nova filosofia de barramento serial para o fluxo de dados entre um computador e dispositivos periféricos. O USB foi projetado para preencher certas lacunas deixadas, até então, pelos outros barramentos seriais. Ele oferece: Melhor integração entre a computação e os sistemas de comunicações, focalizando-se na CTI (Computer Telephony Integration); Maior comodidade para o usuário, que não necessita de configurar o dispositivo, pois o próprio sistema se encarrega desta tarefa; o USB incorpora a filosofia plug-and-play; Expansão no número de portas; ele pode endereçar até 127 dispositivos. O sistema USB é composto pelo Controlador Host USB, por dispositivos USB e por interconexões. A Figura 1 mostra a topologia de um sistema USB. O host é responsável por: detectar a inserção e a remoção de um dispositivo, por gerenciar o fluxo de dados e de controle, monitorando o estado das transferências, e por controlar a interface elétrica entre ele e os dispositivos. Figura 1: Topologia de um sistema USB Um dispositivo USB pode ser de dois tipos: função ou hub. A função é capaz de transmitir ou receber dados ou informações de controle pelo barramento. Ela serve para aumentar a capacidade do sistema. Exemplos de funções são: mouse, teclado, impressora e adaptador telefônico como um ISDN. Cada função contém informações descrevendo suas capacidades e os recursos dos quais necessita. O hub é o elemento chave na topologia USB, pois é ele que permite a expansão do número de conexões do sistema. Cada hub converte um ponto de conexão em outros múltiplos pontos. A arquitetura USB permite o uso de múltiplos hubs. O USB permite dois modos de comunicação: um de alta velocidade, operando a 12 Mb/s, e outro de baixa velocidade, a 1,5 Mb/s. O modo de baixa velocidade visa a atender a um pequeno número de dispositivos com largura de banda estreita, como mouses. Cada função é responsável por indicar em que modo irá operar. O barramento físico é composto de um cabo com quatro fios: VBus, D+, D- e GND. O fio VBus é o meio de fornecimento de alimentação para os dispositivos que necessitarem dela. Em um sistema USB, existem hubs e funções que possuem alimentação própria e hubs e funções que são alimentados pelo barramento através de VBus. VBus é nominalmente +5 V. Para aplicações de alta velocidade, os fios D+ e D- são entrelaçados. Os dados são transmitidos através de D+ e D- por meio de diferenças de tensão entre eles. O USB usa uma codificação NRZI. Os cabos são conectados aos dispositivos conforme ilustrado na Figura 2. A posição dos resitores de pull-up muda dependendo de tratar-se de alta ou baixa velocidade. Quando não existe função conectada ao hub, os resistores de pull-down fazem com que ambos D+ e D- fiquem abaixo de um valor de tensão de limiar para a detecção da presença do dispositivo. Se essa condição persistir por mais que 2,5 microssegundos, é caracterizada a desconexão do dispositivo. A conexão de um dispositivo é caracterizada pela situação oposta, ou seja, quando apenas uma das linhas é levada além da tensão de limiar e esta situação persiste por mais de 2,5 microssegundos. Figura 2: Esquema Físico de Conexão do Barramento A transmissão de dados via USB é baseada no envio de pacotes. A transmissão começa quando o o Controlador Host envia um pacote (Token Packet) descrevendo o tipo e a direção da transmissão, o endereço do dispositivo USB e o referido número de endpoint. A transmissão de dados pode ser realizada tanto do Host para o dispositivo quanto em sentido inverso. O dispositivo USB decodifica o campo de endereço, reconhecendo que o pacote lhe é referente. A seguir, a fonte da transmissão envia um pacote de dados (Data Packet) ou indica que não há dados a transferir. O destino responde com um pacote de Handshake (Handshake Packet) indicando se a transferência obteve sucesso. O USB utiliza três tipos de pacotes: Token, Data e Handshake Packets, mostrados nas figuras 3(a), (b) e (c), respectivamente. Esses pacotes possuem os seguintes campos: Figura 3: (a) Token, (b) Data e (c) Handshake Packets PID (Packet Identifier): composto de oito bits. Os quatro mais significativos identificam e descrevem o pacote e os restantes são bits de verificação para prevenção de erros (check bits). Esses check bits são constituídos pelo complemento um dos quatros bits identificadores; ADDR (Address): endereço do dispositivo USB envolvido. Composto de 7 bits, limita o número de dispositivos endereçáveis em 127; ENDP (Endpoint): possui 4 bits que representam o número do endpoint envolvido. Permite maior flexibilidade no endereçamento de funções que necessitem de mais de um subcanal; CRC (Cyclic Redundancy Checks): bits destinados à detecção de erros na transmissão; DATA : bits de dados. Um Token Packet pode identificar a transmissão como sendo de transferência para o Host (IN), de transferência para a função (OUT), de início de frame (SOF) ou de transferência de informações de controle para o endpoint (SETUP). O CRC de um Token Packet possui 5 bits e atua apenas sobre os campos ADDR e ENDP, uma vez que o PID possui seu próprio sistema de prevenção contra erros. Os dados transmitidos via Data Packet devem ter um número inteiro de bytes. O CRC de um Data Packet possui 16 bits e age apenas sobre o campo DATA. O Handshake Packet é constituído apenas de um PID. Esse pacote pode significar que o receptor recebeu os dados livres de erros (ACK), que o receptor não pode receber os dados, que o transmissor não pode transmitir (NAK) ou que o endpoint está em parado (STALL). O USB aceita quatro tipos de transferências diferentes: Control, Bulk, Interrupt e Isochronous. A transferência do tipo Control serve para configurar ou transmitir parâmetros de controle a um dispositivo. Inicialmente, em idle, ele recebe um Token de SETUP oriundo do Controlador Host. Em seguida, o Host envia um Data Packet para o endpoint de controle da função. A função envia, então, ao Host um Handshake Packet de reconhecimento (ACK) e entra em idle. A transferência Bulk é utilizada para a transmissão de grande quantidade de dados, como em impressoras ou scanners. Ela garante uma transmissão livre de erros por meio da detecção de erros e de novas retransmissões, se necessário. Caso o Host deseje receber uma grande quantidade de dados, ele envia um Token de IN e a função devolve um Data Packet. Se houver algum problema, a função envia um STALL ou NAK e entra em idle. Ao final, o Host devolve um ACK. Se, em vez de receber, o Host desejar enviar dados, ele manda um Token de OUT em vez de IN. A transmissão do tipo Interrupt é requisitada pelo Host e consiste numa transferência de pequena quantidade de dados. Os dados podem representar a notificação de algum evento, como os de um mouse ou caneta ótica. A transferência tipo Isochronous permite o tráfego de dados que são criados, enviados e recebidos continuamente em tempo real. Nessa situação não há handshake, devido à própria continuidade com que os dados são transmitidos. Caso contrário, haveria atraso e a transmissão em tempo real seria comprometida. Todas as especificações técnicas do padrão USB estão rigorosamente estabelecidas na Universal Serial Bus Specification Revision 1.0. Para saber mais: Ler parte 1 Artigo sobre USB Livro USB System Architecture, de Don Anderson
-
O mercado de computadores pessoais vem gradativamente mudando o seu perfil. Primeiramente, o que se observava, no início da década de 80, era que grande parte dos compradores de PCs ou possuíam algum conhecimento técnico ou não se preocupavam com instalações futuras de recursos após o computador ser adquirido. Ou seja, não se tinha o costume de abrir uma máquina e conectar placas, drives ou outros periféricos. Mesmo quando havia uma necessidade de instalação de qualquer componente, exigia-se um mínimo de conceitos técnicos. Ora, era comum, e ainda não deixa de ser, que as configurações de endereços de I/O ou memória, interrupções e canais de DMA fossem determinadas por jumpers e chaves do tipo dip-switch. Daí, no mínimo, era imprescindível saber interpretar alguma literatura técnica, como um manual de placa. E mais, saber mapear endereços ou interrupções, de forma a garantir que não houvesse conflitos elétricos no barramento. Um outro tipo de problema também era freqüente: o usuário comprava uma placa nova que requeria, em sua instalação, alterar algum parâmetro de configuração de outra placa já conectada e com seu software já inicializado. Certamente, quem não tem tanta intimidade com conceitos de hardware teria certa dificuldade em adequar os device-drivers outrora configurados, tanto nos arquivos "config.sys" e "autoexec.bat", quanto no painel de controle do windows ou outro aplicativo. Contudo, o perfil de mercado passou a ser dominado por um novo tipo de consumidor: aquele totalmente leigo, o que não sabe sequer o que são interrupções, endereços ou jumpers. Com isso, aquele problema de reconfiguração fica agravado. Para evitar as referidas dificuldades de configuração, reconfiguração e atualização, que tanto frustavam os usuários, foram idealizados sistemas confortáveis, denominados plug and play, ou seja, conecte e opere. Então, tecnicamente falando, o objetivo de um sistema plug and play é permitir que a BIOS ou sistema operacional instalem e configurem quaisquer combinações de placas de expansão e dispositivos. Desta forma, aquele método de configuração de jumpers ou chaves passa a ser substituído por um gerenciamento por software. A flexibilidade conseguida com este sistema é tal que permite reconfigurações mesmo em tempo de execução. A solução para o problema plug and play consiste em fazer com que o hardware, firmware, sistema operacional e aplicativos sejam capazes de compartilhar dispositivos através da definição de formatos de identificadores de dispositivos (tipo, de placa, fabricante, versão, etc.) e recursos exigidos (interrupção, canal de DMA e endereços de I/O ou memória), e que são estruturas de dados, padronizadas pela arquitetura plug and play. O primeiro passo para que seja constituído o ambiente plug and play é identificar a configuração da máquina (feito inicialmente pela BIOS e posteriormente gerenciada pelo sistema operacional), ou seja, construindo-se uma árvore de hardware. Tal árvore deve conter os registros necessários para estabelecerem-se a assinatura ou identificação dos dispositivos e a informação necessária para automaticamente localizar e carregar os device-drivers. Após carregar o device-driver, adiciona-se à árvore de hardware, mesmo em tempo de execução, um nó de dispositivo associado ao driver. Vale observar que toda placa-mãe que suporta a arquitetura plug and play possui uma BIOS que busca, durante a inicialização do computador, e armazena os registros de nós de dispositivos, contendo as informações dos recursos exigidos. Isto orienta todas as partições de sistemas operacionais e os device-drivers que possam futuramente ser instalados. Após a instalação, os nós de dispositivos são acrescentados ou modificados segundo às necessidades do sistema operacional. É importante ressaltar que quaisquer tipos de conecções elétricas fazem parte da árvore de hardware, inclusive todas as ligações hierárquicas entre os barramentos (ex: ponte barramento local - barramento ISA ou PCI). A Figura 1 ilustra um exemplo de configuração envolvida numa árvore de hardware. Um problema surge ao distribuir os recursos pelos nós da árvore de hardware, de solução não trivial, que é o de identificar os dispositivos estáticos, como placas ISA que não têm a flexibilidade de alterar dinamicamente os recursos exigidos de interrupção, DMA e endereços de I/O ou memória. Por tal falta de flexibilidade, duas são as opções para tais dispositivos: mapeá-los de forma prioritária (ex: se o dispositivo exigir a IRQ 5, ele a terá disponível) ou desligá-los (desconectá-los logicamente da configuração da máquina e fisicamente do barramento). A BIOS oferece também um conjunto padronizado de serviços referentes à arquitetura plug and play, como a obtenção dos recursos alocados para cada dispositivo. Tais serviços são acessados, por software, de duas formas: somente em modo real (ex: programas para DOS), através da interrupção por software 1Ah; e tanto em modo real quanto em modo protegido (ex: windows 95 e DOS), através de subrotinas (instrução call). Figura 1: Exemplo de uma árvore de hardware, cuja raiz é o barramento local da CPU. Basicamente, a diferença entre desenvolver um device-driver comum e um device-driver plug and play é deixá-lo prevenido contra reconfigurações por parte do sistema operacional. Isto pode ser traduzido por alguns procedimentos de software que se resumem aos recursos exigidos pelo device-driver ficarem sob custódia do sistema operacional (isto para que eles possam ser gerenciados dinamicamente). Detalhando um pouco mais tal custódia, o device-driver, no instante de seu registro ou instalação, retorna ao sistema operacional um endereço de uma rotina, contida no device-driver, do tipo call-back (como o procedimento de janela ou de caixa de diálogo). Com isso, fica permitida a troca de mensagens entre o sistema operacional e o device-driver. Inclusive, fica o device-driver obrigado a responder a todas as mensagens de reconfiguração enviadas pelo sistema operacional. A Figura 2 ilustra uma seqüência de comandos que devem estar contidos no código desenvolvido para o device-driver plug and play. /* variáveis globais do device-driver */ unsigned int interrupção, endereço_base; /* subrotina que recebe as ordens de reconfiguração */ LRESULT CALLBACK device_driver_reconfig( ... ) { ... /* identifica mensagem de reconfiguração */ ... /* altera variáveis globais */ interrupção = ...; endereço_base = ...; altera_manipulador_vetor_interrupção( ... ); ... } /* rotinas de acesso ao periférico */ void envia_dado (int dado) { outp (endreço_base, dado); } ... Figura 2: Exemplo de uma arquitetura de device-driver, contendo a subrotina que intercepta as ordens de reconfiguração e subrotinas de acesso genérico ao periférico. Concluindo, o processo de configuração de recursos é realizado em duas situações: primeira, por parte da BIOS, durante a inicialização do computador, naturalmente, fazendo parte do POST (Power On Self Test) e, segundo, em tempo de execução, sob gerenciamento do sistema operacional. Primeiramente, o mínimo exigido para um sistema ser plug and play é que ele contenha uma BIOS plug and play, ou seja, que disponha ao sistema operacional e aos aplicativos serviços padronizados de gerenciamento de recursos. Para detectar a BIOS plug and play, o sistema operacional ou o aplicativo procura, na memória, o que se chama de "cabeçalho de instalação". O cabeçalho é uma estrutura de 34 bytes que contém os endereços a partir de onde estão residentes as rotinas de serviços oferecidas pela BIOS, tanto para o modo real, quanto para o modo protegido, além de outras informações (assinatura, fabricante, versão, etc.). O cabeçalho de instalação começa com uma assinatura de 4 bytes ("$PNP"), e pode estar localizado a partir do offset 0 do início de qualquer dos segmentos do modo real entre os endereços físicos F0000h e FFFF0h. A rotina a seguir, implementada para o modo real, verifica se o sistema é plug and play, através da busca de um cabeçalho de instalação com a assinatura padronizada. #include ... unsigned int verifica_plug_play(void) { void far endereço; unsigned int seletor; for (seletor=0xF000;seletor!= 0xFFF0; seletor++) { endereço = MK_FP(seletor,0); if (strncmp( (char far *) (endereço), "$PNP", 4) == 0 ) return (seletor); return ( 0 ); } Obtidos os endereços das rotinas dos serviços (contidos no cabeçalho de instalação), ficam disponíveis os serviços de configuração. As chamadas aos serviços são do tipo int far (função far que retorna um inteiro de 16 bits). Como são vários os serviços, a passagem de parâmetros pela pilha é feita como nos compiladores C, e não como no PASCAL, ou seja, são empilhados os parâmetros da direita para a esquerda. O último parâmetro empilhado é um inteiro que especifica o índice do serviço oferecido. Em C, a declaração destes tipos de função segue ao padrão a seguir: int far(end_do_conjunto_de_serviços)(int índice_do_serviço,...); O número de parâmetros passados depende do índice do serviço. Apenas como ilustração, exemplificam-se alguns serviços como obter as características e recursos de um nó de dispositivo num registro de dados, ou alterar, de acordo com a convenência de gerenciamento, parâmetros do registro outrora obtido. Dispositivos periféricos conectados diretamente à placa-mãe do sistema (temporizadores, RAM CMOS, controladores de interrupção e DMA, interface de teclado e outros) e as placas ISA estáticas (que não são reconfiguráveis) têm seus recursos estrategicamente alocados como num PC AT convencional. Então, apenas os recursos restantes poderão vir a ser compartilhados pelas placas plug and play. Comercialmente, são mais comuns placas plug and play para 3 tipos de barramentos comerciais: PCI, ISA e PCMCIA. Os dois primeiros casos serão comentados. Placas que satisfazem à especificação PCI já são, por natureza, plug and play. Tal especificação já reserva, para cada slot PCI lógico, 256 endereços de I/O consecutivos, onde, pelos primeiros 64, são feitas as programações de recursos e oferecidas informações outras, como identificações do fabricante e da versão e a localização da ROM de expansão. Ao contrário do barramento ISA, podem existir múltiplos barramentos PCI numa configuraçào de máquina (a vantagem disto é descongestionar o fluxo de dados onde está conectada a CPU principal). Tais barramentos são hierarquizados da seguinte forma: existe um barramento raiz e os outros barramentos são interligados eletricamente por pontes PCI-PCI, como mostrado na Figura 3. Para verificar se a máquina admite a especificação PCI, utilizar o seguinte código, para modo real, em assembler: Figura 3: Esquema que ilustra a interligação de diversos barramentos PCI. mov ax,B101h ;serviço B101h int 1Ah ;interrupção 1Ah cmp edx, 50434920h ;se for PCI compatível, retorna a string'PCI 'em edx Se a flag ZF (zero flag) estiver em 1, o sistema admite o PCI. Uma placa ISA plug and play é uma variação nova dos adaptadores ISA, com a característica de admitir uma configuração dinâmica de recursos. Vale ressaltar que, para os dois casos, as pinagens dos conectores de encaixe de placas são idênticas. A diferença é que, na tradicional, a configuração é estabelecida por jumpers e chaves, e que, na plug and play, é por software, segundo a padrões bem definidos. Quanto a custos, as placas ISA tradicionais são de projeto e programação bem mais simples que as ISA plug and play, que, para atender aos padrões de configuração dinâmica, exigem circuitos digitais extras e uma programação bem mais complexa. Isto talvez explica o porquê de ainda projetarem-se bastante placas ISA tradicionais, principalmente no meio acadêmico ou mesmo no profissional em escala reduzida, isto quando a placa tem utilização bastante restrita. Para permitir-se a reconfiguração em placas ISA plug and play, foram acrescentados, na placa-mãe do sistema, 3 registradores extras: o registrador de endereços (279h, só para escrita), o registrador de escrita (A79h, só para escrita) e o registrador de leitura (programável entre 203h e 3FFh, só para leitura). Por estes registradores são feitas algumas trocas de informações entre a BIOS ou sistema operacional e as placas ISA plug and play. Uma dúvida poderia surgir quanto ao fato de utilizarem-se os endereços 279h e A79h, que são reservados para a LPT2 e LPT3, respectivamente. Contudo, não haverá conflitos elétricos devido a esta multiplexação, pois estes endereços são usados apenas para a leitura pelas portas paralelas. Para saber mais: Artigo sobre o PCI Plug and Play Artigo sobre o ISA Plug and Play Livro Plug and Play System Architecture, de Tom Shanley Livro PCI System Architecture, de Tom Shanley e Don Anderson Livro ISA System Architecture, de Tom Shanley e Don Anderson
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais