Перейти к содержанию
    

microSD задержки при обмене

И тем не менее это так: https://en.m.wikipedia.org/wiki/Flash_memory#Read_disturb

Что теперь скажете?

Скажу, что несёте чушь и даже не замечаете этого.

Т.е. - Вы как бы не заметили, что там разговор идёт о MLC NAND flash, а не о любой флешь? Возможно для NAND MLC это и так - я не в курсе. Но точно не относится к любой флешь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажу, что несёте чушь и даже не замечаете этого.

Т.е. - Вы как бы не заметили, что там разговор идёт о MLC NAND flash, а не о любой флешь? Возможно для NAND MLC это и так - я не в курсе. Но точно не относится к любой флешь.

 

Напротив, в контексте этой темы мы говорим о NAND и MLC, как одном из основных ее видов, используемых в картах памяти. Все обсуждаемые проблемы относятся к этому контексту, в т.ч. выравнивание износа и т.п. технологии. При этом Вы периодически прыгаете то на DRAM, то на NOR flash, которая применяется в МК. И, судя по всему, Вам нечего больше сказать по существу вопроса, поэтому я не вижу смысла в дальнейшем обсуждении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Из всего этого выбираю проц с достаточным набортным ОЗУ.

Процев с объёмом набортного ОЗУ достаточным ТСу (128*5 КБ) не такой уж богатый выбор, даже бедный. Но конечно - это самое простое решение.

Мы, для своего устройства, которое тоже пишет поток во Flash (только не SD, а обычные SPI-Flash), в качестве промежуточного буфера выбрали SPI-FRAM. Существенный для нас плюс - её энергонезависимость.

1МБ/сек - это конечно прилично, но думаю при определённых условиях возможно для МК Cortex-M с тактовой >100МГц, хотя тоже не всякого.

Если использовать SPI-FRAM, то они имеют SCLK <= 40МГц. Так как нужен промежуточный буфер, то значит в неё будет идти непрерывно 2-а потока: записи и чтения. Сам чип FRAM успеет прокачать, но должен успеть интерфейс и ПО МК.

Есть ещё такой производитель как https://www.everspin.com/serial-peripheral-interface с его SPI-MRAM памятью. У него тоже есть чипы на 512КБ. И есть чипы с quad-SPI - эти обещают скорость по шине до 52МБ/сек.

 

Напротив, в контексте этой темы мы говорим о NAND и MLC, как одном из основных ее видов, используемых в картах памяти.

Мы говорим о SD-картах вообще. И там может быть любой тип памяти. Даже такой, которого ещё нет, а появится через год-два и карты тогда будут делать в основном на нём.

Это Вы всё время почему-то пытаетесь перевести тему на NAND MLC и говорить о особенностях её работы.

Вчера в SD были SLC, сегодня MLC, а что завтра будет, когда ТС сделает своё устройство, оно будет работать у заказчика и через лет 5 тому потребуется заменить SD-карту? И тут вдруг оказывается, что устройство-то почему-то заточили под особенности работы карт с типом ячеек MLC, которых уже года два как не производят....

Имхо - устройство в своей работе должно основываться только на данных, почерпнутых из CSD, а не домыслах о внутренней кухне контроллера SD.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

FRAM по надежности (числу циклов перезаписи) != SRAM (NVSRAM), т.к. судя по документации того же Cypress оно ограничено числами порядка 10E14. Это, конечно, много, но это не бесконечность. Тем более если буфер будет расположен по фиксированному смещению в памяти, а не будет смещаться для выравнивания износа. Будьте внимательны.

 

К вопросу о надежности NAND есть неплохая статья лаборатории JPL NASA - Disturb Testing in Flash Memories.

 

Цитата из нее:

Read disturb can be reduced by minimizing excessive reads. The rule of thumb is no more than 1

million READ cycles (per block) for SLC, and a maximum of 100,000 READ cycles for MLC.

If possible, the data should be read equally from pages within the block. If it is necessary to

exceed the ”rule-of-thumb” cycle count, then the data should be moved to another block and the

original block should be erased. Each erase resets the read disturb cycle count.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, видел их. Они маленькие, всего 128КБайт. А мне, при потоке 1МБайт/с и пропусках 0.5с нужно раз в 5 больше.

Ну попробуйте PIC32MZ1024EFG064-I/MR QFN64 9x9mm 512kB, не знаю, удобно ли под них кодить, но люди выжимают там более 1МБайт/с, хотя про пропуски - неизвестно...

 

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

Если бы не ваше требование про отсутствие BGA - я бы поставил 9х9мм 384kB ATSAMS70N20A-CN и поднял бы на нём без пропусков 1.5МБайт/с на своей eMMC, не знаю большой ли для вас LQFP100 14х14мм. Просто HSMCI 4бит - даёт реальный выигрышь перед SPI по задержкам и снижает требования к памяти.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не знаю большой ли для вас LQFP100 14х14мм.

Разумеется, он огромный. Стал бы я мучится вопросом "как избавится от пропусков, от которых нельзя избавится ?", если бы можно было поставить буфер ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разумеется, он огромный. Стал бы я мучится вопросом "как избавится от пропусков, от которых нельзя избавится ?", если бы можно было поставить буфер?

 

ХЗ. Вы же пока не указали камень на котором без буфера пишете 1МБ/сек - непонятно на что ориентироваться... Может у вас AVR в sot23?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы же пока не указали камень на котором без буфера пишете 1МБ/сек

STM32L476RET

Тема не про микросхемы, с ними-то всё понятно.

Эта тема про тонкости работы с картой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

STM32L476RET

Тема не про микросхемы, с ними-то всё понятно.

Эта тема про тонкости работы с картой.

 

Ну если про тонкости, то поскольку у вас вроде есть SDMMC интерфейс - вопрос: вы по SPI 1bit с картой связываетесь или по SDMMC 4 бит?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вопрос: вы по SPI 1bit с картой связываетесь

SDMMC, написано в первом сообщении

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SDMMC, написано в первом сообщении

 

Написано SDIO, а не SDMMC. Бит сколько? Я, например, 10 лет назад работая с флешкой через SPI 1 бит по документу SDA Physical Layer Specification V2.00 - тоже считал её SDIO, ибо зверь был без опознавательных - а теперь её потомки зовутся eMMC...

 

Колитесь: ширина шины и какими командами (CMDxx) 512 байт пишете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

FRAM по надежности (числу циклов перезаписи) != SRAM (NVSRAM), т.к. судя по документации того же Cypress оно ограничено числами порядка 10E14. Это, конечно, много, но это не бесконечность. Тем более если буфер будет расположен по фиксированному смещению в памяти, а не будет смещаться для выравнивания износа. Будьте внимательны.

Произведём нехитрые вычисления:

Примем для худшего случая что скорость потока у нас - максимально возможная для этих чипов: SCLK==40МГц.

Тогда: 40000000/8/2 = 2500000 Б/сек - макс.скорость записи для случая ТС (деление на 2, так как одновременно будет идти запись и чтение).

Тогда (если для кольцевого буфера выбрали чип ёмкостью 512КБ) получаем макс.частоту перезаписи чипа: 2500000/(512*1024) = 4.77 Гц.

Тогда общее время наработки до износа: 10^14/4.77/3600/24/365 = 664775 лет

А если учесть что ТСу нужна скорость потока не 2.5МБ/сек, а 1МБ/сек, то вообще больше миллиона лет получается.

Да и то - я находил сообщения, что этот предел указанный в даташитах FRAM - теоретический, т.к. реально не удалось достигнуть отказа ячейки FRAM.

А у Everest для её MRAM вообще в даташите написано: кол-во циклов перезаписи - неограничено.

 

Что значит "если буфер будет расположен по фиксированному смещению в памяти"?

ТСу нужно буферизировать поток! В этом случае буфер конечно будет находиться по фиксированному смещению ==0 и занимать весь объём чипа.

 

Просто HSMCI 4бит - даёт реальный выигрышь перед SPI по задержкам и снижает требования к памяти.

Задержки связанные со стираниями/записью во флешь не зависят от интерфейса SPI или SDIO.

Время приостановки потока будет конечно зависеть от скорости передачи, но разница будет не принципиальна - ну получится вместо 500мсек задержки, например 450мсек - это проблему не решит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что значит "если буфер будет расположен по фиксированному смещению в памяти"?

ТСу нужно буферизировать поток! В этом случае буфер конечно будет находиться по фиксированному смещению ==0 и занимать весь объём чипа.

 

Буфер может быть организован по-разному, в.ч. его можно организовать в виде эластичного FIFO, которое будет сглаживать задержки карты и в этом случае вовсе не обязательно все время писать все данные сначала в FRAM, а потом переписывать их оттуда на SD. В FRAM данные будут писать только когда карта не успевает принимать данные и возникает задержка. Это позволит избежать лишних накладных расходов, но при этом возможно протирание буферной памяти, если реализация эластичного FIFO не будет это учитывать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если бы не ваше требование про отсутствие BGA - я бы поставил 9х9мм 384kB ATSAMS70N20A-CN и поднял бы на нём без пропусков 1.5МБайт/с на своей eMMC, не знаю большой ли для вас LQFP100 14х14мм. Просто HSMCI 4бит - даёт реальный выигрышь перед SPI по задержкам и снижает требования к памяти.

По традиции, когда заходит речь о большом объёме встроенной ОЗУ, здесь принято советовать что-то из Nuvoton, например: NUC976DK62Y

Или что угодно из: http://www.nuvoton.com/hq/products/micropr...es/?__locale=en

64МБ думаю хватит на любой буфер. И корпус LQFP128 есть. И частота ядра ==300МГц и наличие SDIO - всё позволяет легко прокачать 1МБ/сек.

 

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

Это понятно, но как я показал, даже если он непрерывно будет всё подряд писать во FRAM, всё равно не протрёт. Я для худшего случая рассчитал. А у MRAM вообще нет предела по циклам перезаписи.

И вполне возможно, что лет через 5 и SD-карточки уже будут делать на FRAM/MRAM или чём-то подобном.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задержки связанные со стираниями/записью во флешь не зависят от интерфейса SPI или SDIO.

Время приостановки потока будет конечно зависеть от скорости передачи, но разница будет не принципиальна - ну получится вместо 500мсек задержки, например 450мсек - это проблему не решит.

 

Для начала нужен ответ на вопросы:

 

1 какого типа карта у нас используется - (SD,SDHC,SDXC)

2 в случае SD - какое время на запись дано в CSD

3 превышает ли испытуемая система регламентированное стандартом допустимое время записи.

 

SD Specifications Part 1 Physical Layer Simplified Specification Version 4.10

4.6.2.2 Write

For a Standard Capacity SD Memory Card, the times after which a timeout condition for write operations occurs are (card independent) either 100 times longer than the typical program times for these operations given below or 250 ms (the lower of the two). The R2W_FACTOR field in the CSD is used to calculate the typical block program time obtained by multiplying the read access time by this factor. It applies to all write commands (e.g. SET(CLR)_WRITE_PROTECT, PROGRAM_CSD and the block write commands). High Capacity SD Memory Card and Extended Capacity SD Memory Card indicate R2W_FACTOR as a fixed value.

In case of High Capacity SD Memory Card, maximum length of busy is defined as 250ms for all write operation.

While the card should try to maintain that busy indication of write operation does not exceed 250ms in the case of SDXC card, if the card is not possible to maintain operations with 250ms busy, the card can indicate write busy up to 500ms including single and multiple block write in the following scenarios:

a)The last busy in any write operation up to 500ms including single and multiple block write.

b)When multiple block write is stopped by CMD12, the busy from the response of CMD12 is up to 500ms.

c)When multiple block write is stopped by CMD23, the busy after the last data block is up to 500ms.

d)Busy indication at block gap in multiple block write is up to 250ms except a following case. When the card executes consecutive two blocks write (2*512Bytes) and it spans across the physical block boundary, the busy after the each block can be indicated up to 500ms.

Especially regardless of the above definition, a speed class writing mode specified by CMD20 shall keep write busy up to 250ms in any case until the end of speed class write is indicated.

There are two types of busies in a multiple block write operation. (1) Write busy at block gap (without CMD12) is maximum 250ms (2) Write busy after CMD12 is maximum 250ms (500ms for SDXC)

If CMD12 is issued during a multiple block write operation's busy period, the host timeout counter is reset and the 250ms (500ms for SDXC) timeout period is measured from the response of CMD12.

 

The host should use a fixed timeout for write operations rather than using a timeout calculated from the R2W_FACTOR parameter.

It is strongly recommended for hosts to implement more than 500ms timeout value even if the card indicates the 250ms maximum busy length.

Even if the card supports Speed Class, any multiple block write operation may indicate a busy period of up to a maximum of 250ms. The sum of the busy periods over an AU is limited by Speed Class.

 

Если запись блока не укладывается в вышеприведенные времена - можно допилить до 250ms на SDHC меняя интерфейсы, команды и т.д.

Если укладывается (например SDXC), то для создания надёжной системы, единственный выход: увеличение внутреннего буфера.

Если укладывается (SDHC 250ms) но дело портит файловая система - ускорять/менять файловую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...