Новый тип памяти изменит архитектуру компьютеров

Q_star

Новичок
Заблокирован
Ну и что мешает сейчас сделать ОЗУ еще одним уровнем кэша, чья работа непрозрачна для пользователя или программиста, а место жестких дисков и пр. накопителей отображать в плоском адресном пространстве? ;)
Собственно, плоская модель памяти никаких преимуществ или упрощений на данный момент не несет. Даже наоборот, при разной скорости доступа к различным областям такой памяти - только проблемы. А гомогенной высокоскоростной энергонезависимой памяти, которая бы реально позволила создать аналог современного ПК с такой архитектурой, пока что нет и в ближайшем будущем не предвидится.
Сами же и ответилм на вопрос - "корявость" существующих блоков памяти...
В некоторых микроконтроллерах, к слову ОЗУ вместо Кэша (или наоборот))) ), что в этой теме обсуждалось)))
 

SLoNiCK

Новичок
1. Какая "корявость" в работе винта? Я вот знаю только проседание скорости на случайном доступе, но это у всех типов - у SDRAM, у флешек (там вообще со случайной записью все плохо без костылей в виде умного контроллера и кэша).
2. Может, под "корявостью" имелась в виду "неоднородность"? Так моя идея как раз ее предлагает устранить, т.к. остается 1 уровень памяти - HDD, которые весьма однородны по производительности. :D Ну, никого же, кроме узких специалистов, не интересует, как там кэш ЦП работает. Вот и тут так будет: есть плоское адресное пространство на винте, а уж как данные попадают в ИУ процессора - внутренняя кухня железа. Вам же нравится плоская однородная память, нитакле? :D
3. Вам не кажется, что эта "корявость" определена некими объективными факторами? Ну, банально, сделать регистровый файл ЦП размером в килобайт гораздо проще, чем в терабайт. А тот же терабайт проще размазать по большой поверхности блинов винта с медленным последовательным доступом, чем запихать в квадратные миллиметры микросхемы. И что поэтому гомогенную, да еще и энергонезависимую память мы увидим разве что в микроконтроллерах, где ни абсолютная скорость вычислений, ни объем памяти, ни архитектурная красота зачастую вообще не являются определяющими факторами?
 

Mike22

Местный
SLoNiCK, речь о принципиально иной архитектуре компьютеров идёт. Аппаратной и программной.

Отпадёт необходимость загружать и выгружать данные для работы с ними, все данные всегда доступны.
ОЗУ больше не будет, HDD больше не будет.
Будет просто память, которую можно неограниченно наращивать.
Данные любых объёмов можно обрабатывать непосредственно в месте их хранения.
 

Аццкий Минус

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

Q_star

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

Однако, ОЗУ с возможностьями ФЛЭШ и практически неограниченным числом циклов перезаписи сразу дало бы (опять бы) вполне очевидное преимущество - резкое снижение необходимости подгружать что-либо с винта.
Наиболее часто используемые проги "сидели" бы в памяти уже выключенного компа.
Хотя нечто подобное дает и "спящий режим" ;)
 

SLoNiCK

Новичок
Отпадёт необходимость загружать и выгружать данные для работы с ними, все данные всегда доступны.
ОЗУ больше не будет, HDD больше не будет.
Будет просто память, которую можно неограниченно наращивать.
Данные любых объёмов можно обрабатывать непосредственно в месте их хранения.

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

Далее, мало кто работает непосредственно с данными. Ну, так вот чтоб по живому. Редактируете ли вы текстовый документ, фотографию, монтируете фильм, играете в игру - признак хорошего тона сохранять измененные данные поверх оригинальных только по прямому указанию пользователя. Это удобно. Т.е. даже если будет плоская, как блин, и однородная память, все равно придется выделять отдельные области для динамически изменяемых данных, а данные статичные, неизменяемые, наоборот защищать от случайного изменения процессами. Ничего не напоминает?

Кроме того, действительно однородной такую память сделать не выйдет. Даже на современных 4+ процессорных системах программы с интенсивной работой с памятью стараются писать NUMA-aware, т.к. достаточно заметна разница в скорости доступа ядер между "своей" памятью и "чужой". Что уж говорить о системе вообще, где и внутренние накопители, и внешние (кстати, сетевые ресурсы тоже в память мапить будем? :D ) находятся в унифицированном адресном пространстве, а сотни агентов (ядра процессоров, GPU, специализированных контроллеров и DSP) работают с одним общим массивом данных и должны соблюдать их целостность?

Ну и кроме того, я же указал, как можно это в первом приближении реализовать уже сейчас. Делаем ОЗУ еще одним уровнем кэша, а все, что подключено, скажем для начала, по SATA, силами чипсета сшиваем в единое адресное пространство. Можно это даже каким-нить гипервизором виртуальных машин вроде Xen на современном железе реализовать. И данные хранятся постоянно, и внешние устройства подключать можно. Лепота!

Однако, ОЗУ с возможностьями ФЛЭШ и практически неограниченным числом циклов перезаписи сразу дало бы (опять бы) вполне очевидное преимущество - резкое снижение необходимости подгружать что-либо с винта.
Наиболее часто используемые проги "сидели" бы в памяти уже выключенного компа.
Хотя нечто подобное дает и "спящий режим" ;)

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

Mike22

Местный
SLoNiCK, не нужно пытаться старые подходы и алгоритмы привязывать к новой архитектуре и потом из этого делать вывод что радости никакой не получается.

Регистры процессора совершенно никак не мешают плоской модели памяти.

...
я же указал, как можно это в первом приближении реализовать уже сейчас. Делаем ОЗУ еще одним уровнем кэша, а все, что подключено, скажем для начала, по SATA, силами чипсета сшиваем в единое адресное пространство
...
страдания владельцев нетбуков с флэшем вместо винта - делали какие-то хитрые сборки винды, которая все изменения данных прописывала на RAM-drive в ОЗУ, а не на диск, а сброс обновлений на флэш происходил одним блоком при выключении бука.
Это опять модели иерархической памяти.
Всё это давно есть и применяется.
Есть даже специальные файловые системы реализующие такой подход прозрачно для нынешнего софта и пользователя.
Но это всё не то.
 

SLoNiCK

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

1. А какие такие новые алгоритмы и подходы и на каких типах вычислений покажут существенное увеличение производительности или удобство программирования?
2. За чей счет банкет? В смысле, кто старые алгоритмы будет переделывать на новые?
3. И все таки, как реализовать гомогенную систему с единой памятью?

Регистры процессора совершенно никак не мешают плоской модели памяти.
Эт как так, если они - первая ступень иерархии памяти? Назад, к 6502, у которого регистровая страница и стек находились в начале памяти? Дык и у него все же были аппаратные регистры, да и память так использовать позволяла его даже по тем временам низкая тактовая частота.
 

Mike22

Местный
SLoNiCK, мне лень тут спорить. Надо как-нибудь за рюмкой чая этот разговор завести :)

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

SLoNiCK

Новичок
аппаратно конструкция упростится сильно (нужно единстенную унифицированную шину сделать, и всё). Никаких контроллеров памяти, южных/северных мостов и т.п.
Хехе, все как раз уходят от единых шин к многоканальным соединениям "точка-точка". Причем каждому агенту системы выделяется ровно тот канал, который ему нужен. Наверно это не спроста, да?

В софте (системном) упрощение очень значительное - все/любые обращения и обмен с памятью можно будет организовать в виде работы с файловой системой.
Ведь главный источник ошибок в ПО - это утечки памяти, ошибки выделения областей, освобождение.
Всё это уйдёт в прошлое.
Хохо, был у Intel такой забавный процессор iAPX 432. Там была поддержка структур данных ООП, garbage collection, еще кой-какие вкусности. Файловую систему для памяти сделать не догадались, хотя что мешает организовать ее в обычной ОЗУ? Итог известен: при более сложном дизайне (3 отдельные микросхемы) и бОльшем транзисторном бюджете он был раза в 4 медленнее 286-го на той же тактовой частоте.
 

sami

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

Mike22

Местный
Нет, не уйдет. Сама по себе форма обращения с памятью роли не играет. Пока останется выделение и освобождение, будут и утечки. Хорошо от утечек помогает управляемый код, но и он не гарантирует их полное отсутствие.
В файловых системах это ведь давно решено. И выделение, и освобождение, и совместный доступ, и блокировки и т.п.
Утечки в файловых системах - нонсенс.
 

sami

Местный
В файловых системах это ведь давно решено. И выделение, и освобождение, и совместный доступ, и блокировки и т.п.
Утечки в файловых системах - нонсенс.
Лишь потому что число обращений к файлам мало по сравнению с выделением/освобождением памяти. Если выделять память в файловой системе с такой же частотой, как new/alloc, то утечки в файловых системах будут явлением удручающе регулярным.
А если процессы перестанут закрываться по причине отсутствия необходимости, то ничто не сможет разобраться, где нужный "файл(кусок памяти)", а где нет.
 

Mike22

Местный
А еще туда же надо запихать linux...
Не, это лишнее :)

Кодовая база одной из самых совершенных ФС на сегодня (BTRFS) составляет около 40 тыс. строк на С.
Это не много. Это затолкать в микрокод можно.
И стандартные прерывания выделить/определить для работы с такой ФС/памятью.
Тогда в прикладном софте можно больше не думать о работе с памятью.
 

sami

Местный
Если эту ФС затолкать в микрокод ЦП, то всё будет хорошо :)
Без разницы куда его заталкивать. Несоответствующее число освобождений (по недосмотру программиста) повторенное многократно за время работы программы (а раз выгружать ее не надо, то оно может быть большим) и утечка обеспечена.
Никакой микрокод, подсчет ссылок, автоматическая сборка мусора и т.п. не снимут проблему утечки полностью, пока память вообще необходимо выделять и даже просто адресовать.

Что уйдет с новым типом памяти (или практически уйдет) - это RDB и ORM.
 

Q_star

Новичок
Заблокирован
не нужно пытаться старые подходы и алгоритмы привязывать к новой архитектуре и потом из этого делать вывод что радости никакой не получается.
Вот это как ни странно верно ;)
Новую архитектуру в студию))
А то пока речь идет только о "более быстрой, более ёмкой","более плоской" и т.п. памяти))

Однако смысл "плоской" модели также прост как валенок - уже загруженные и готовые к выполнению программы сидят себе в "ОЗУ" и ждут пока к ним обратятся.
Не надо ставить, не надо грузить.
А мешает это реализовать "природная неплоскость" современной архитектуры))
Даже если мы память катком раскатаем, у нас останется еще процер, порты, разные там интерфейсы))
А вот в мозгах у человека хрен поймешь, где у него память, где думалка...(одни и те же участки коры выполняют многие функции и могут автоматически адаптироваться под поставленные перед челом задачи), датчики подключены напрямую ))) )
Вот это - типа "плоская архитектура" фигурально выражаясь ;)
Вот.
Извиняюсь за некоторую сумбурность изложения
Ну а дальше, ход мысли думаю понятен...
 

Mike22

Местный
Новый тип памяти удивляет даже его изобретателей

... инженеры IBM, создав два с половиной года назад рабочий, по их словам, прототип нового типа энергонезависимой памяти Racetrack memory столкнулись в итоге с удивительными физическими явлениями. Как оказалось на практике, процесс воздействия на магнитные спины электронов в носителе информации имеет «массу» и, следовательно, инерционен.

Вкратце напомним, носитель памяти Racetrack memory — это тончайшая нанопроволочка из пермаллоя — материала, весьма чувствительного к магнитному полю. Подавая на проволочку серию импульсов, разработчики научились передвигать по ней магнитные домены. Последние формировались в момент воздействия магнитным полем записывающей головки на магнитные спины электронов в проволоке. Изменение направления магнитного поля в головке меняло ориентацию спинов на противоположную. Как результат, на границе доменов образовывались так называемые доменные стены — участки с изменяемой или неизменной полярностью, уже представляющие собой основу для считывания «нуля» или «единицы», как это происходит в тех же жёстких дисках или на магнитной ленте. Только память Racetrack memory свободна от механики. В ней нет физически движущихся частей. Домены перемещаются мимо участков считывания и записи в оба направления с помощью импульсов поляризации — верх износостойкости.

Сюрприз оказался в том, что «движение» доменов не начиналось сразу после подачи импульса и также не прекращалось после снятия управляющего напряжения. Домены «тормозили» со стартом и аналогично не спешили останавливаться на финише. Всё это представляло определённую проблему для точного позиционирования доменных зон над головками чтения и записи. К счастью, «разгон» и «торможение» компенсировали друг друга, что не усложняло точность позиционирования. Необходимо было только определить на практике ту величину импульсов воздействия, которая бы перемещала домен на чётко заданное расстояние.

Как заявляют исследователи, теперь поведение доменов точно изучено, что приближает нас к эре «вечной» энергонезависимой памяти с впечатляющим быстродействием порядка единиц наносекунд. Это как выпустить жёсткий диск со скоростью вращения пластин 100 тысяч об./мин. или даже больше. Правда, до практического воплощения нового типа носителей ещё очень долго. Все надежды IBM по разработке Racetrack memory, кстати, давно связаны с Тайванем. Американская наука давно не получает должного финансирования. Что уж говорить за нашу...
http://www.fcenter.ru/online.shtml?hardnews/2010/12/24#material_id=30116​

Интересно.
 
Сверху