A maioria de nós que é do ramo da eletrônica sabe que a SRAM é mais rápida que a DRAM. Mas quando se trata de comparar RAM com ROM, não tenho certeza.
Minha pergunta está relacionada ao microcontrolador: "Se um código estiver sendo executado diretamente da RAM / ROM, cujo desempenho será melhor? 1) execução da RAM ou 2) execução da ROM ou 3) ambos serão iguais"
Considerando também o fato de que a ROM foi projetada para ter velocidades de leitura mais altas. enquanto na RAM, há uma troca da velocidade de leitura por ter recursos de gravação.
microcontroller
ram
rom
Prince Rambade
fonte
fonte
Respostas:
A folha de dados deve informar quanto tempo leva cada instrução e que diferenças existem, se houver, entre a execução da RAM ou da ROM.
Para microcontroladores que oferecem a opção de executar a partir da RAM, isso é provavelmente mais rápido, provavelmente o ponto principal do uso de espaço adicional na RAM para executar o código. Também pode haver alguns problemas de sobreposição de busca. Em alguns casos, pode ser mais rápido executar a partir da ROM porque é uma memória separada e o acesso à RAM pode estar ocorrendo simultaneamente.
Novamente, a única maneira de saber para qualquer micro específico é LER A FOLHA DE DADOS .
fonte
Depende inteiramente da arquitetura da memória e da CPU. Como regra geral, a SRAM é mais rápida que o flash, principalmente em MCUs de alta velocidade (> 100 MHz). As células de bits SRAM produzem uma saída (mais ou menos) no nível lógico, enquanto a memória flash precisa passar por um processo de detecção de corrente mais lento.
O quanto mais rápido (se houver) novamente depende da arquitetura - o tamanho da palavra das memórias, o número de estados de espera em cada um, a presença de armazenamento em cache, o tamanho das instruções da CPU etc. Se você estiver executando em um com freqüência baixa o suficiente, você pode ter zero estados de espera no flash e na RAM, para que possam rodar na mesma velocidade.
O código também é importante. Se o seu código for estritamente linear (sem ramificação), o flash poderá pré-buscar instruções com rapidez suficiente para manter a CPU saturada mesmo em frequências mais altas. Como disse Olin, uma CPU da arquitetura de Harvard com caminhos separados de leitura de programa e dados pode ter um desempenho diferente quando o código e os dados estiverem em memórias diferentes.
As ROMs de metal (e outras memórias não voláteis, como a FRAM) têm características próprias e podem ou não ser tão rápidas quanto a SRAM. A capacidade de escrever não faz necessariamente diferença; trata-se mais das características da saída da célula de bit e dos circuitos de detecção.
A folha de dados fornecerá uma idéia aproximada da diferença de velocidade, mas a única maneira de saber com certeza é o perfil do seu código.
fonte
"Executar um programa" requer uma CPU com um relógio síncrono. A memória lenta pode ser acomodada executando o sistema inteiro em um relógio lento o suficiente ou inserindo
wait states
(ciclos extras de relógio do-nothing entre as fases de busca e decodificação), ativos apenas para determinados intervalos de endereços (veja o antigo 8085, por exemplo). A busca de instruções da CPU não sabe nem se importa exatamente quando os dados são definidos em seu valor final, desde que não sejam alterados durante o intervalo de configuração / espera.Um microcontrolador geralmente tem toda a sua memória no chip; portanto, a menos que seja declarado o contrário, eu assumiria que o sistema de memória está em estado de espera zero. (mas leia a folha de dados para confirmar). Microcontroladores típicos devem ser soluções mais simples, com chip único, em comparação com um desktop, portanto, os estados de espera são improváveis em um microcontrolador. Portanto, é improvável que um microcontrolador tenha velocidades de memória no chip incompatíveis.
Uma memória mais rápida geralmente custa um prêmio (tensão mais alta, capacitância mais baixa, mais demanda). Um 80xx86 possui uma SRAM rápida no cache L2 e uma SRAM ainda mais rápida no cache L1, e muitos chips DRAM mais lentos anexados a um controlador de memória. Esse tipo de sistema é muito mais complicado que um microcontrolador e está além do escopo da questão. (Mas de grande interesse para um engenheiro de computação!)
fonte