1

На днях на работе кто-то спрашивал, how much ‘executable’ flash memory we need . Разве нельзя выполнить из всей флэш-памяти?

Если я не прав, то чем отличается исполняемая флэш-память от неисполняемой флэш-памяти?

РЕДАКТИРОВАТЬ Это связано со встроенными системами. Мы разрабатываем новую систему на работе и выбираем процессор. Одним из требований было то, сколько памяти нам нужно. Цитата выше касалась разъяснения по этому требованию.

2 ответа2

3

Нет, невозможно выполнить из всей флэш-памяти. Например, скажем, у вас есть серийный флэш-чип, который требует ряда инструкций только для считывания одного байта из этого флэш-чипа. Как вы могли бы выполнить код из этого флэш-чипа?

Практически на каждом ПК есть флеш-чип на каждой флешке, содержащий спецификации ОЗУ. Вы наверняка не сможете выполнить код в этой флеш-микросхеме, поскольку он не отображается в памяти и доступен только для сложных последовательностей кода, обращающихся к контроллеру памяти.

Или рассмотрим ЦП с отдельными адресными пространствами исполняемых файлов и данных. Флэш-чип, который был отображен в адресное пространство данных, также не может быть выполнен.

Детали очень зависят от устройства. Но для устройства весьма характерно иметь флэш-память, которая не является исполняемой.

Подумайте о SSD или USB-накопителе. Вы не можете выполнить код из них, не скопировав его в оперативную память. (А встроенным системам часто не хватает оперативной памяти для хранения копии.)

Кроме того, некоторые процессоры предъявляют требования к производительности для исполняемой памяти. Некоторые процессоры не имеют возможности вставлять состояния ожидания при извлечении программ, но делают это при извлечении данных. Так что исполняемая флешка должна быть очень быстрой. Не редкость использовать более дешевую флэш-память для данных. (Например, DS80C320 может выдерживать более медленную память данных, но исполняемая память должна работать на полной скорости.)

1

Во многих микроконтроллерах, которые используются во многих встроенных приложениях, имеется как минимум два типа памяти: флэш-память (которая обычно содержит встроенную прошивку) и оперативная память (которая используется для хранения значений времени выполнения, регистров, стека и т.д.).

Некоторые микроконтроллеры имеют более 1 флэш-памяти, и не все могут быть использованы для хранения программ (прошивки). Другие области флэш-памяти используются только для энергонезависимого хранения.

Во всех этих случаях флэш-память обычно программируется во время разработки (например, загрузка данных на жесткий диск) и не перезаписывается работающими программами. В некоторых случаях флэш-память может быть записана, и у вас есть самопрограммируемые системы.

Чтобы было ясно, программы выполняются из этой флэш-памяти, но мы не говорим ни о чем, как о флэш-диске.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .