1 / 50

Software Básico

Software Básico. Memória Capítulo 2 Mitsuo Takaki http://www.cin.ufpe.br/~mt2/ mt2@cin.ufpe.br. Memória Principal. Introdução. Introdução. É a parte do computador onde estão armazenados os programas e os dados. Composta de células endereçáveis. Armazenam informações.

oneida
Download Presentation

Software Básico

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Básico Memória Capítulo 2 Mitsuo Takaki http://www.cin.ufpe.br/~mt2/ mt2@cin.ufpe.br

  2. Memória Principal Introdução

  3. Introdução • É a parte do computador onde estão armazenados os programas e os dados. • Composta de células endereçáveis. • Armazenam informações. • Possui um número chamado de endereço. • Usado pelos programas para referenciá-la. • Todas as células possuem o mesmo número de bits.

  4. Introdução • A memória pode ser vista como um grande repositório (vetor) de células. • O endereço é equivalente ao índice da posição da célula no vetor.

  5. Introdução • O número de bits usado no endereçamento determina a quantidade de células endereçáveis. • 32 bits pode endereçar 4 bilhões de células. • A célula é a menor unidade endereçável.

  6. Ordenação de Bytes • Os bytes em uma palavra podem ser ordenados da esquerda para direita ou da direita para esquerda.

  7. Ordenação de Bytes

  8. Ordenação de Bytes • Computadores como SPARC e mainframes da IBM utilizam a estratégia big endian. • Computadores da família Intel utilizam little endian.

  9. Problemas na Ordenação de Bytes • Não existe uma forma certa ou errada, ambas são válidas e consistentes. • Problemas podem ocorrer no transmissão de dados de uma máquina little endian para uma big endian, ou vice-versa.

  10. Problemas na Ordenação de Bytes

  11. Problemas na Ordenação de Bytes • A solução proposta é utilizar cabeçalhos na frente de cada item de dados. • Informa o tipo do dado e o seu comprimento. • Não é eficiente, produz overhead.

  12. Memória Principal Memória Cache

  13. Introdução • As CPUs sempre se mantiveram mais rápidas que as memórias. • Quanto mais lenta for a memória, mais ciclos de CPU serão desperdiçados. • Sempre que a CPU precisa de um dado que não está nos registradores, este é buscado na memória. • O que a CPU faz enquanto a informação não chega?

  14. Formas de Esperar por um Dado • Existem duas formas de resolver este problema: • A CPU é bloqueada quando esta tenta ler uma palavra de memória antes de ela chegar. (HW) • O compilador não gera código que usa palavras antes de estarem prontas. (SW)

  15. Bloqueio por Software • O compilador introduz instruções NOP. • Instruções que não realizam nada. • Estas pausas são também conhecidas como bolhas.

  16. Bloqueio por Software

  17. Bloqueio por Software • NOPs também são utilizados em cracks. • Instruções são substituídas por NOPs. • Verificação de serial. • Autenticação.

  18. Exemplo de Crack em Java public String getContent(User user) { if (user.equals(this.owner)) { return content; } else { throw new AuthenticationException("Wrong user!!"); } } ... public boolean equals(Object o) { User other = (User) o; boolean result = true; result = result & (other.password.equals(this.password)); result = result & (other.username.equals(this.username)); return result; }

  19. Exemplo de Crack em Java public java.lang.String getContent(authentication.User); Code: 0: aload_1 1: aload_0 2: getfield #17; //Field owner:Lauthentication/User; 5: invokevirtual #26; //Method authentication/User.equals:(Ljava/lang/Object;)Z 8: ifeq 16 11: aload_0 12: getfield #15; //Field content:Ljava/lang/String; 15: areturn 16: new #32; //class authentication/AuthenticationException 19: dup 20: ldc #34; //String Wrong user!! 22: invokespecial #36; //Method authentication/AuthenticationException."<init>":(Ljava/lang/String;)V 25: athrow

  20. Exemplo de Crack em Java public java.lang.String getContent(authentication.User); Code: 0: aload_1 1: aload_0 2: getfield #17; //Field owner:Lauthentication/User; 5: invokevirtual #26; //Method authentication/User.equals:(Ljava/lang/Object;)Z 8: nop 9: aload_0 10: getfield #15; //Field content:Ljava/lang/String; 13: areturn 14: new #32; //class authentication/AuthenticationException 17: dup 18: ldc #34; //String Wrong user!! 20: invokespecial #36; //Method authentication/AuthenticationException."<init>":(Ljava/lang/String;)V 23: athrow

  21. Exemplo de Crack em Java • A instrução de verificação da autenticidade do usuário é substituída por uma instrução NOP. • A autenticação é omitida. • By-pass

  22. Memórias Cache • Para reduzir o impacto dos problemas de sincronização, uma memória de alta velocidade é introduzida na CPU. • Chamada de memória cache. • É utilizada para armazenar palavras de memória utilizadas com mais freqüência.

  23. Memória Cache • Quando a CPU precisa de uma palavra, ela verifica a cache. • Se a palavra buscada não está na cache, então é buscada na memória principal.

  24. Memória Cache • Sabe-se que quando uma palavra é referenciada no endereço A, a próxima referência está na vizinhança de A. • Um exemplo disto é o próprio programa. • Exceto em casos de desvios e chamadas a procedimentos.

  25. Memória Cache • Reduz o tempo gasto com acesso à memória armazenando os dados freqüentes. • Grande parte do tempo de execução é gasto em laços. • Um programa de manipulação de matrizes fará muitas referências à mesma matriz.

  26. Princípio da Localidade • O princípio da localidade é a observação de que referências à memória, feita em qualquer intervalo de tempo curto, tendem a usar apenas uma pequena fração da memória total. • Quando uma palavra é referenciada, ela e seus vizinhos são copiados para a cache.

  27. Linhas de Cache • Memórias principais e caches são divididos em blocos de tamanho fixo. • Chamados de linhas de cache. • Quando uma busca na cache falha, toda a linha é carregada.

  28. Linhas de Cache

  29. Projeto de Cache • Algumas questões são importantes no projeto de cache. • Tamanho da cache. • Quanto maior o tamanho da cache, melhor seu funcionamento, porém maior é o custo. • Tamanho da linha de cache. • Uma cache de 16kb pode ser dividida em até 1024 linhas de 16 bytes, 2048 linhas de 8 bytes...

  30. Projeto de Cache • Organização da cache. • Como são controladas as palavras de memória que estão sendo mantidas no momento. • O número de caches. • É comum um ter uma cache primária dentro do chip, uma cache secundária fora do chip e uma terceira mais adiante.

  31. Projeto de Cache • Localização das instruções e dos dados. • Instruções e dados podem ser mantidos em locais diferentes. • Pode ser classificada como: • Cache unificada • Cache dividida

  32. Projeto de CacheCache Unificada • Projeto mais simples. • Mantém um equilíbrio entre as buscas de instruções e buscas de dados. • Mantém as instruções e os dados na mesma cache.

  33. Projeto de CacheCache Dividida • Tendência nos projetos atuais. • Também conhecido como arquitetura Harvard. • Utiliza uma cache dividida, separando instruções dos dados. • Permite acesso paralelo às instruções e dados. • Instruções não são modificadas durante a execução, portanto, o conteúdo da cache de instruções nunca é escrito de volta na memória.

  34. Memória Secundária

  35. Introdução • A memória principal sempre será muito pequena. • O usuário sempre quer usar mais memória do que tem disponível.

  36. Hierarquia de Memória

  37. Hierarquia de Memória • A medida que desce na hierarquia, três parâmetros aumentam: • O tempo de acesso. • Capacidade de armazenagem. • Com exceção das fitas e discos óticos. • O preço por bit.

  38. Discos Magnéticos

  39. Introdução • Composto de um ou mais pratos de alumínio com um revestimento magnetizável. • Possui um cabeçote de disco com uma bobina de indução. • Flutua logo acima da superfície, apoiado sobre um colchão de ar. • Em discos flexíveis o cabeçote toca a superfície.

  40. Introdução • O cabeçote alinha as partículas magnéticas definindo um valor no setor. • Alinha para esquerda ou para direita. • A seqüência circular de bits escritos quando o disco faz uma rotação completa é denominada trilha.

  41. Estruturas • Cada trilha é dividida em setores. • Possui um número fixo de setores. • Cada setor possui um preâmbulo que permite a sincronização do cabeçote antes de uma leitura ou escrita.

  42. Estruturas • Após os dados, está um código de correção de erros. • Há uma lacuna entre os setores chamada de lacuna de intersecção.

  43. Estruturas • Os discos possuem braços móveis que deslocam-se para dentro e para fora. • Permite acessar diferentes distâncias radiais. • A cada distância radial pode ser escrita uma trilha diferente.

  44. Estruturas

  45. Estruturas • A maioria dos discos é composta de vários pratos empilhados na vertical.

  46. Busca de Dados • Para ler ou escrever um setor, o braço deve se posicionar até a posição radial correta. • Esta ação é chamada de busca (seek). • Assim que o cabeçote é posicionado, o disco deve ser rotacionado até o setor ser posicionado sob o cabeçote. • Este tempo é chamado de latência rotacional.

  47. Latência Rotacional

  48. Controlador de Disco • Todo drive possui um controlador de disco. • Um chip que controla o drive. • Pode conter uma CPU completa. • Deve aceitar comandos de software. • Read, write e format.

  49. Controlador de Disco • Controla o movimento do braço, detecta e corrige erros. • Deve converter bytes de 8 bits lidos da memória em uma corrente serial de bits e vice-versa.

  50. Discos IDEs • Possui o controlador integrado ao drive. • Discos anteriores possuíam uma placa separado para o controlador. • Realiza leitura e escrita da seguinte forma: • O SO coloca os parâmetros nos registradores da CPU e chama o BIOS (Basic Input Output System); • O BIOS emite as instruções para carregar os registradores do controlador. • O controlador inicia as transferências.

More Related