Виртуальная память за пределами таблиц страниц - PullRequest
0 голосов
/ 24 марта 2011

Я работаю над исследовательским проектом по разработке ОС для многоядерного (1000+) чипа.мы рассматриваем реализацию системы типов виртуальной памяти для разрешений памяти (чтение / запись / выполнение), которые позволили бы безопасно распределять память между ядрами.

В основном нам нужна система, которая позволила бы нам пометить 'page 'как читаемое некоторым подмножеством ядер, доступное для записи другим ... и т. д.мы не собираемся заниматься трансляцией адресов (по крайней мере, на данный момент), но нам нужен способ эффективно устанавливать и запрашивать разрешения.это будет программная структура данных с простым кэшем в стиле TLB.

Наша интуиция заключается в том, что простая репликация таблиц страниц для каждого ядра будет слишком дорогой (с точки зрения использования памяти).

какие структуры данных будут эффективны для решения такой проблемы?

спасибо

1 Ответ

0 голосов
/ 12 августа 2011

Вы смотрели, как обычные многоядерные (2-12-ядерные) процессоры решают эту проблему?

Знаете ли вы, где / когда / почему / как решение, которое используется в этих распространенных многоядерных процессорах, не будет масштабироваться до 1000+ ядер?

Другими словами - можете ли вы дать количественную оценку того, что не так с существующим решением, которое работает и работает, с общими процессорами, число ядер которых <= 12? </p>

Если вы это знаете - тогда ответ ближе, чем вы думаете, потому что для этого нужно просто понять, как AMD / Intel решили проблему в меньших масштабах - и что нужно для того, чтобы их решение работало в более широком масштабе (возможно, больше памяти для таблиц, настроек алгоритма и т. д.)

Посмотрите на структуры данных AMD / Intel - затем создайте программный симулятор для более 1000 ядер с этими структурами данных и посмотрите, где / когда / почему и как провалилась ваша симуляция - если она не удалась ...

В идеале создайте свой симулятор с выбранным пользователем количеством ядер, а затем ТЕСТ, ТЕСТ, ТЕСТ с различным количеством ядер - работайте на своем пути вверх, отмечая узкие места на этом пути.

Ваш симулятор должен работать ТОЧНО так же, как и AMD (если вы используете структуры данных AMD) или Intel (если вы используете структуры данных Intel) - с тем же количеством ядер, что и у одного из их чипов ... потому что это должно доказать, что ОНИ (AMD / Intel) делают то, что делают правильно (потому что это так), и потому, что это поможет доказать, что ваша программа симуляции выполняет симуляцию правильно - на определенном количестве ядер.

Желаю удачи!

...