20

Это, возможно, глупый вопрос, и может быть результатом недоразумения. Я сейчас изучаю процессоры и память в частности. Я только что читал о том, насколько быстрее SRAM, чем DRAM, но дороже. SRAM очень дорогой: я немного покупал и нашел SRAM-карту с батарейным питанием на 16 МБ примерно за 400 долларов.

Недавно друг упомянул, что он запускает Puppy Linux в оперативной памяти, и что это быстро. Я заметил, однако, что крошечное ядро Linux может быть даже меньше ... всего 8 МБ! Это заставило меня задуматься: можем ли мы запустить Linux в SRAM? Этот вопрос даже правильно сформулирован?

Погуглить этот вопрос оказалось неэффективным, но он поднял еще больше вопросов. Можно ли запустить Linux в L3 Cache? Intel Core i7 может иметь кэш L3, достаточно большой, чтобы вместить 8 МБ ... но я делаю категорическую ошибку? В чем разница между этим и встроенным Linux?

Вот в чем вопрос: можем ли мы запустить Linux в SRAM или L3 Cache? Есть ли что-нибудь быстрее? Как быстро мы можем linux !?

г.

6 ответов6

20

Linux или любая другая ОС не знает, как работает RAM. До тех пор, пока контроллер памяти настроен правильно (например, частота обновления установлена для не-SRAM), ОС не заботится о том, работает ли она на простой динамической памяти (обычное ОЗУ), оперативном ОЗУ в режиме быстрой страницы (FP RAM, от C64-ish). раз), расширенный ОЗУ в режиме данных (EDO), синхронное ОЗУ (SDRAM), любой из SDRAMS с двойной скоростью передачи данных (DDR 1/2/3), что угодно.

Все они поддерживают чтение и запись из разных мест. Все будет работать.

Теперь кеш немного другой. Вам не нужно писать в него, чтобы содержимое изменилось. Это будет мешать. Тем не менее, это несколько полезно. Я знаю, что coreboot использует кеш как своего рода память во время загрузки, прежде чем контроллер памяти будет правильно настроен. (Для получения подробной информации, посмотрите видео с выступлений по coreboot во время FOSDEM 2011).

Так что в теории да, вы можете использовать это.

НО: Для практических задач система с «обычной» «средней» памятью объемом 1 ГБ будет работать намного лучше, чем при сверхбыстрой памяти всего в несколько МБ. Это означает, что у вас есть три варианта:

  1. Стройте вещи обычным «дешевым» способом. Если вам нужна большая скорость, добавьте несколько десятков дополнительных компьютеров (все с «медленной» памятью)
  2. Или создайте один компьютер, цена которого будет в десятки раз выше, а производительность будет в десятки раз меньше.

За исключением очень редких случаев, последнее не имеет смысла.

8

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

Единственный раз, когда кэш-память затем копируется обратно в обычную оперативную память, - это когда ПК переходит в режим ожидания S3. Это необходимо, потому что кэши отключены в режиме S3.

3

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

Будет ли это полезно, другой вопрос - это заблокирует ядро в ОЗУ, но в то же время уменьшит эффективный размер кэша. Также могут быть побочные эффекты (такие как отключение кэширования для остальной части системы), которые замедляют процесс.

1

Когда-то во времена 486-х годов были машины, где вся оперативная память была SRAM. Это вернулось, когда 8 МБ было много, но, похоже, соответствует вашим ограничениям. Я уверен, что 8 МБ SRAM сейчас намного дешевле, чем тогда.

Таким образом, вы можете запустить Linux в SRAM, если машина была сделана таким образом. Это не теоретическое; это было сделано.

Но не в кеше. Кэш подключен по-разному, и, что более важно, рассматривается по-разному. Вы не можете обратиться к этому же. Чанки отображаются по-разному, а не как непрерывный чанк. И содержимое не обязательно то, что вы видите на диске - новые чипы Intel выполняют своего рода "своевременную компиляцию" (больше перекодирование CISC => RISC-микроопераций), где микрооперации - это то, что нужно что в конечном итоге в кеше. Короче говоря, то, что находится в кеше, - это не ваша программа, а измененное представление о ней, поэтому вы больше не можете использовать ее как представление вашей программы в памяти.

Вопрос в том, почему. Помимо "потому что я могу", для этого не так много причин. Система Cache дает вам большую часть выигрыша в скорости с гораздо меньшими затратами. И помните, что стоимость не просто доллары .... SRAM требует больше транзисторов, что означает больше электричества.

1

"мы можем запустить Linux в L3 Cache?"

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

"мы можем запустить Linux в SRAM?"

Конечно, вы можете использовать SRAM с резервным питанием от батареи в качестве загрузочного раздела, тогда вы можете использовать встроенный флаг выполнения на месте. Это может привести к более быстрому времени загрузки и немного более быстрым операциям. Однако основным фактором является пропускная способность между кэшем L3 и тем, где находится ядро (загрузочный диск или ОЗУ).

"Есть ли что-нибудь быстрее? Как быстро мы можем linux !?"

Обычно производители оборудования и разработчики операционных систем работают над тем, чтобы сделать обработку максимально быстрой. Однако ваш вопрос очень общий: хотите ли вы ускорить загрузку, оптимизировать доступ к файловой системе, ускорить вычисления или что-то еще? Если у вас есть более конкретный вопрос, вы, безусловно, можете начать искать узкое место и устранять его. Ваш накопитель SRAM наверняка ускорит процесс загрузки. Добраться до GUI за 3 секунды было бы очень здорово.

1

"мы можем запустить Linux в L3 Cache?"

Нет, это невозможно, поскольку кэш-память не имеет прямой / линейной адресации.
Из-за того, как кэш-память спроектирована, реестр счетчика программ ЦП (IP) не может указывать на местоположение в кэш-памяти.

Кэш ЦП имеет свою собственную "ассоциативность", и эта ассоциативность определяет способ, которым "нормальная" память "отображается" в кэш-памяти. Эта особенность кэш-памяти является одной из причин, по которой кэш-память так быстро работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .