| Форум РадиоКот https://radiokot.ru/forum/ |
|
| FLASH, RAM и регистровая память https://radiokot.ru/forum/viewtopic.php?f=59&t=196810 |
Страница 1 из 1 |
| Автор: | maksimdag0 [ Вс фев 16, 2025 18:32:13 ] |
| Заголовок сообщения: | FLASH, RAM и регистровая память |
Добрый день! Помогите разобраться с кашей в голове. Вопрос связан с памятью микроконтроллера(например в stm32f407). В микроконтроллере имеется FLASH, RAM и регистровая память. Главный вопрос: физически, это несколько разных памяти? FLASH имеет ограниченный ресурс записи/стирания, а RAM не имеет почему? Регистровая память насколько я понял тоже не имеет ресурса? Почему считывания с RAM осуществляется быстрее чем с FLASH? Если легче обьяснить по аналогии какой-то памяти, то обьясните по аналогии FLASH, с FLASH мне все понятно. У меня нет четкого представления и правильно понимания как это памяти физически существуют, и как с ним обращаться можно а как нельзя. |
|
| Автор: | VladislavS [ Вс фев 16, 2025 18:47:17 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
Проще всего провести аналогию с обычным компьютером. Регистры в процессоре. RAM это основная память куда программы загружаются и где работают. Они без напряжения питания теряют информацию. А ещё есть FLASH на SSD, где информация хранится без напряжения питания. Плата за хранение данных без напряжения - ограниченное количество записей. В микроконтроллере абсолютно то же самое, только всё запихнули в одну микросхему. Разница только в том, что программа может из flash выполняться. |
|
| Автор: | petrenko [ Вс фев 16, 2025 18:48:41 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
Ha аглицком теxно-арго "flash" (вcпышка ? ) означает электрическим полем перезаписываемую как-бы-пocтоянную память с хранением эл.заряда в так называемом "плaвaющем" затворе пoлевого транзистора. При перезаписи происходит "туннелирование" зарядов, чтo постепенно ухудшает диэлектрик. Bпрочем дабы не троллить местную рыбу Baм бы пo-xopoшему надо бы поизучать "мат.часть". Hy a Random-Acsess-Memory cуть Память-c-Произвольным-Доступом( нo в pyccкоязычной литepaтуре принято нaзывать "Oперативнoe-Зaпоминающее-Уcтройство ) построена на триггераx (нe путать c чeтвериггерами ! Peгистры тоже - вooбще peгистр суть нecколько триггеров ( 4 или 8 или 16 или 32 ) |
|
| Автор: | COKPOWEHEU [ Вс фев 16, 2025 21:54:31 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
maksimdag0 писал(а): В микроконтроллере имеется FLASH, RAM и регистровая память. Главный вопрос: физически, это несколько разных памяти? Да. Впрочем, "регистровая" это не совсем память, хотя и используется для хранения информации. Но в большей степени это часть процессора. maksimdag0 писал(а): FLASH имеет ограниченный ресурс записи/стирания, а RAM не имеет почему? Именно потому что разные технологии. Флеш (и eeprom), как и сказал petrenko, хранят информацию в количестве электронов, проскочивших сквозь диэлектрик к слою проводника, расположенному между каналом транзистора и его затвором. Если электроном много - транзистор открыт, если мало - закрыт. Сами по себе электроны через диэлектрик не бегают (на то он и диэлектрик), но под действием высокого напряжения все же могут туннелировать. Но это со временем разрушает диэлектрик. А ОЗУ - схема на обычных транзисторах, работающих в обычных режимах. Где-нибудь в усилителе или блоке питания транзисторы ведь без ограничений переключаются. Вот и здесь так же. maksimdag0 писал(а): Почему считывания с RAM осуществляется быстрее чем с FLASH? На самом деле, хороший вопрос. Казалось бы, тоже транзистор, пусть и странной конструкции. Что мешает считать с него информацию мгновенно. Возможно, ради увеличения плотности хранения, в одном транзисторе хранят не один бит, а несколько - разными величинами заряда в затворе. Тогда лишнее время уходит на декодирование. В "компьютерных" флешках это применяется, но в контроллерных - не знаю. Возможно, сама конструкция такого транзистора увеличивает паразитную емкость (хотя в ОЗУ сравнимого объема это почему-то не мешает). petrenko писал(а): Hy a Random-Acsess-Memory построена на триггераx В тех схемах, которые я находил, разница между ОЗУ и регистрами все же есть. Регистры это именно регистры (D-триггеры со всей нужной обвязкой, то есть куча транзисторов). А ячейка ОЗУ - два встречно включенных инвертора, и запись происходит, когда сигнал записи "передавливает" выход одного из них. То есть гораздо более простая штука. maksimdag0 писал(а): У меня нет четкого представления и правильно понимания как это памяти физически существуют, и как с ним обращаться можно а как нельзя. Ну неправильно к ним обращаться это еще надо постараться. К регистрам у вас будет доступ только если вы пишете на ассемблере, и работа с ними вообще не похожа на работу с памятью. Если же пишете на Си, с ними работает компилятор. В ОЗУ будут временные переменные, которые существуют только от включения до выключения, а то и меньше. А в ПЗУ (flash) - статические данные, которые меняться не будут. Код программы, какие-то константы. Случайно перезаписать вы их не сможете: в большинстве контроллеров это специальный сложный процесс. --- А, еще есть регистры периферии, к которым доступ тоже через общее пространство памяти, так называемые Memory-Mapped Input-Output, MMIO. Но они могут быть организованы вообще как угодно. |
|
| Автор: | AlexS4 [ Пн фев 17, 2025 00:03:16 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
COKPOWEHEU писал(а): "регистровая" это не совсем память, хотя и используется для хранения информации. Но в большей степени это часть процессора. в некоторых mcs регистры это часть аддресного пространства встроенной ram, напр в avr. и еще замечание - мгновенно считать (и записать) данные, даже когда это простой бинарный бит мешают емкости и индуктивности и сопротивления проводников в схемах. в любых. нужно некое время, сейчас для ядер быстрых процессоров оно измеряется десятками и сотнями pS. простейшая ячейка cmos sram это 4транзистора триггера хранения (2 закольцованных инвертора) и минимум 1 транзистор выбора этой ячейки в 2мерной матрице (чаще 2 транзистора для ускорения переключения) тоесть 5-6 транзисторов на ячейку=бит. в случае dram и nvram сама ячейка упрощается с 4 до 1 транзистора с плавающим затвором, либо вообще до конденсатора (затвора без транзистора под ним для dram), в случае nvram усложняется коммутация ячейки для записи, в сумме 1(dram) -3(nvram) транзистора на ячейку. ну и такие ячейки могут хранить до 3 бит (8 уровней потенциала). |
|
| Автор: | COKPOWEHEU [ Пн фев 17, 2025 01:32:50 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
AlexS4 писал(а): в некоторых mcs регистры это часть аддресного пространства встроенной ram, напр в avr. Ни разу не видел, чтобы этим кто-то пользовался. и еще замечание - мгновенно считать (и записать) данные, даже когда это простой бинарный бит мешают емкости и индуктивности и сопротивления проводников в схемах. в любых. нужно некое время, сейчас для ядер быстрых процессоров оно измеряется десятками и сотнями pS. Но конвейеризация эту проблему частично устраняет. AlexS4 писал(а): простейшая ячейка Самое интересное все-таки с флеш. Почему из SRAM чтение "мгновенное", а из флеша, при том же объеме - медленное. |
|
| Автор: | jcxz [ Пн фев 17, 2025 11:32:45 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
Однако - сколько здесь готовых обучать голосовую модель ИИ на больших массивах текстовых данных... Ни разу не видел, чтобы этим кто-то пользовался. Запустите компилятор для STM8 - увидите. В ОЗУ будут временные переменные, которые существуют только от включения до выключения, а то и меньше. FRAM/MRAM ломает всю вашу логику. А в ПЗУ (flash) - статические данные, которые меняться не будут. Код программы, какие-то константы. Случайно перезаписать вы их не сможете: в большинстве контроллеров это специальный сложный процесс. |
|
| Автор: | AlexS4 [ Пн фев 17, 2025 12:24:39 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
COKPOWEHEU писал(а): Но конвейеризация эту проблему частично устраняет. конвейеризация как и любое другое распараллеливание процессов увы не могут сделать реакцию алгоритма мгновенной, никогда , только (иногда) ускорить, до определенных пределов.теоретический предел это автомат выражденый до 1 огромной логической функции и соответственно времени срабатывания этого огромного логического элемента который, как мы знаем, всегда можно представить 2ступенчатой схемой ORxN-AND (или ANDxN-OR), и кстати увеличение схемы неизбежно увеличивает задержки... так что ооочень "частично" Добавлено after 14 minutes 37 seconds: COKPOWEHEU писал(а): Самое интересное все-таки с флеш. Почему из SRAM чтение "мгновенное", а из флеша, при том же объеме - медленное. если сравнивать одинаковые архитектуры доступа, и одинаковый техпроцесс, и одинаковую емкость, и хранение только бинарных данных во флэше, то SRAM по скорости чтения будет даже чуть проигрывать флэшу из-за ~ в 2раза менее плотной упаковки (5-6 транзисторов против 3) (тоесть увеличение задержек ~ в квадратный корень из ~2 раз на 2мерной структуре, при прочих равных) просто архитектуры доступа у встроенной в msc sram и у флэш диска с sata интерфейсом оочень разные... |
|
| Автор: | COKPOWEHEU [ Пн фев 17, 2025 14:14:45 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
jcxz писал(а): Цитата: Ни разу не видел, чтобы этим (адресацией регистров AVR через память) кто-то пользовался. Запустите компилятор для STM8 - увидите. jcxz писал(а): FRAM/MRAM ломает всю вашу логику. Каким образом? Ну, не говоря о том, что многие вещи я сознательно упрощал для ТСа. AlexS4 писал(а): конвейеризация как и любое другое распараллеливание процессов увы не могут сделать реакцию алгоритма мгновенной Она может сделать так, чтобы к моменту выполнения команды данные уже были готовы. А что весь цикл выполнения команды может занимать больше одного такта, и вообще может быть сдвинут, это другой вопрос. AlexS4 писал(а): если сравнивать одинаковые архитектуры доступа, и одинаковый техпроцесс, и одинаковую емкость, и хранение только бинарных данных во флэше, то SRAM по скорости чтения будет даже чуть проигрывать флэшу из-за ~ в 2раза менее плотной упаковки Про sata мы вообще не говорим, какой sata внутри контроллера. Нет, я говорю про встроенную флеш и встроенную ОЗУ. В stm32 для работы из флеш на максимальной скорости приходится вводить несколько wait-state-ов. А из RAM - нет. При том, что объемы памяти почти одинаковые. |
|
| Автор: | jcxz [ Пн фев 17, 2025 16:32:50 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
Спасибо, но настраивать компилятор под новую архитектуру ради подобной проверки что-то не хочется. Лучше так, в двух словах скажите что именно я там должен увидеть. Цитата: Адреса регистров CPU в STM8: Кроме того - IAR для STM8 создаёт ещё несколько виртуальных регистров. В качестве которых выступают младшие адреса ОЗУ.Регистры процессора (CPU) отображены в нулевую страницу памяти (адреса 0x00–0x3F), что позволяет к ним быстро обращаться. Регистр Адрес Описание CCR (Condition Code Register) 0x7B00 Регистр флагов A (Accumulator) 0x7B01 Аккумулятор XH (High byte of X register) 0x7B02 Старший байт регистра X XL (Low byte of X register) 0x7B03 Младший байт регистра X YH (High byte of Y register) 0x7B04 Старший байт регистра Y YL (Low byte of Y register) 0x7B05 Младший байт регистра Y SPH (High byte of Stack Pointer) 0x7B06 Старший байт указателя стека SPL (Low byte of Stack Pointer) 0x7B07 Младший байт указателя стека Эти регистры можно читать и записывать, но чаще всего используются внутренне ядром. Быстрый доступ через короткие адреса: Некоторые из этих регистров можно также адресовать в нулевой странице (0x00–0x3F) для более эффективного доступа. Пример: CCR доступен по адресу 0x00 A доступен по адресу 0x01 XH и XL доступны по 0x02 и 0x03 jcxz писал(а): FRAM/MRAM ломает всю вашу логику. Каким образом? И сиё вельми удобно. Добавлено after 6 minutes 57 seconds: В stm32 для работы из флеш на максимальной скорости приходится вводить несколько wait-state-ов. А из RAM - нет. Это на STM32. А на ней свет клином не сошёлся. Например XMC4xxx просто имеют шину к FLASH шириной = 256 бит. Что позволяет блоку предвыборки на линейных участках кода успевать читать код почти без задержек на макс.скорости.Хотя wait states там тоже есть. Скорее - для ветвлений и чтения const-данных. PS: Tiva от TI насколько помню - тоже имеют 256-битную шину к FLASH. |
|
| Автор: | Adrift [ Пн фев 17, 2025 16:41:59 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
Это на STM32. А на ней свет клином не сошёлся. Например XMC4xxx просто имеют шину к FLASH шириной = 256 бит. Что позволяет блоку предвыборки на линейных участках кода успевать читать код почти без задержек на макс.скорости. STM32 c 256-ти битной шиной к флешу тоже есть, но у них частота 550 MHz, а не 144, как у XMC4xxx, потому и 3WS может быть. |
|
| Автор: | COKPOWEHEU [ Пн фев 17, 2025 19:52:34 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
jcxz писал(а): Тем, что на МК, имеющих FRAM вместо FLASH, программист сам может назначать - какая часть FRAM у него в программе == volatile memory (ОЗУ), а какая == non-volatile memory (ПЗУ). В тех исчезающе редких случаях, когда контроллер вообще оборудован FRAM - возможно. Но таких мало. Да и вообще, мы в теме по stm32.jcxz писал(а): апример XMC4xxx просто имеют шину к FLASH шириной = 256 бит. Что позволяет блоку предвыборки В stm32 тоже ширина шины команд намного больше 32 бит и тоже есть блок предвыборки. Но это все костыли, чтобы хоть как-то компенсировать медленный доступ к флеш. А вопрос-то был не про костыли, а про физику. |
|
| Автор: | maksimdag0 [ Ср фев 19, 2025 02:18:24 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
Добрый вечер! Замотался последние дни, не было времени почитать, ответить. Сейчас, хоть в 1:50 почитал все, наверное нужно будет на свежую голову еще прочитать все) Кажется я не правильно понимаю что такое конретно"регистровая память", ведь под этим выражением я имел в виду регистры периферии. Я так понял "регистрвоая память" это регистры, которые находятся в процессоре "R0, R1, R2 и тд"? Если да, то регистры периферии прцоессора(например FPU, NVIC) они относятся "к регистровой памяти"? регистры процессора и регистры периферии по технологии одинковые? Возможно вопрос глупый, но сейчас особо голова не варит, и пока каша в голове не ушла, не судите строго. А, еще есть регистры периферии, к которым доступ тоже через общее пространство памяти К чему бы не обращались, к RAM, FLASH и или регистрам, мы всегда обращаемся через общее пространство памяти, разве нет? |
|
| Автор: | VladislavS [ Ср фев 19, 2025 07:37:40 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
Признавайтесь, трудно жить с баном в гугле? |
|
| Автор: | 240265 [ Ср фев 19, 2025 07:48:25 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
Признавайтесь, трудно жить с баном в гугле? |
|
| Автор: | HardWareMan [ Ср фев 19, 2025 09:14:23 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
ажением я имел в виду регистры периферии. Я так понял "регистрвоая память" это регистры, которые находятся в процессоре "R0, R1, R2 и тд"? Если да, то регистры периферии прцоессора(например FPU, NVIC) они относятся "к регистровой памяти"? регистры процессора и регистры периферии по технологии одинковые? Возможно вопрос глупый, но сейчас особо голова не варит, и пока каша в голове не ушла, не судите строго. Если вы говорите "память" то подразумеваете именно временное хранение некого числа. Т.е., функционал запомнить без изменений и вернуть когда надо. И это действительно обычные GPR (General-Purpose Registers, т.е. регистры общего назначения). Но если вы говорите за то, что значение в регистре должно хранить настройку аппаратуры, то это уже не GPR а SFR (Sepcial Function Register, т.е. регистр особой функции) и предназначен он не временно хранить какое-то число а хранить настройку или статус оборудования. А вот находиться SFR может как внутри ядра процессора (например, уже упомянутый NVIC для ARM) так и снаружи него на стороне оборудования (например, UART или SPI). |
|
| Автор: | COKPOWEHEU [ Ср фев 19, 2025 14:08:10 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
maksimdag0 писал(а): Кажется я не правильно понимаю что такое конретно"регистровая память", ведь под этим выражением я имел в виду регистры периферии. Я так понял "регистрвоая память" это регистры, которые находятся в процессоре "R0, R1, R2 и тд"? Есть такая электронная схема - регистр. Соответственно под регистровой памятью логично рассматривать именно память, собранную из регистров. Для сравнение, SRAM собрана не на регистрах, а на встречно включенных инверторах. DRAM вообще на одном конденсаторе. Flash на одном транзисторе необычной структуры. maksimdag0 писал(а): я имел в виду регистры периферии Регистры периферии могут быть устроены как угодно. Скажем, GPIO->IDR наверняка будет не регистром, а массивом повторителей с ножек порта. GPIO->ODR - регистром. GPIO->BSRR - специальной схемой, которая обращается к тому же GPIO->ODR. И это только примеры регистров GPIO - самой простой периферии. maksimdag0 писал(а): то регистры периферии прцоессора(например FPU, NVIC) они относятся "к регистровой памяти"? Так периферии или процессора? Еще раз: регистры процессора (r0, r1, ft0 (не знаю используются ли в arm специальные FPU-регистры) и т.п.) это регистры, они устроены по одному принципу. А периферия (GPIO, Timer, NVIC) - каждая по-своему, в зависимости от задачи.maksimdag0 писал(а): К чему бы не обращались, к RAM, FLASH и или регистрам, мы всегда обращаемся через общее пространство памяти, разве нет? Строго говоря, не всегда. Скажем, к регистрам в ARM обратиться через память, кажется, нельзя. В AVR к периферии можно обратиться как через память, так и специальными инструкциями in, out, sbi, ... В risc-v есть специальные ядерные CSR-регистры, к которым обращение возможно только через специальные инструкции. |
|
| Автор: | AlexS4 [ Ср фев 19, 2025 22:42:18 ] |
| Заголовок сообщения: | Re: FLASH, RAM и регистровая память |
COKPOWEHEU писал(а): Есть такая электронная схема - регистр. Соответственно под регистровой памятью логично рассматривать именно память, собранную из регистров. Для сравнение, SRAM собрана не на регистрах, а на встречно включенных инверторах. увы, регистровыми (или буфферными) называются микросхемы dram, внутри которых на шинах адреснов и/или данных стоят регистры-буферы, позволяющие изменить диаграмы доступа так, что схема становится менее чувствительной к емкости шины, за счет удлииннения некоторых фаз обмена, и соответственно позволяет навешать побольше чипов на 1 шину. например в серверных мамках обычно до 24 модулей c буфферными чипами а в бытовых - только 2-4 безбуферных модуля. а применение кольца слабеньких инверторов для хранения бита - это оптимизация: всего 4+1 или 4+2 транзистора, если взять набор(регистр) из rs триггеров то транзисторов на бит ячейки станет 8+5 - это в 2+! раза больше. ...а если взять d триггер то вообще |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|



, только (иногда) ускорить, до определенных пределов.