реклама на сайте
подробности

 
 
> microSD задержки при обмене, есть ли способы борьбы ?
MiklPolikov
сообщение Sep 5 2016, 21:50
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



На microSD карту пишется поток данных. Поток непрерывный, буфера RAM нет, карта периодически останавливает обмен на доли секунды.
Интерфейс SDIO 48МГц , на карте FAT32 , библиотека для работы c FAT FATFS.

Вопрос:
Можно ли избавится от задержек в обмене ? Может быть, в современных картах появились какие-то хитрые настройки для этого ? Может быть, есть карты со встроенным буфером RAM ?

Заранее спасибо !





--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
makc
сообщение Sep 7 2016, 19:52
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



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

Число циклов перезаписи современных MLC/TLC NAND Вы знаете, почему же карты живут несколько дольше?
Вот статья 2003 года, отчасти подтверждающая мои слова про наличие механизмов выравнивания износа.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 8 2016, 07:00
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(makc @ Sep 8 2016, 01:52) *
По-моему Вы путаете уровни, т.к. спецификация задает параметры карт, видимые для внешнего мира. В т.ч. логическую организацию и систему команд. Но делать из этого вывод о физической структуре и методах работы внутренних алгоритмов карты в корне неверно, т.к. это более низкий уровень, скрытый за упомянутой системой команд.

Да я допускаю что внутри там может быть более сложная организация. Я и писал что возможно там есть буферизация потока записываемых блоков (о чём косвенно свидетельствует алгоритм работы команды многоблочной записи).
Но в спецификации это явно не указано! Т.е. - не указано что карта должна это делать. Какой-то конкретный производитель может конечно захотеть и реализовать внутри всё что угодно: и вести статистику использования блоков и даже перемещать самые популярные блоки не только по всему массиву блоков, но и в отдельную память, например FRAM и многое другое.
Но только - зачем ему оно надо? Тратить ресурсы на более сложную разработку, тратить лишние вентили на весь этот механизм, может их лучше потратить на доп. ячейки флешь и сделать бОльшую ёмкость?
Ведь главная цель изготовителя - извлечение прибыли и уменьшение издержек. И если оно не требуется спецификацией, то может кто так и будет делать, то такие карты ТСу ещё найти надо.

Цитата(makc @ Sep 8 2016, 01:52) *
Число циклов перезаписи современных MLC/TLC NAND Вы знаете, почему же карты живут несколько дольше?

И что? Число циклов перезаписи не говорит, что по достижении этого значения, блок сразу откажет. Это минимальное число стираний которое блок должен выдержать, а в реале может в разы больше выдержать.
Вот я сейчас разбираюсь с регенерацией SDRAM. Так вот провожу испытания - выключаю регенерацию и измеряю сколько данные продержатся без регенерации. По даташиту регенерацию надо выполнять не реже чем раз в 64мсек, т.е. хранение данных без регенерации более 64мсек не гарантировано.
А в реале (заполняю всю SDRAM 32МБ псевдослучайными значениями и через заданное время проверяю всю целиком) разрушение данных наблюдаю только после отключения регенерации на 3-4 сек и более.
Если на 1 сек отключить регенерацию, то данные 100%-но сохраняются.
Go to the top of the page
 
+Quote Post
IlyaSergeev
сообщение Sep 8 2016, 08:40
Сообщение #4





Группа: Участник
Сообщений: 9
Регистрация: 29-11-14
Пользователь №: 83 894



Некоторое время назад выкладывал мини-отчет по производительности записи на SD в непрофильной теме:
http://electronix.ru/forum/index.php?showt...32833&st=31
Краткий вывод - от задержек в десятки и даже сотни мс не избавиться, но при правильной организации структуры памяти можно радикально уменьшить их количество.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Sep 12 2016, 08:22
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(IlyaSergeev @ Sep 8 2016, 11:40) *
Некоторое время назад выкладывал мини-отчет по производительности записи на SD в непрофильной теме:
http://electronix.ru/forum/index.php?showt...32833&st=31


IlyaSergeev, большое спасибо ! Выравнивание адреса на 0x8000 заметно улучшило дело ! . Но редкие нерегулярные задержки 400мс при использовании FATFS остались.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
makc
сообщение Sep 12 2016, 08:33
Сообщение #6


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(MiklPolikov @ Sep 12 2016, 11:22) *
IlyaSergeev, большое спасибо ! Выравнивание адреса на 0x8000 заметно улучшило дело ! . Но редкие нерегулярные задержки 400мс при использовании FATFS остались.


FATFS написан неэффективно и чуть что лезет писать в FAT, причём пишет совсем понемногу. Поэтому для оптимизации доступа имеет смысл сделать промежуточный слой доступа к носителю (типа кэша), который будет накапливать эти модификации и потом редко записывать единым блоком. И, кстати, стоит обратить внимание на то, как FatFS сконфигурирован. Надеюсь у Вас _FS_TINY == 0 ?


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 12 2016, 13:47
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(makc @ Sep 12 2016, 14:33) *
(типа кэша), который будет накапливать эти модификации и потом редко записывать единым блоком. И, кстати, стоит обратить внимание на то, как FatFS сконфигурирован. Надеюсь у Вас _FS_TINY == 0 ?

У ТСа нет ОЗУ даже для буферизации основного потока, не то что ещё и FAT. Ведь в этом-то и вся проблема. Если-б ОЗУ было - проблемы и не было-бы: выкинуть вообще любую файловую систему и писать просто поток блоков на SD через буфер.

Цитата(mantech @ Sep 12 2016, 14:47) *
Т.е. предлагаете делать прослойку типа SmartDrv в старом мс-досе?? А вы в курсе, что при этом можно очень легко нарушить целостность файловой системы при сбое или отключении питания? Сколько было потрачено сил и убеждений в свое время, чтоб не жали на ресет по делу и без дела в старых компах... Хотя да, на древних винтах ускорение было заметным.

Эти "прослойки" есть и на современных компах. Иначе - операции с мелкими файлами на SD становятся оооооочень затратны по времени. Да и на МК при интенсивных модификациях файлов, кеширование очень полезно.
А чтобы не слетали файловые системы - тут разработчик, на этапе проработки идеологии всей системы в целом, должен голову включить и подумать как этого добиться (или супервизиром питания, дающим запас времени после сигнала аварии питания; или дополнительной non-volatile памятью, в которую ПО будет делать журналирование любых критических операций с файловой системой; или ещё какими другими методами).
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Sep 12 2016, 13:51
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(jcxz @ Sep 12 2016, 16:47) *
Если-б ОЗУ было - проблемы и не было

Если б были ОЗУ в небольших корпусах с каким-то примитивным интерфейсом. А то они все с параллельной шиной, из-за чего у микросхемы и процессора много ног т.е. либо огромные корпуса, либо BGA. Габариты критичны, а BGA дорого


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Sep 12 2016, 14:18
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(jcxz @ Sep 8 2016, 11:00) *
Какой-то конкретный производитель может конечно захотеть и реализовать внутри всё что угодно: и вести статистику использования блоков и даже перемещать самые популярные блоки не только по всему массиву блоков, но и в отдельную память, например FRAM и многое другое.
Но только - зачем ему оно надо? Тратить ресурсы на более сложную разработку, тратить лишние вентили на весь этот механизм, может их лучше потратить на доп. ячейки флешь и сделать бОльшую ёмкость?


Приведу пример про конкретный чип на основе родственника SDcard - eMMC:

Цитата
In addition to the mass-storage-specific flash memory chip, SanDisk eMMC includes an intelligent controller, which manages interface protocols, data storage and retrieval, error correction code (ECC) algorithms, defect handling and diagnostics, power management, wear leveling, and clock control.


Цитата(jcxz @ Sep 12 2016, 08:50) *
Ещё раз: Где в спецификации SD говорится, что карта что-то там внутри себя переписывает???? Дайте ссылку.


Приведу пример из стандарта 84-A441 на eMMC:

Цитата
Terms and definitions:
Copies: Copies of erase group(s) or copies of write groups shall be defined as copies of data that are generated by the deviec controller during internal device controller operations. These can include (but are not limited to) copies generated during error handling, wear-leveling or garbage collection. Copies does not refer to write block data, at a specific address. This overwritten data may still remain in the memory array but is no longer accessible by the host. If this data must be secure trimmed, it is the host application’s responsibility to mark this data for secure trim prior to the overwrite event.


Ну и при вызове Trim:
Цитата
Since the minimum size for an erase operation is an erase group and a write group is smaller than an erase group. The trim operation implies that write blocks in an erase group that are not marked for erase
must be copied to another location before the erase is applied.


Вообще ничего волшебного в Trim нет, просто он позволяет посекторно флушить память. Другое дело непонятно, можно ли на MLC вообще не вызывать TRIM, ERASE или ACMD23?

Протестировал тут стирание группы в моей eMMC через CMD35,CMD36,CMD38: при стирании 2/20МБ - то 30мс, то 2 секунды, в не зависимости от длины и наличия данных.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MiklPolikov   microSD задержки при обмене   Sep 5 2016, 21:50
- - aaarrr   Нет, никак нельзя избавиться. Или организуйте буфе...   Sep 5 2016, 22:08
|- - MiklPolikov   Цитата(aaarrr @ Sep 6 2016, 01:08) Нет, н...   Sep 5 2016, 22:21
|- - aaarrr   Цитата(MiklPolikov @ Sep 6 2016, 01:21) Н...   Sep 5 2016, 22:31
- - Сега   Наблюдал такое на STM32. Решилось переходом на DMA...   Sep 5 2016, 22:26
- - makc   Скорость записи может зависеть от того, как карта ...   Sep 6 2016, 04:31
|- - jcxz   Цитата(makc @ Sep 6 2016, 10:31) Скорость...   Sep 7 2016, 10:21
|- - makc   Цитата(jcxz @ Sep 7 2016, 13:13) Как бы о...   Sep 7 2016, 10:22
|- - jcxz   Цитата(makc @ Sep 7 2016, 16:22) Представ...   Sep 7 2016, 11:02
|- - makc   Цитата(jcxz @ Sep 7 2016, 14:02) И что из...   Sep 7 2016, 12:03
|- - jcxz   Цитата(makc @ Sep 7 2016, 18:03) При этом...   Sep 7 2016, 17:37
- - AlexandrY   Цитата(MiklPolikov @ Sep 6 2016, 00:50) В...   Sep 6 2016, 06:16
- - aaarrr   Цитата(makc @ Sep 6 2016, 07:31) Скорость...   Sep 6 2016, 07:14
|- - AlexandrY   Цитата(aaarrr @ Sep 6 2016, 10:14) Да ну,...   Sep 6 2016, 07:20
|- - aaarrr   Цитата(AlexandrY @ Sep 6 2016, 10:20) В с...   Sep 6 2016, 07:35
|- - AlexandrY   Цитата(aaarrr @ Sep 6 2016, 10:35) На одн...   Sep 6 2016, 08:49
|- - mantech   Цитата(AlexandrY @ Sep 6 2016, 11:49) Зна...   Sep 6 2016, 11:46
- - adnega   Цитата(MiklPolikov @ Sep 6 2016, 01:21) Н...   Sep 6 2016, 12:28
|- - MiklPolikov   Цитата(makc @ Sep 12 2016, 11:33) Надеюсь...   Sep 12 2016, 08:44
|- - mantech   Цитата(makc @ Sep 12 2016, 11:33) FATFS н...   Sep 12 2016, 08:47
||- - makc   Цитата(mantech @ Sep 12 2016, 11:47) Т.е....   Sep 12 2016, 11:17
||- - jcxz   Цитата(makc @ Sep 12 2016, 17:17) Я же пы...   Sep 12 2016, 14:11
||- - makc   Цитата(jcxz @ Sep 12 2016, 17:11) Да ну...   Sep 12 2016, 16:09
||- - jcxz   Цитата(makc @ Sep 12 2016, 22:09) И тем н...   Sep 12 2016, 17:07
||- - makc   Цитата(jcxz @ Sep 12 2016, 20:07) Скажу, ...   Sep 12 2016, 17:23
||- - jcxz   Цитата(_4afc_ @ Sep 12 2016, 20:18) Приве...   Sep 12 2016, 14:37
|- - jcxz   Цитата(MiklPolikov @ Sep 12 2016, 19:51) ...   Sep 12 2016, 14:24
|- - _4afc_   Цитата(MiklPolikov @ Sep 12 2016, 17:51) ...   Sep 12 2016, 14:25
- - Alex11   Чтобы минимизировать задержки при длительной запис...   Sep 8 2016, 16:43
|- - MiklPolikov   Показалась интересной мысль про то что карта трати...   Sep 8 2016, 19:40
|- - aaarrr   Цитата(MiklPolikov @ Sep 8 2016, 22:40) С...   Sep 8 2016, 19:51
|- - MiklPolikov   Цитата(aaarrr @ Sep 8 2016, 22:51) А врем...   Sep 8 2016, 21:01
|- - jcxz   Цитата(aaarrr @ Sep 9 2016, 01:51) А врем...   Sep 12 2016, 04:50
|- - makc   Цитата(jcxz @ Sep 12 2016, 07:50) Ещё раз...   Sep 12 2016, 08:08
|- - jcxz   Цитата(makc @ Sep 12 2016, 14:08) Дайте, ...   Sep 12 2016, 10:38
- - jorikdima   многократно тема поднималась тут. Сам сталкивался,...   Sep 8 2016, 20:01
- - makc   Их есть, например, Serial SRAM and Serial NVSRAM ...   Sep 12 2016, 14:05
|- - MiklPolikov   Цитата(makc @ Sep 12 2016, 17:05) Их есть...   Sep 12 2016, 14:19
||- - _4afc_   Цитата(MiklPolikov @ Sep 12 2016, 18:19) ...   Sep 12 2016, 23:06
||- - MiklPolikov   Цитата(_4afc_ @ Sep 13 2016, 02:06) не зн...   Sep 12 2016, 23:17
|||- - _4afc_   Цитата(MiklPolikov @ Sep 13 2016, 03:17) ...   Sep 12 2016, 23:33
|||- - MiklPolikov   Цитата(_4afc_ @ Sep 13 2016, 02:33) Вы же...   Sep 12 2016, 23:44
|||- - _4afc_   Цитата(MiklPolikov @ Sep 13 2016, 03:44) ...   Sep 13 2016, 00:23
|||- - MiklPolikov   Цитата(_4afc_ @ Sep 13 2016, 03:23) вопро...   Sep 13 2016, 00:59
|||- - _4afc_   Цитата(MiklPolikov @ Sep 13 2016, 04:59) ...   Sep 13 2016, 01:29
||- - jcxz   Цитата(_4afc_ @ Sep 13 2016, 05:06) Если ...   Sep 13 2016, 04:59
|- - mantech   Цитата(makc @ Sep 12 2016, 17:05) Их есть...   Sep 12 2016, 17:00
|- - jcxz   Цитата(makc @ Sep 12 2016, 20:05) Но тут ...   Sep 12 2016, 17:49
- - makc   FRAM по надежности (числу циклов перезаписи) ...   Sep 12 2016, 18:11
- - jcxz   Цитата(makc @ Sep 13 2016, 00:11) FRAM по...   Sep 13 2016, 04:29
- - makc   Цитата(jcxz @ Sep 13 2016, 07:29) Что зна...   Sep 13 2016, 04:41
- - _4afc_   Цитата(jcxz @ Sep 13 2016, 08:29) Задержк...   Sep 13 2016, 06:43
- - mantech   Цитата(jcxz @ Sep 13 2016, 07:29) Да и то...   Sep 13 2016, 10:20
- - jcxz   Цитата(mantech @ Sep 13 2016, 16:20) Сорр...   Sep 13 2016, 11:47


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 16:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01511 секунд с 7
ELECTRONIX ©2004-2016