Что такое неисполняемая флэш-память?

451
Mike

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

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

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

1
Можем ли мы иметь немного больше контекста? Это как-то связано со встроенной системой? Или это относится к вторичной памяти ПК (SSD / флешка)? Или что-то другое? Bob 11 лет назад 1
@Bob - встроенная система, отредактировал пост с этим пунктом. Mike 11 лет назад 0

2 ответа на вопрос

3
David Schwartz

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

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

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

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

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

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

Так что же делает flash исполняемым? Скорость? Тип автобуса, к которому он обращается? Или я слишком упрощаю это и отвечаю "это зависит"? Mike 11 лет назад 0
Я думаю, "это зависит" - это лучшее, что вы можете сделать. По сути, может ли ЦП выполнять код из него, что зависит от всех этих факторов. David Schwartz 11 лет назад 0
1
KevinM

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

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

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

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

Похожие вопросы