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

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

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

BBCode

  • HTML-теги не обрабатываются и показываются как обычный текст
  • You may use the following BBCode tags:
    • [align]
    • [b]
    • [code]
    • [color]
    • [font]
    • [hr]
    • [i]
    • [img]
    • [list]
    • [quote]
    • [s]
    • [size]
    • [spoiler]
    • [sub]
    • [sup]
    • [table]
    • [u]
    • [url]
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.

Llama

18 лет 11 месяцев назад

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

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

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

Root

18 лет 11 месяцев назад

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

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

NortonC

18 лет 11 месяцев назад

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


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

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


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

Llama

18 лет 11 месяцев назад

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

NortonC

18 лет 11 месяцев назад

отсюда

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


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

Baza

18 лет 11 месяцев назад

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

Llama

18 лет 11 месяцев назад

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

Baza

18 лет 11 месяцев назад

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

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

BSV

18 лет 11 месяцев назад

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

Нужно, чтобы устройство кроме DeviceID и VendorID отдавало правильный Class Code, например что-то такое:
[code:1]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[/code:1]
Иначе ничего не выйдет, в ISA все гораздо проще.

savely

18 лет 11 месяцев назад

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

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

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

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

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

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

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