На старых контроллерах, судя по литературе, режим "память-память" был. На современных говорят нет, правда я не проверял
Dmitry_Milk И на сколько времени надо будет запретить регенерацию памяти? И как потом проверить, что ОЗУ обнулилось? Заряд может храниться долгое время, например при низких температурах он может достигать и нескольких минут. На этом основана cold boot attack. Я конечно об этом знаю только в теории, на практике не видел. Именно для отражения этой атаки и может понадобиться обнуление ОЗУ, другого практического применения этому я не вижу.
pashe4ka13, ну, не получилось В любом случае, топикстартер хочет странного, чтоб содержимое ОЗУ обнулилось, но кэш остался валидным. Все, что работает с ОЗУ через общую шину, для этой странности не годится из-за механизма когерентности кэша. Нарушение регенерации - единственное, что пришло в голову в обход шины.
petrstarikov А что еще за современный контроллер DMA? Вы где такой видили? Помоему таких в природе нету! Dmitry_Milk Да я сам сначало подумал об этом варианте)
мужики не спорте - я знаю, я вам скажу. нужно вынуть планку , найтина ней нужную микросхему, припаять ко всем ножкам этой микрухи проволочку - все микросхема занулена, а для надежности еще можно заземлить. Плюс данного метода - надежность и достоверность.
Вы неправильно понимате механизм работы кэша. Содержимое кэша и ОЗУ могут отличаться. В кэше может быть совсе не то, что в памяти по тем же адресам.
petrstarikov, браво! Говорю как старый толстый тролль (хоть и уже года три как неактивный) — если чуть поднажать, далеко пойдёте =) Чисто для поддержания дискуссии рискуя тоже нарваться: у меня есть диплом и мидалька за всерос. Диплом сейчас хранится в универе, т.к. был подан туда вместе с документами, но медальку вполне могу отсканить. Так вот, если для Вас это авторитетно, то заявляю: такого потока сознания не читал уже давным-давно. В частности, неясно, на кой ляд вообще понадобилось сбрасывать только оперативную память? Всё равно ЦП такого издевательства не переживёт, и лучше тогда сбрасывать сразу его.
Конечно могут. Если страница writeback, проц при записи положит только в кэш, но не в ОЗУ (до поры до времени, скажем, пока линейку кэша не заставят работать с другими адресами). Но при этом загрязненная линейка кэша будет держать свои адреса "начеку", и как только кто-то на шине обратится к этим адресам - эта линейка кэша тут же транзакцию на шине заблокирует и синхронизирует ОЗУ со своим содержимым. Так что все отличия всегда держатся под контролем, чтоб никакого постороннего обмена неправильными данными не произошло. DMA будет таким посторонним обменом, и его обращения также будут попадать под этот контроль.
Конечно понятно, что все, что тут разводит топикстартер - это чистое теоретизирование, сотрясание воздуха с неведомыми нам причинами (мож посто повеселиться чел хочет, а может и вправду ему интересно пофантазировать в компании). Но тем не менее какие-нибудь полезность наверняка можно будет выжать из такой задачки или родственных ей. Скажем, несколько лет назад меня интересовал вопрос, можно ли воспользоваться интеловским процом как автономным (почти, без ПЗУ) мощным микроконтроллером, используя в качестве ОЗУ его кэш (а кэши у них сейчас по нескольку мегабайт, для микроконтроллерных целей за глаза). Задача в чем-то родственная тому, что поставлена в этом топике. Теоретически вроде бы возможно было на тех процах, у которых контроллер памяти не был еще встроен, если специальным образом сэмулировать шинные сигналы. Правда потом я узнал о существовании настоящих достаточно мощных микроконтроллеров и вопрос отпал.
Обнуление ОЗУ автоматически обнулит кэш команд . ОЗУ и КЭШ синхронизируются. Как только почистите ОЗУ контроллер почистит кэш.
petrstarikov Давайте все-таки ближе к земле. В ОС типа Винды и Линукс ваш фокус точно не пройдет. Никак в кеш не поместятся команды для восстановления среды... Едиственный похожий вариант: гибернация. Поэтому или от абстракций переходите к делу и опишите более конкретно ваш вопрос, или перестаньте жонглировать ЗНАНИЯМИ. Да есть кеш и ПЗУ БИОС, но реалии таковы, что ваша теория пока очень далека от РЕАЛИЗАЦИИ. 13-е прерывание не висит в воздухе как джинн: чтобы им воспользоваться, нужно заполнить "ЕЙНУЮ" позицию в таблице прерываний. Кто это сделает на чистом ОЗУ?
Извините, в прошлый раз я был немного нетрезв, поэтому так хамски писал. Поймите, это бывает очень редко, не надо меня больше блокировать. Возвращаюсь к существу поднятой темы. Здесь писали про обязательную синхронизацию ОЗУ и кэша, которая осуществляется контроллером ОЗУ в случае очистки памяти. Нельзя ли привести последовательность сигналов, которыми обменивается память, контроллер и кэш в подобном случае?
petrstarikov 1. Если все говорят что это бред, а вы продолжаете упорствовать - почему бы не поискать решение в другом месте? 2. Как уже сказали, будет синхронизация. И кэш очистится. Здесь в основном форум программистов. Сигналы - это к электронщикам. Хз какие там сигналы )) 3. Сформулируйте задачу, которую надо решать таким образом. Предположим, способ есть. Хоп - и ОЗУ все в нулях, и при этом в кэше процессора что-то осталось. Для чего это нужно? или я слишком ограничен в фантазии, но даже не представляю задачу.
О-О-О, ничего себе у Вас запросы пошли! А Вам случайно временную диаграмму токов и напряжений не построить? Или вы до неё ещё не добрались? Может амплитудно частотную характеристику рассчитать для каждого транзистора, входящего в состав контроллера? Один ... может задать столько вопросов, что и 100 мудрецов не ответят