sábado, 13 de outubro de 2018

Moz Frases e Pensamentos

""Sinto muita pena do orgulho/tactica 
dos infelizes, conseguem tudo que 
querem,mas nao tem tudo que conseguem""
Fazbem F. Alberto

segunda-feira, 22 de dezembro de 2014



Acesso à uma memória principal
Conceito
A memória é um componente de um sistema de computação cuja função é armazenar as informações que são, foram ou serão manipuladas pelo sistema.
Segundo Von Neumann, através dessas informações os dados ou as instruções de um programa entendem-se. Realmente dentro do processamento em diversos componentes de um computador tem havido coordenação dos dados e instruções.
Para que um programa possa ser manipulado pela máquina, ele primeiro precisa estar armazenado na memória principal.
A memória principal dos computadores modernos é fabricada com tecnologia de semicondutores, o que lhes permite elevada velocidade de acesso e transferência de bits, já que são circuitos apenas eléctricos em funcionamento (não há partes mecânicas ou magnéticas). A velocidade de propagação de um sinal eléctrico é cerca de 300.000 km/s (velocidade de luz).
A memória principal é a memória de trabalho da UCP, seu grande “bloco de rascunho”, onde os programas e os dados e sucedem em execução, uns após os outros.
Ela é de acesso aleatório (do inglês Random Access Memory, frequentemente abreviado para RAM) é um tipo de memória que permite a leitura e a escrita, utilizada como memória primária em sistemas electrónicos digitais.
O termo acesso aleatório identifica a capacidade de acesso a qualquer posição em qualquer momento, por oposição ao acesso sequencial, imposto por alguns dispositivos de armazenamento, como fitas magnéticas. O nome não é verdadeiramente apropriado, já que outros tipos de memória (como a ROM) também permitem o acesso aleatório a seu conteúdo. O nome mais apropriado seria Memória de Leitura e Escrita.
Apesar do conceito de memória de acesso aleatório ser bastante amplo, actualmente o termo é usado apenas para definir um dispositivo electrónico que o implementa, basicamente um tipo específico de chip. Nesse caso, também fica implícito que é uma memória volátil, isto é, todo o seu conteúdo é perdido quando a alimentação da memória é desligada. A memória principal de um computador baseado na Arquitectura de Von-Neumann é constituída por RAM. É nesta memória que são carregados os programas em execução e os respectivos dados do utilizador. Uma vez que se trata de memória volátil, os seus dados são perdidos quando o computador é desligado. Para evitar perdas de dados, é necessário salvar a informação para suporte não volátil, como o disco rígido.
Os circuitos da Memória Principal não são combinatórios, eles têm capacidade de armazenar bits. Os circuitos usados são do tipo "flip-flop", tem por finalidade permitir a comunicação entre o usuário e o computador.
 Uma memória de computador, o elemento a ser manipulado é o bit, o qual, em grupo de n bits, corresponde a uma unidade de informação a ser armazenada, transferida ou recuperada. Para isso, realizam-se acções de armazenamento, transferência de bits de outro componente (UCP ou HD) ou recuperação.
O armazenamento pode ser chamado de “escrita”, “gravação” ou “write”, enquanto a recuperação pode ser chamada de “leitura” ou “read”. A gravação é destrutiva, ou seja, os dados que estavam gravados anteriormente são substituídos pelos que estão sendo gravados. Por outro lado, a recuperação apenas copia o valor armazenado para outro local e valor original continua sem alteração.
Para que um armazenamento em uma memória ocorra é necessário que seja definido um local disponível identificado de alguma forma precisa e única, número ou código associado ao local, que é o endereço (address) e irá permitir que a informação possa ser localizada.
Hierarquia de memória
A Memória Principal não é o único dispositivo de armazenamento de um computador. Em função de características como tempo de acesso, capacidade de armazenamento, custo, há uma hierarquia de dispositivos de memória em computadores.
Como mostra a tabela abaixo:
Tipo
Capacidade
Velocidade
Custo
Localização
Volatilidade
Registrador
Bytes
Muito alta
Muito alto
UCP
Volátil
Memória cache
Kilobytes
Alta
Alto
UCP/placa
Volátil
Memória principal
Megabytes
Média
Médio
Placa
Volátil
Memória auxiliar
Gigabytes
Baixa
Baixo
Externa
Não volátil

A UCP vê nesta ordem e acessa primeiro a que está mais próxima. Subindo na hierarquia, quanto mais próximo da UCP, maior velocidade, maior custo, porém menor capacidade de armazenamento.
A memoria principal não só funciona directamente de e para a UCP. Cada momento, a memória cache armazena a porção de código ou dados que estão sendo usados pela UCP. Essa transferência da MP para memória Cache e da memória cache para MP é feita pelo hardware,  independentemente do software, que ignora se existe ou não memória cache, portanto ignora essa transferência.
Cache, é um termo do inglês que deriva do francês “cacher” (em português significa esconder). Na prática, para os demais componentes do sistema, tudo se passa como se não houvesse cache, já que nenhum deles, excepto o subsistema que controla o acesso à memória, toma conhecimento de sua existência. Os dados nele armazenados são fornecidos como se proviessem directamente do local de armazenamento original, apenas mais rapidamente. É essa a razão do nome, já que as coisas se passam como se os dados estivessem “escondidos” na cache.
A memória cache opera em função de um princípio estatístico comprovado: os programas tendem a referenciar várias vezes pequenos trechos de programas, como loops, sub-rotinas, funções e só tem sentido porque programas executados linearmente, sequencialmente, são raros. Desta forma, algoritmos algoritmos de cache podem controlar qual parte do código ficará copiada na cache, a cada momento.
Quando a MP busca um determinado trecho de código e o encontra na cache, dá-se um "cache hit" , enquanto se o dado não estiver presente na cache será necessário requisitar o mesmo à MP, acarretando atraso no processamento e dá-se um "cache miss" ou "cache fault".
Para certas actividades é fundamental que a transferência da informação seja a mais rápida possível (menor “Tempo de Acesso”), enquanto a quantidade de bits (“Capacidade”) a ser manipulada pode ser pequena. Em outras situações, o “Tempo de Acesso” não é tão importante, mas sim o volume de dados gravado. A permanência da informação após o desligamento do computador é outra característica relevante em algumas situações.
Em todos os casos, o custo da memória é inversamente proporcional à “capacidade” e ao “tempo de acesso”. Assim sendo, para o correcto funcionamento de um computador verifica-se a necessidade de diferentes tipos de memória. Este conjunto de diferentes memórias é chamado “Subsistema de Memória”.
Tempo de acesso
Indica quanto tempo a memória gasta para colocar uma informação na barra de dados após uma determinada posição ter sido endereçada.
O tempo de acesso ou ciclo da memória principal é construída por elementos cuja velocidade operacional se situa abaixo das memórias cache, embora sejam muito mais rápidas que a memória secundária.
Nos primeiros sistemas usavam-se núcleos de ferrite (processo magnético) para armazenar os bits na memória principal, até que foram substituídos pela tecnologia de semicondutores. Os circuitos que representam os bits nas memórias actuais possuem uma tecnologia bem mais avançada que seus predecessores de ferrite e, portanto, têm velocidade mais elevada de transferência, garantindo baixos tempos de acesso em comparação com o modelo anterior. São, porém, elementos mais lentos do que aqueles que constituem as memórias cache. Na maioria dos sistemas actuais esta tecnologia produz memória com elementos dinâmicos (DRAM.
Para que um programa seja executado é necessário que ele esteja armazenado na memória principal incluindo com os seus dados. Actualmente, é obrigatório apenas o armazenamento, na MP, da instrução e dados que serão acessadas pela CPU. As instruções e os dados permanecem temporariamente na MP, enquanto durar a execução do programa. Esta temporariedade é bastante variável, dependendo de várias circunstâncias, como, por exemplo, o tamanho do programa e sua duração, a quantidade de programas que estão sendo processados juntos, e outras mais. No entanto, a transitoriedade com que as informações permanecem armazenadas na MP é, em geral, mais duradoura que na memória cache ou nos registradores, embora mais lenta que na memória secundária.
O microprocessador gasta normalmente dois pulsos de clock (“externo” – placa-mãe) para acessar a memória RAM. A memória RAM tem que possuir um Tempo de Acesso (TA) inferior a este valor. Uma memória de 60 ns num microcomputador de 66 MHz tem que esperar dois “Wait States” de 15 ns, que somados ao T.A. mínimo de 30 ns vão permitir a comunicação.
Como mostra o exemplo abaixo:
Frequência de Operação Máxima (MHz)
Clock externo
Tempo de um clock
Tempo de acesso mínimo
66 MHz
15 ns
30 ns
100 MHz
10 ns
20 ns
133 MHz
7.5 ns
15 ns
200 MHz
5 ns
10 ns
400 MHz
2.5 ns
5 ns

Para endereçar-se 4 “células” de memória utilizam-se 2 bits, porque =4. Desta forma, para endereçar-se 32 células de memória irá se utilizar 5 bits (= 32). Para endereçar-se 256M endereços,irá se utilizar 28 bits ( *  = ). Assim, se E for o número de bits de um endereço e N for o número de endereços, tem-se:
N =
O endereçamento da memória utiliza o sistema “Linha/Coluna”, o qual permite localizar um endereço a partir das coordenadas “Linha/Coluna” de uma matriz. Assim se os 256M () endereços de uma memória estiverem distribuídos em uma matriz   , precisaremos de apenas 14 bits (a metade dos 28 vistos anteriormente) para o endereçamento.
Nesta sistemática o endereço é dividido em dois: RAS (Row Address Strobe) e CAS (Column
Address Strobe), responsáveis pelos endereços “linha” e “coluna”, respectivamente.
A memória é organizada como um conjunto de N células com M bits cada. Se possui N células, necessita de N endereços. Por outro lado se a célula possui M bits, podemos armazenar nela um valor entre 0 até. O valor N representa a “capacidade da memória”, ou seja, a quantidade de células ou de endereços, enquanto M indica a quantidade de bits que podem ser armazenados.
A memória principal é o depósito de trabalho da UCP, isto é, a UCP e a MP trabalham íntima e directamente na execução de um programa. As instruções e os dados do programa ficam armazenados na MP e vai “buscando-os” um a um à medida que a execução vai se desenrolando.
Os programas são organizados de modo que os comandos são descritos sequencialmente e o armazenamento das instruções se faz da mesma maneira, fisicamente sequencial.


Um microcomputador deve possuir três barramentos:
1.     Barramento de dados: Interliga a RDM à MP. É bidirecional, ou seja, os dados trafegam da UCP para a MP ou da MP para a UCP.
2.     Barramento de endereços: Interliga a REM à MP. É unidirecional, uma vez que a UCP sempre informa à MP qual o endereço pretende ler ou escrever.
3.     Barramento de controle: Interliga a UCP à MP, permitindo a passagem de sinais de controle durante uma operação de leitura ou escrita. É bidirecional, pois a UCP pode enviar sinais de controle para a MP (comando de leitura ou escrita), e a MP pode enviar sinais do tipo WAIT (ordena que a UCP fique em estado de espera – WAIT STATE).

Devido às temporizações dois módulos de memória com mesma taxa de transferência máxima teórica podem apresentar desempenhos diferentes. As temporizações medem o tempo em que o chip de memória demora para fazer algo internamente. A temporização da memória é dada através de uma série de números, como, por exemplo 2-3-2-6-T1, 3-4-4-8 ou 2-2-2-5. Estes números indicam a quantidade de pulsos de clock que a memória demora para fazer uma determinada operação. Quanto menor o número, mais rápida é a memória. Na figura ao lado a temporização é 5-5-5-15.
Normalmente as temporizações são padronizadas (“Auto” no SETUP), porém é possível a configuração manual de temporizações menores para aumentar o desempenho do seu micro (OVERCLOCK). Algumas placas-mãe podem não funcionar com temporizações muito baixas.
As temporizações que estes números indicam são as seguintes: CL-tRCD-tRP-tRAS-CMD.
CL (CAS Latency ou Latência do CAS): Indica a quantidade de pulsos de clock que a memória leva para retornar um dado solicitado. Uma memória com CL=3 demora três pulsos de clock para entregar um dado, enquanto que uma memória com CL=5 demora cinco pulsos de clock para realizar a mesma operação.
Dessa maneira dois módulos trabalhando com o mesmo clock o que tiver a menor latência do CAS será o mais rápido.
tRCD (RAS to CAS Delay): Cada chip de memória é organizado internamente como uma matriz. Internamente o processo de acessar um dado é feito por dois sinais de controle chamados RAS (Row Address Strobe) e CAS (Column Address Strobe). Quanto menor for o tempo entre esses dois sinais, melhor, já que o dado será lido mais rapidamente. O parâmetro “RAS to CAS Delay” ou (tRCD) mede este tempo.
tRP (RAS Precharge): Tempo demorado entre desactivar o acesso a uma linha de dados e iniciar o acesso a outra linha de dados. Após o dado ter sido entregue pela memória, um comando chamado “Precharge” precisa ser executado para desativar a linha da memória que estava sendo usada e para permitir que uma nova linha seja
ativada. O tempo “RAS Precharge” (tRP) é o tempo entre o comando “Precharge” e o próximo comando “Active” (“Ativar” ou CS).
tRAS (Active to Precharge Delay): Após um comando “Active” (CS) ter sido enviado, um outro comando “Precharge” não pode ser iniciado até que o tempo tRAS tenha decorrido. Em outras palavras, este parâmetro limita quando a memória pode iniciar a leitura (ou escrita) em uma linha diferente.
CMD (Command Rate): Tempo demorado entre o chip de memória ter sido ativado e o primeiro comando poder ser enviado para a memória. Algumas vezes este valor não é informado. Normalmente possui o valor T1 (1 clock) ou T2 (2 clocks).
Bibliografia
http://www.di.ufpb.br/raimundo/Hierarquia/Mem Principal.htmlpribcipal