Digital 3 F6D35 2 Verificação de conhecimentos 15.06.09 G A B A R I T O 1. Questão: (Unidade de ponto flutuante e unidade de inteiros) [2,0] a) [1,0] O número hexadecimal 0x48730000, de 32 bits, é a representação de um número real em ponto flutuante na precisão simples. Indique a composição, em bits, de cada uma de suas três partes. 0x48730000 = 0100 1000 0111 0011 0000 0000 0000 0000 Bit 31 = 0 (número positivo). Bits 30 a 23 = 1001 0000 = expoente (polarizado em 127) = 144 17 Bits 22 a 0 = 23 bits da parte fracionária = 1.1110011 (incluído bit J implícito. b) [1,0] Expresse o número do item a) na notação decimal científica no formato X.Y x 10 Z. Mostre claramente os passos para se chegar ao resultado, sem os quais a questão não será considerada. Inicialmente expressamos o número em binário, a partir dos resultados acima e a seguir transformamos em decimal: 0x48730000 corresponde a: 1.1110011 x 2 17 = 11 1100 1100 0000 0000 binário = 0x3CC00 hexa = 248832 = 2.48832 x 10 5 Digital 3 F6D35 2. Verificação de conhecimentos 15/06/09 G A B A R I T O fl. 1 / 5
2. Questão: (Unidade MMX) [2,0] a) [1,0] Explique como um número fracionário com sinal, menor que 1, pode ser representado por um inteiro de 16 bits utilizando a representação Q15 utilizada nas aulas práticas. Mostre qual a menor e a maior fração (em valor absoluto) que pode ser representada dessa maneira. Dê um exemplo representando o número -0,625 no formato Q15. Para se representar um número com sinal na representação Q15 em 16 bits, é utilizado o bit 15 (mais significativo) para representar o sinal (para o formato complemento de 2) e os demais 15 bits para a fração. Com 15 bits pode-se representar números entre 0 e 32767, que é considerado o numerador de uma fração cujo denominador será 32768 (= 0x8000). Portanto a menor fração representável será 0 e a maior = 32767 / 32768. Ex. 0,625 = 0,625 x 0x8000 = (5 / 8) x 0x8000 = 0x5000 que, em notação complemento de dois irá produzir 0xB000 b) [1,0] Explique como funciona o instrução PMULHW, do conjunto de instruções MMX e por que essa instrução não serve para se obter 4 produtos de dois números no formato Q15. A instrução PMULHW dst,src multiplica 4 números de 16 bits com sinal contidos no operando src (que deverá ser um registrador MMX) por outros 4 números de 16 bits contidos no operando dst (que poderá ser um registrador MMX ou uma posição de 64 bits na memória do computador). Os quatro produtos resultantes, de 32 bits cada, são truncados preservando-se apenas os 16 bits mais significativos de cada um, que são armazenados no operando dst, conforme o esquema abaixo: dst (antes) D C B A src H G F E dst (depois) high(dxh) high(cxg) high(bxf) high(axe) A instrução PMULHW não serve para obter produtos de dois números no formato Q15 pois o resultado são números no formato Q30, com dois bits de sinal nas posições mais significativas, ficando apenas 14 dos 15 bits do resultado desejado preservados pela instrução PMULHW. Digital 3 F6D35 2. Verificação de conhecimentos 15/06/09 G A B A R I T O fl. 2 / 5
3. Questão: (TCP/IP) [2,0] a) [1,0] Explique como o protocolo IP procede para enviar um pacote de uma máquina A para uma máquina B cujo endereço IP foi obtido da tabela de roteamento da máquina A na mesma rede, mostrando como o endereço de hw da máquina de destino é obtido. Indique cada etapa do processo. Para obter o endereço de hw da máquina de destino o protocolo IP faz uso do protocolo ARP Address Resolution Protocol passando-lhe o endereço IP da máquina de destino a ser acessada. O protocolo ARP por sua vez verifica se já contém o endereço de hw correspondente em sua cache, e, se não tiver, emite uma mensagem em broadcast para toda a rede denominada ARP Request, onde informa seus endereços IP e de Hardware e o endereço IP que deseja acessar. Todas as máquina da rede recebem a mensagem ARP Request, mas somente aquela cujo endereço IP confere responde com uma mensagem ARP Reply, contendo seus endereços IP e de HW. Dessa forma a máquina de origem obtém o endereço de HW da máquina de destino e pode encaminhar o pacote IP para a mesma. O endereço de HW da máquina de destino é então salva temporariamente na cache ARP, para o caso de ser necessário enviar outros pacotes para a mesma máquina. b) [1,0] Com base no programa Cliente/Servidor desenvolvido nas aulas práticas, explique: b1) Qual a diferença básica entre um programa Cliente e um programa Servidor? Exemplifique sua explicação com base no programa desenvolvido em aula. b2) Como o programa Servidor deve fazer para diferenciar entre uma desconexão suave e uma desconexão abrupta do Cliente? b1) O programa Servidor está sempre ativo, aguardando conexões de programas Clientes e geralmente apto a recebê-las, ao passo que o programa Cliente é ativado e desativado pelo usuário conforme a necessidade. O objetivo de um programa tipo servidor é fornecer algum serviço a um ou mais clientes. No caso do programa desenvolvido nas aulas práticas esse serviço era mostrar ao usuário as mensagens enviadas pelo cliente. O objetivo do programa cliente é fazer uso dos serviços prestados por um programa servidor. No caso do programa desenvolvido nas aulas práticas o objetivo do programa cliente era fornecer e enviar as mensagens que seriam mostradas pelo servidor. b2) O programa Servidor sabe que uma desconexão foi suave quando sua chamada ao método Receive do soquete retorna informando que recebeu zero bytes. Já as desconexões abruptas causam um erro no soquete, que, no caso do programa e da linguagem utilizados em aula, pode ser capturado através da interceptação da exceção gerada por esse erro ERROR_CONNECTION_RESET. Digital 3 F6D35 2. Verificação de conhecimentos 15/06/09 G A B A R I T O fl. 3 / 5
4. Questão: (Barramento USB) [2,0] a) [1,0] Enumere todos os mecanismos para detecção de erros previstos na operação do barramento USB, indicando em quais tipos de transferências e que tipos de pacotes cada um é utilizado. Há vários mecanismos previstos no barramento USB para se fazer um controle de erros: Pacotes SOF Start of Frame são numerados seqüencialmente entre 0 2 2047 (11 bits) permitindo um controle de seqüência. O campo PID Package ID dos pacotes é sempre seguido do campo PID Check, contendo os mesmos bits invertidos, permitindo uma verificação de integridade. Os pacotes de dados utilizam dois valores de PID diferentes Data0 e Data1 de forma alternada, permitindo a detecção de um pacote faltante caso se recebam dois pacotes seguidos sem a alternância do PID. O campo de Payload dos pacotes é seguido de um CRC, de 5 bits no caso de pacotes de setup e de 15 bits no caso de pacotes de dados, permitindo a verificação da integridade do payload e a repetição do mesmo em caso de falha. O receptor recalcula o CRC ao receber o pacote e confirma a integridade através de respostas com pacotes de handshake. Em caso de não confirmação o pacote deve ser reenviado pela origem. Esse mecanismo de verificação de CRC e confirmação não é utilizado em transações Isócronas pois devido à necessidade de se manter a taxa de transmissão não há sentido em se reenviar pacotes recebidos com erro. b) [1,0] Explique como opera a sinalização High Speed no barramento USB 2.0 em termos de níveis de tensão e corrente. Explique também como é feita a detecção da conexão e da desconexão de dispositivos 2.0 nesse barramento. A sinalização no barramento USB 2.0 (480 Mb/s) é feita através de drivers de fonte de corrente, que impõem uma corrente de 17,78 ma na linha D+ (sinal J) ou na linha D- (sinal K). Quando há um dispositivo conectado nas linhas D+ e D-, a impedância vista pelas fontes de corrente é a de dois resistores de 45 ohms em paralelo, um no próprio enviador e outro no dispositivo conectado, resultando em um valor de 22,5 ohms e gerando uma tensão de 400 mv. Quando o dispositivo conectado é retirado, a impedância vista pela fonte de corrente muda para 45 ohms, gerando uma tensão superior ao valor limite de 625 mv, o que permite detectar a desconexão do dispositivo. A conexão dos dispositivos por outro lado é feita sempre inicialmente no modo full speed, com o dispositivo conectando um resistor de 1,5 Kohm na linha D+. Após receber sinal de reset do host o dispositivo então envia uma sinalização em modo High Speed para o host, indicando que é capaz de se comunicar no modo High Speed. Se o host responder também em High Speed então o resistor de 1,5 Kohms é retirado pelo dispositivo e ambos os lados procedem apenas no modo High Speed de sinalização. Digital 3 F6D35 2. Verificação de conhecimentos 15/06/09 G A B A R I T O fl. 4 / 5
5. Questão: (Barramento PCI) [2,0] a) [1,0] Um dispositivo PCI monofuncional necessita, para operar corretamente, que lhe seja atribuída uma faixa de endereços de memória de 2 MB, em qualquer lugar da memória e não prefetchable. Descreva os passos executados pelo gerenciador de dispositivos de um sistema operacional para a) detectar essa necessidade e b) atribuir ao dispositivo a faixa de endereços de 2 MB iniciando no endereço CFFF 0000 0000 0000 h. Suponha que o registrador BAR0 da área de configuração do dispositivo seja utilizado para esse fim. O gerenciador de dispositivos inicialmente escreve FFFF FFFF FFFF FFFF h no registrador BAR0 da função do dispositivo. A seguir o gerenciador de dispositivos lê o registrador BAR0 e obtém um valor com os 21 bits menos significativos zerados: FFFF FFFF FFE0 0000, fazendo a seguinte interpretação: Bit 0 = 0 área de endereços de memória sendo solicitada. Bits 1 e 2 = 0 endereços podem estar em qualquer região da memória Bit 3 = 0 os endereços se destinam a memória não prefetchable. Bits 4 a 20 = 0 indicam 21 bits de endereço = 2 MB de endereços. Finalmente o gerenciador de dispositivos atribui o endereço CFFF 0000 0000 0000 h à função do dispositivo para a área solicitada escrevendo esse valor no registrador BAR0. b) [1,0] O barramento PCI prevê a possibilidade dos dispositivos a ele conectado realizarem um auto teste? Caso positivo explique de que forma isso é operacionalizado. O barramento PCI prevê a possibilidade de realização de auto teste pelos dispositivos a ele conectados, caso os dispositivos suportem essa possibilidade. Cada função de cada dispositivo PCI dispõe, em sua área de configuração, do registrador BIST Built In Self Test, de 8 bits, que indica se a facilidade de auto teste é suportada ou não, e, caso positivo, permite comandar o auto teste, da seguinte maneira: Bit 7 Bist Capable indica se a facilidade é suportada ou não. Bit 6 quando ajustado em 1 pelo host comanda o início do auto teste se suportado Esse bit é então supervisionado pelo host retornando a zero quando o auto teste é concluído. Bits 3 0 Fornecem o resultado do auto teste, o valor zero geralmente indicando sucesso e os demais valores indicando um código de erro específico do dispositivo. Caso o auto teste, após iniciado, não seja concluído num prazo de 2 segundos, o host considera que o teste foi mal sucedido. Digital 3 F6D35 2. Verificação de conhecimentos 15/06/09 G A B A R I T O fl. 5 / 5