оперативная память на шинах pci/agp/pciE

Допустим, есть AGP видеокарта с 512МБ памяти и есть матплата, на которой стоит 256 МБ памяти. Можно ли использовать часть видеопамяти как системную память? На самом деле вопрос шире. Есть устройство на шине pci/agp/pciE(хоть isa) которое имеет память(ничего кроме видеокарты в голову не приходит). Оно умеет брать на себя некоторую часть адресного пространства процессора. Как это использовать?

В голову приходят только linear frame buffer в большей степени и agp aperture size в меньшей степени, также "размер окна". Можно ли "замапить" часть памяти достаточно простым образом, чтобы не нужно было сложное программирование и переключение "окон"?

Рассуждения- "память стоит дёшево", "слишком большое время доступа" и т.п. можно не приводить.

NortonC если память некого устройства мапится на адресное пространство процессора - то религиозных ограничений тут нет ИМХО - достаточно поправить ядро ОС в части VM и аллокатора и драйвера устройства предоставляющего память научить обходить стороно выделенный участок.

Добавлено спустя 5 минут 15 секунд:

Строго говоря, не обязательно даже чтобы память устройства мапилась на адресное пространство процессора - достаточно только:
1) Иметь возможность получить доступ к произвольному блоку памяти устройства каким-то способом (например чере порты либо маппинг на адресное пространство процессора кусками, либо маппинг целиком)
2) Сказать устройству чтобы оно некоторые области собственной памяти не трогало - ибо устройство-то может быть умным, иметь собственную прошивку и т.п.
3) Далее модифицируется VM и алокатор в ядре - все реально при условии того что первые два условия - выполнены.

ex-K9

Аватар пользователя Root

Цитата:
Допустим, есть AGP видеокарта с 512МБ памяти и есть матплата, на которой стоит 256 МБ памяти. Можно ли использовать часть видеопамяти как системную память?

в теории - можно. Реально в худшем случае придется переписывать memory management в ядре операционной системы. Напр., как можно рассуждать - у нас есть PM. В нем есть возможность при обращении к отсутствующим страницам памяти вызывать обработчик оного прерывания. Так в нем можно реализовать подгрузку этих самых страниц откуда угодно. В т.ч. и из памяти PCI-у-в. Ну, или откуда угодно :)

Аццкий ромбовод {:€
Я пока не волшебник - я только учусь! :-P

Llama писал(-а):
1) Иметь возможность получить доступ к произвольному блоку памяти устройства каким-то способом (например чере порты либо маппинг на адресное пространство процессора кусками, либо маппинг целиком)
2) Сказать устройству чтобы оно некоторые области собственной памяти не трогало - ибо устройство-то может быть умным, иметь собственную прошивку и т.п.
3) Далее модифицируется VM и алокатор в ядре - все реально при условии того что первые два условия - выполнены.

Можно воткнуть видеокарту с вынутым биосом и не ставить её драйвера. Интересует, конечно, не "прокручивающееся" окно, а маппинг всей памяти. Можно ли обойтись только софтом устройства без модификации ядра ос. Допустим, рассматриваем более широко распространённые ос, чем линух:) Или же, как только начнётся инициализация шины в ядре, на которой висит устройство, все предыдущие "установки" отвалятся? Идеально было бы иметь драйвер универсальной инициализации видеокарты, может vesa подошёл бы, например, подобно известному

Root писал(-а):
Так в нем можно реализовать подгрузку этих самых страниц откуда угодно

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

NortonC нет, невозможно без модификации VM/MM ИМХО. Единственный вариант - на поздней стадии инициализации, уже на уровня драйверов эмулировать block device с последующим размещением там свопа. Другое дело, что находясь в ring0 чисто теоретически можно подменять системные вызовы своими аналогами и сделать по сути собственный алокатор для отработки всяческих mmap()/brk().

ex-K9

отсюда

Цитата:
-Linear Frame Buffer Write Combining. Позволяет организовать обращения к видеопамяти в обход банкового механизма по абсолютным адресам выше 2 GB. При реализации этой возможности скорость обращений, естественно, возрастает, так как необходимость переключать банки отпадает и процессор получает возможность работать с видеопамятью напрямую. Но для использования Linear Frame Buffer Write Combining необходимо задействовать MSR-регистры процессора, поэтому по умолчанию этот режим выключен для обеспечения совместимости.

или упирается в "непрерывность" памяти, в том смысле, что "выше 2Г" и модификация нужна, чтобы ос видела её именно как самую обычную память? Иначе память будет, но писать в неё можно будет только тем, кто знает, что она есть?

Аватар пользователя Baza

А если перекопать видеобиос, в влезть в память по DMA???

Либо нечему гореть, либо нечем поджечь!

Baza влезть в эту память всяко можно - драйвера-то лазят... Вопрос в том, чтобы объяснить ОС что у неё эта память есть, а вот уже для этого надо колупаться ядре.

ex-K9

Аватар пользователя Baza

Я незря предложил ковырнуть бивис:
были-же ISA платы с памятью, есть PCI-винчестеры на DIMM-ах.

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

Либо нечему гореть, либо нечем поджечь!

Аватар пользователя BSV

Скорее всего потребуется не только модификация Расширения BIOS видеокарты, но и модификация его Конфигурационного пространства PCI. А это скорее всего сделать не получится.

Нужно, чтобы устройство кроме DeviceID и VendorID отдавало правильный Class Code, например что-то такое:

D.6. Base Class 05h
This base class is defined for all types of memory controllers. Several sub-class values are
defined. There are no register-level programming interfaces defined.
Base Class Sub-Class Interface Meaning
00h            00h                        RAM
05h            01h          00h         Flash
80h            00h                        Other memory controller

Иначе ничего не выйдет, в ISA все гораздо проще.

Второй закон Вышковского: Все можно наладить, если вертеть в руках достаточно долго.

Аватар пользователя savely

Цитата:
были-же ISA платы с памятью

Обслуживавшиеся своим драйвером. По типу EMS, вроде.

Цитата:
есть PCI-винчестеры на DIMM-ах

Так как раз сделать из VRAM накопитель - сравнительно просто. Но это же не память будет, а все же диск.

Кстати - у линуксоидов есть такой проект.

Цитата:
Иначе ничего не выйдет, в ISA все гораздо проще.

Не обязательно. Если свой драйвер - то ему пофиг, что там за Class Code у платы - главное, что он системе отдастся как Storage. А вот с драйвером видюхи - да, придется как-то договариваться о юзании ресурсов... Хотя бы в плане обмана - сколько реально мозгов на плате.

А кому счас легко...

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей