Resumo Sistemas Computacionais PDF

Summary

This document contains a summary of computer systems, focusing on the Law of Moore and computer architecture performance. It includes questions and exercises on various computer components such as memory and processors.

Full Transcript

Resumo Sistemas Computacionais Projete pensando na Lei de Moore A única constante para os projetistas de computador é a mudança rápida, que é controlada em grande parte pela Lei de Moore. Ela declara que os recursos do circuito integrado dobram a cada 18 a 24 meses. A Lei de Moore resultou de u...

Resumo Sistemas Computacionais Projete pensando na Lei de Moore A única constante para os projetistas de computador é a mudança rápida, que é controlada em grande parte pela Lei de Moore. Ela declara que os recursos do circuito integrado dobram a cada 18 a 24 meses. A Lei de Moore resultou de uma previsão desse crescimento na capacidade do CI em 1965, por Gordon Moore, um dos fundadores da Intel. Como os projetos de computador podem durar anos, os recursos disponíveis por chip podem facilmente dobrar ou quadruplicar entre o início e o final do projeto. Assim como um atirador, os arquitetos de computador precisam antecipar onde estará a tecnologia quando o projeto terminar, e não quando ele começar. Usamos um gráfico da Lei de Moore “para cima e para a direita”, representando o projeto para a mudança rápida. 1 A Lei de Moore corresponde à observação de que o número de transístores nos circuitos integrados duplica a cada dois anos. Sendo uma observação empírica, será que é algo que se tem sempre verificado? Haverá algum limite para este crescimento? Apresente no fórum a sua opinião/perspetiva sobre este tema. 2 Classifique os seguintes tipos de memória/dispositivos de armazenamento de dados quanto à sua volatilidade, velocidade de acesso e capacidade de escrita: DRAM - volátil, leitura e escrita SSD - não volátil, leitura e escrita pen-drive - não volátil, leitura e escrita SRAM - volátil, leitura e escrita fita magnética - não volátil, leitura e escrita ROM - não volátil, só leitura Quanto às velocidades, a SRAM é a mais rápida, depois as ROM e DRAM. As pen-drives e SSD vêm a seguir, baseando-se em tecnologia semelhante, diferindo essencialmente na interface de acesso (USB vs. SATA/SCSI). Finalmente a fita magnética é tipicamente o dispositivo mais lento. 3- Considere um ecrã que usa 8 bits para cada uma das cores primárias (vermelho, verde e azul) por pixel e com uma resolução de 1280x1024. *Qual o número de bytes necessário para guardar a informação de uma imagem deste ecrã? Nº de bytes necessários para guardar a imagem = 1280 x 1024 x 3 bytes = 3.932.160 bytes *Qual o tempo necessário para enviar uma imagem destas pela rede, assumindo uma largura de banda de 100 Mb/s? Tempo necessário para enviar a imagem na rede de 100Mb/s = 3.932.160 x 8 bits / 100.000.000 bits/s = 0,315 s *Normalmente, um vídeo constituído por muitas destas imagens é compactado num ficheiro mais pequeno (sem ou com perda de informação) para poder ser armazenado ou transmitido (streamed). Numa rede de 100 Mb/s, calcule a taxa de compressão mínima (i.e., a razão entre o tamanho do ficheiro original e da sua versão compactada) para transmitir um vídeo à velocidade de 24 imagens por segundo. Taxa de compressão (admitindo um vídeo com 1 s) = 3.932.160 x 8 bits x 24 / 100.000.000 bits = 7,55 AF2: Desempenho Considere três processadores diferentes P1, P2 e P3 que executam o mesmo conjunto de instruções. Os processadores têm frequências de relógio e CPI constantes da tabela: Relógio CPI P1 3 GHz 1,5 P2 2,5 GHz 1,0 P3 4,0 GHz 2,2 a) Qual o processador com o desempenho mais alto, expresso em instruções por segundo? Nº instruções por segundo = Frequência / CPI Nº instruções por segundo (P1) = 3 000 000 000 / 1,5 = 2 000 000 000 Nº instruções por segundo (P2) = 2 500 000 000 / 1 = 2 500 000 000 Nº instruções por segundo (P3) = 4 000 000 000 / 2,2 = 1 818 181 818,18 Resultado: P2 tem o desempenho mais alto, em instruções por segundo. b) Se os processadores executam um programa em 10 segundos, determine o nº de ciclos e o nº de instruções. Nº de ciclos = Frequência x tempo Nº ciclos (P1) = 3 000 000 000 x 10 = 30 000 000 000 Nº ciclos (P2) = 2 500 000 000 x 10 = 25 000 000 000 Nº ciclos (P3) = 4 000 000 000 x 10 = 40 000 000 000 Nº de instruções = Nº de instruções por segundo x tempo Nº instruções (P1) = 2 000 000 000 = 20 000 000 000 Nº instruções (P2) = 2 500 000 000 = 25 000 000 000 Nº instruções (P3) = 1 818 181 818,18 = 18 181 818 182 c) Estamos a tentar reduzir o tempo de execução em 30% mas isso leva a um aumento de 20% nos CPI. Qual a frequência de relógio que devemos ter para obter esta redução de tempo? Consideremos T o tempo de execução original, T2 o tempo de execução reduzido em 30%, ou seja T2 = T - T x 0,3 = T x 0,7. Da mesma forma o aumento em 20% dos ciclos por instrução pode ser traduzido por CPI2 = CPI + CPI x 0,2 = CPI x 1,2. Sendo que a frequência F = I x CPI / T, em que I é o nº de instruções, temos que: F2 = I x CPI2 / T2 = I x CPI x 1,2 / (T x 0,7) = (1,2/0,7) x (I x CPI / T) = 1,714 * F Assim, a frequência de relógio deverá ser aumentada em 71,4% para se obter o desempenho pretendido. 2-Quando um programa é adaptado para correr em múltiplos processadores num sistema multiprocessador, o tempo de execução em cada processador é constituído pelo tempo de computação e pelo tempo de overhead necessário para secções críticas trancadas e/ou para enviar dados de um processador para outro. Assuma que um programa necessita de t = 100 segundos de tempo de execução num processador. Quando corre em p processadores, cada processador requer t/p segundos, bem como 4 s adicionais de overhead, independentemente do nº de processadores. Calcule o tempo de execução por processador para 2, 4, 8, 16, 32 e 128 processadores. Para cada caso, apresente o correspondente aumento de velocidade relativamente a um único processador e a razão entre aumento de velocidade real versus aumento de velocidade ideal (i.e. se não houvesse overhead). R; O tempo de execução ideal por processador é o tempo de execução num processador a dividir pelo nº de processadores, ti = t / p. Para determinar o tempo de execução real, há que adicionar 4 segundos de overhead: tr = t / p + 4. O aumento de velocidade ideal e real, respetivamente, é dado pelas expressões: ai = t / ti - 1 e ar = t / tr - 1. A razão entre os dois aumentos será, naturalmente, ar / ai. A tabela seguinte apresenta os resultados para os vários aglomerados de processadores: p tr ti ar ai razão 2 54,00 50,00 85% 100% 0,852 4 29,00 25,00 245% 300% 0,816 8 16,50 12,50 506% 700% 0,723 16 10,25 6,25 876% 1500% 0,584 32 7,13 3,13 1304% 3100% 0,420 128 4,78 0,78 1992% 12700% 0,157 3. Os resultados do benchmark SPEC CPU2006 bzip2 correndo num processador AMD Barcelona tem uma contagem de instruções de 2,389x1012, um tempo de execução de 750s, e um tempo de referência de 9650s. a) Determine os CPI sendo o tempo de cada ciclo de relógio 0,333 ns. Tendo em conta que TempoCPU = Nº de instruções * CPI / Frequência, e que o tempo de cada ciclo de relógio é o inverso da frequência, temos que CPI = TempoCPU/(Nº de instruções * Tempo do ciclo de relógio) = 750 / (2,389 x 1012 * 0,333 x 10-9) = 750 / 795,54 = 0,943 b) Determine o SPECratio. O SPECratio é a razão entre o tempo de execução de referência e o tempo real: SPECratio = 9650/750 = 12,87 c) Determine o aumento de tempo de CPU se o número de instruções do benchmark crescer 10% sem afetar os CPI. Considerando que Nº instruções2 e TempoCPU2 correspondem às respetivas grandezas após o aumento da quantidade de instruções, mantendo-se CPI e Frequência constantes: TempoCPU2 = Nº instruções2 * CPI / Frequência = Nº de instruções * 1,10 * CPI / Frequência = CPUTime * 1,10 O aumento de tempo de CPU é então, também de 10% d) Determine o aumento de tempo de CPU se o número de instruções do benchmark crescer 10% e os CPI aumentarem em 15%. Da mesma forma, sendo que Nº instruções2, TempoCPU2 e CPI2 correspondem às respetivas grandezas após a alteração, temos: TempoCPU2 = Nº instruções2 * CPI2 / Frequência = Nº de instruções * 1,10 * CPI * 1,15 / Frequência = CPUTime1 * 1,265 O aumento de tempo de CPU é de 26,5% e) Determine a diferença no SPECratio para a alteração da alínea d). SPECratio2 = 9650 / (750 * 1,265) = 10,17 Desenhe uma máquina de estados que reflita o percurso de um aluno nesta UC. Considere os seguintes aspetos: o estado inicial é o de "inscrito" na unidade curricular; escolha entre a modalidade de avaliação final ou contínua; sequência de atividades de avaliação; classificação final. Apresente a máquina de estados em formato de diagrama, indicando claramente qual o estado inicial e representado as transições com setas. EFolio A 1. (1 valor) Explique como a evolução do desempenho dos computadores, prevista pela Lei de Moore, pode ser suportada por técnicas de projeto e otimização em arquiteturas de computadores. Utilize os conceitos de paralelismo, pipelining e hierarquia de memórias. RESPOSTA: Sabendo que o projeto de construção dum novo computador pode levar meses a anos, por isso, os seus criadores devem ter em atenção o aumento da capacidade dos seus componentes (chips, hardware…) que o irão compor. Já em 1965, Gordon Moore, idealizava que "Os circuitos integrados, componentes básicos dos computadores, duplicam a sua capacidade a cada 18-24 meses" - lei de Moore. Portanto, os arquitetos desses projetos devem tentar prever onde a tecnologia estará quando o projeto for concluído, de forma a lançar um produto que atenda às expectativas dos consumidores. As evoluções do desempenho destes computadores são alicerçados por conceitos como: paralelismo, pipelining e hierarquia de memórias… - que visam otimizar o desempenho destas maquinas. Melhorar o desempenho através de: Paralelismo - segundo os documentos que nos foram sugeridos para ler neste capitulo, esta ideia de paralelismo "é que que os arquitetos de computadores podem aproveitar a possibilidade de efetuar operações em paralelo para otimizar o desempenho das máquinas, sendo que muitas das tarefas são independentes e não necessitam de correr em sequência" e assim melhorar o seu desempenho; Pepelining - este conceito resulta da ideia anterior aonde o uso do conceito pipelining pode tornar os computadores mais eficientes, por exemplo, imaginemos uma cozinha aonde o chef cozinha o prato, um auxiliar pode ir cortando os ingredientes para o próximo prato, e outro empregado pode servir o prato ao cliente. Esse método permite que o restaurante atenda mais clientes em menos tempo, tal como no desempenho mais eficiente dum computador; Hierarquia de memorias - reconhecendo que o acesso aos dados em Memória é um dos problemas mais complexos do desenho de computadores, é necessário para isso então contruir um projeto aonde haja um compromisso entre a velocidade, capacidade e custo no acesso aos dados de memoria. Penso que este modelo de hierarquia, permite garantir que os dados mais "acessados" estejam disponíveis mais rapidamente, enquanto grandes volumes de dados menos utilizados ficam armazenados de maneira mais econômica. Em suma, estas técnicas (entre outras) permitem maximizar a eficiência e o desempenho das máquinas transformando os computadores com maior capacidade de responder às necessidades dos utilizadores, mantendo o ritmo previsto na Lei de Moore. 2. (1 valor) Considere que um programa tem um tempo de execução total de 200 segundos. Desse tempo, 120 segundos são gastos na execução de operações de leitura e escrita de memória, e os restantes 80 segundos são dedicados a outros tipos de operações. Pretende-se melhorar o desempenho das operações de leitura e escrita de memória, tornando-as 4 vezes mais rápidas. Com base na Lei de Amdahl, determine o tempo de execução do programa após a melhoria. RESPOSTA: Questão 2: De acordo com o vídeo do Tema 1 - (Desempenho computacional) 2 ௔parte, que foram disponibilizados no âmbito desta disciplina, podemos ver que a lei de Amdhahl estabelece que "o aumento de desempenho possível com uma determinada melhoria no sistema é sempre limitado pelo grau de uso dessa melhoria". A lei de Amdahl traduz-se na seguinte expressão: De acordo com o enunciado pretendemos melhorar o desempenho das operações de leitura e escrita de memória, tornando-as 4 vezes mais rápidas; deste mesmo enunciado podemos verificar os seguintes aspetos: Tempo de execução afetado pela melhoria: 120 segundos são gastos na execução de operações de leitura e escrita de memória; Grau de melhoria: tornando 4 vezes mais rápidas; Tempo de execução não afetado pela melhoria: restantes 80 segundos são dedicados a outros tipos de operações. Entao, Tempo de execução após melhoria = 120 4 + 80 Tempo de execução após melhoria = 110 segundos Resposta: Com base na Lei de Amdahl, o tempo de execução do programa após a melhoria é de 110 segundos. 3. (2 valores) Desenhe o diagrama de uma máquina de estados que modele o processo de envio e gestão de mensagens num fórum do Moodle. Considere que o sistema contempla as seguintes operações/ações: a) Escrever uma nova mensagem no fórum; b) Editar a mensagem antes de ser publicada; c) Publicar a mensagem no fórum; d) Responder a uma mensagem publicada; e) Eliminar uma mensagem (caso o autor ou administrador assim o decida). Considera-se publicada após 30 minutos decorridos desde a última gravação. Ao ser publicada, é enviado um email com a mensagem a todos os participantes do fórum. Inclua, no seu diagrama, situações de eventuais erros ou ocorrências inesperadas, como falhas na publicação ou tentativas de editar uma mensagem após a publicação, ou outras que considere relevante AF6 Paralelismo 1. Considere os seguintes fragmentos de dois programas diferentes a correr ao mesmo tempo em quatro processadores num SMP (symmetric multicore processor). Assuma que, antes do código correr, os valores de x e y são 0. Core 1: x = 2; Core 2: y = 2; Core 3: w = x + y + 1; Core 4: z = x + y; a) Quais são todos os possíveis valores finais de w, x, y e z? Para cada resultado possível, explique como podemos chegar a esses valores. Terá de examinar todas os possíveis entrelaçamentos de instruções. Uma vez que os valores de x e y só são alterados uma vez pelos cores 1 e 2, respetivamente, os seus valores finais serão sempre 2. No entanto, w e z assumirão valores diferentes consoante x e y já tenham sido alterados ou não. Os valores finais possíveis serão então: w: 1(0+0+1), 3(0+2+1 ou 2+0+1) ou 5(2+2+1) z: 0(0+0), 2(0+2 ou 2+0) ou 4(2+2) Há portanto 9 resultados finais possíveis, correspondendo às combinações de resultados de w e z: x:2, y:2, w: 1, z:0 x:2, y:2, w: 1, z:2 x:2, y:2, w: 1, z:4 x:2, y:2, w: 3, z:0 x:2, y:2, w: 3, z:2 x:2, y:2, w: 3, z:4 x:2, y:2, w: 5, z:0 x:2, y:2, w: 5, z:2 x:2, y:2, w: 5, z:4 b) Como pode tornar a execução mais determinista, por forma a que só um conjunto de valores finais seja possível? Para tornar a execução mais determinista, pode-se forçar que as instruções executem numa determinada sequência. No entanto, essa abordagem elimina todas as vantagens do processamento paralelo, transformando-o em sequencial. Analisando o programa, os cores 1 e 2, que lidam com variáveis diferentes, podem correr em paralelo. Os cores 3 e 4 também, uma vez que escrevem em variáveis diferentes. Mas é importante que as instruções que afetam as variáveis x e y corram antes das que as lêem, para que o resultado final seja único. O mecanismo de sincronização para este efeito é o "lock", que permite que os cores 1 e 2 "tranquem" as variáveis x e y até serem alteradas. Dessa forma, os cores 3 e 4 só terão acesso ao valor final das mesmas, garantindo assim o resultado único. 2. O software de virtualização tem conhecido grande desenvolvimento, com vista a reduzir custos de gestão dos servidores de alto desempenho. Empresas como a VMWare, Microsoft e IBM desenvolveram uma gama de produtos de virtualização. O conceito geral é a introdução de uma camada designada por hypervisor, entre o hardware e o sistema operativo, permitindo a múltiplos sistemas operativos partilharem o mesmo hardware. A camada hypervisor é então responsável por alocar CPU e recursos de memória, assim como disponibilizar serviços típicos do sistema operativo (ex. input/output). A virtualização fornece uma abstração do hardware subjacente ao sistema operativo e aplicações, trazendo uma outra perspetiva ao desenho de sistemas multi-core e multiprocessador, para suportarem partilha de CPUs e memória por vários sistemas operativos, de forma concorrent. O objetivo desta atividade é pesquisar na web e comparar dois hypervisors existentes no mercado. Dois dos mais utilizados são o VMware ESXi e o Hyper-V da Microsoft. a) Escolha dois hypervisors no mercado, compare e contraste a forma como virtualizam e gerem o hardware subjacente (CPUs e memória). Num ambiente de virtualização, várias máquinas virtuais partilham CPU e memória. Enquanto que o CPU pode ser partilhado no tempo, i.e., cada máquina consome algum tempo do CPU, consoante as necessidades em cada momento, as porções de memória necessárias por cada máquina têm de ser alocadas de forma mais permanente, sob pena de se perderem dados. Tipicamente, as máquinas virtuais, tanto no VMware como no Hyper-V são configuradas inicialmente com uma quantidade fixa de memória (virtual). A forma como a gerem é que é diferente. O VMware usa várias técnicas para disponibilizar páginas de memória não usadas numas máquinas a outras que delas necessitam, sendo que para o sistema operativo da máquina virtual, a quantidade de memória virtualmente disponível é a que foi definida inicialmente - muitas vezes a memória física disponível é inferior à soma das que foram definidas em todas as máquinas, mas espera-se que seja suficiente para suprir as necessidades em cada momento. O Hyper-V, perante a necessidade de mais memória numa máquina virtual, atribui efetivamente essa memória à máquina, como se fosse adicionada "a quente" numa máquina física. Esta abordagem tem a desvantagem de o SO ou as aplicações poderem não reconhecer esse aumento de memória, mas, se for reconhecido, é mais rápida que a abordagem do VMware. b) Discuta as mudanças necessárias em futuras plataformas com CPUs multi-core por forma a melhor corresponderem à necessidade de recursos colocadas por estes sistemas. Por exemplo, o multithreading poderá aliviar a competição por recursos computacionais? Num ambiente de um único processador, as máquinas virtuais dispõem de processadores virtuais que, na realidade, correspondem a fatias de tempo do processador físico. Havendo mais do que um CPU (ou um CPU com vários "cores"), essas fatias de tempo podem ser distribuídas pelos vários processadores, aumentando a eficiência. Mais, passa a ser possível definir máquinas virtuais multi-core, embora o nº de cores virtuais não possa ultrapassar o nº de cores físicos. A tecnologia de hyper-threading, desenvolvida pela Intel, faz com que um core pareçam dois ao sistema operativo. Na prática, o que a tecnologia faz é colocar um segundo "thread" a correr sempre que o primeiro fica a aguardar o acesso a outros recursos (ex. memória), ganhando alguma performance. A vantagem de ter CPUs com hyper-threading num hypervisor é altamente dependente das aplicações: se forem aplicações de processamento intensivo, não tem vantagem, a performance pode mesmo degradar-se devido ao overhead necessário. Por outro lado, se as aplicações dependerem mais fortemente de recursos externos, podem partilhar o CPU com vantagem, pois grande parte do tempo estarão a aceder a esses outros recursos.

Use Quizgecko on...
Browser
Browser