O que é memória flash não executável?

1

Outro dia no trabalho, alguém estava perguntando how much ‘executable’ flash memory we need. Não é possível executar com toda a memória flash?

Se eu estiver errado, como a memória flash executável difere da memória flash não executável?

EDIT Isso tem a ver com sistemas embarcados. Estamos projetando um novo sistema no trabalho e estamos escolhendo um processador. Um requisito que surgiu foi quanta memória precisávamos. A citação acima foi relativa a um esclarecimento sobre esse requisito.

Mike
fonte
1
Poderíamos ter um pouco mais de contexto? Isso tem algo a ver com um sistema incorporado? Ou está se referindo ao armazenamento secundário do PC (unidade SSD / flash)? Ou alguma outra coisa?
26412 Bob
@Bob - sistema incorporado, editou a publicação com este ponto.
Mike

Respostas:

3

Não, não é possível executar com toda a memória flash. Por exemplo, digamos que você tenha um chip flash serial que requer várias instruções apenas para ler um único byte desse chip flash. Como você pode executar o código desse chip flash?

Praticamente todo PC possui um chip flash em cada cartão de memória RAM contendo as especificações da memória RAM. Você com certeza não pode executar o código nesse chip flash, pois ele não está mapeado na memória e só pode ser acessado por sequências complexas de código que estão conversando com o controlador de memória.

Ou considere uma CPU que tenha espaços de endereço de dados executáveis ​​e separados. Um chip flash mapeado no espaço de endereço de dados também não seria executável.

Os detalhes são muito específicos do dispositivo. Mas não é incomum que um dispositivo possua flash que não seja executável.

Pense em uma unidade flash SSD ou USB. Você não pode executar código fora deles sem copiá-lo para a RAM primeiro. (E os sistemas embarcados geralmente não têm RAM suficiente para armazenar uma cópia.)

Além disso, algumas CPUs têm requisitos de desempenho na memória que é executável. Algumas CPUs não têm a capacidade de inserir estados de espera nas buscas do programa, mas sim na busca de dados. Portanto, o flash executável deve ser muito rápido. Não é incomum usar flash mais barato para dados. (O DS80C320, por exemplo, pode tolerar uma memória de dados mais lenta, mas a memória executável deve ser executada a toda velocidade.)

David Schwartz
fonte
Então, o que torna o flash "executável" então? A velocidade? O tipo de barramento pelo qual é acessado? Ou estou simplificando demais isso e a resposta é "depende"?
Mike
Eu acho que "depende" é o melhor que você pode fazer. Basicamente, se a CPU pode ou não executar o código, depende de todos esses tipos de fatores.
David Schwartz
1

Em muitos microcontroladores, que são usados ​​para muitos aplicativos incorporados, existem pelo menos dois tipos de memória: memória Flash (que geralmente contém o firmware incorporado) e RAM (que é usada para armazenar valores de tempo de execução, registros, pilha, etc.).

Alguns microcontroladores têm mais de 1 memória flash e nem todos podem ser usados ​​para armazenar programas (firmware). As outras regiões de memória flash são usadas apenas para armazenamento não volátil.

Em todos esses casos, a memória flash normalmente é programada durante o desenvolvimento (como carregar dados no disco rígido) e não é substituída pelos programas em execução. Em alguns casos, o flash pode ser gravado e você possui sistemas auto-reprogramáveis.

Para ser claro, os programas são executados a partir dessa memória flash, mas não estamos falando de nada como um disco flash.

KevinM
fonte