на сайте sasm.narod.ru есть пример определения размера физической памяти (путём прочёчывания памяти постранично), но он подойдёт только для памяти размером не больше 4 ГБ, а как же быть с памятью более 4 ГБ (для режима PAE), как определиь её размер????
rpy3uH смотри мануал Intel по PAE вкратце, нужно будет создать 3 64-х битных элемента (PDPTE, PDE, PTE) (адрес PDE поместить в PDPTE, адрес PTE - в PDE) последовательно меняя базу 36 битного адреса в PTE и используя виртуальный адрес 0x00000000 можно получить доступ ко всему 64GB пространству
rpy3uH Используй прирывания биуса Int 15h Функция 0E820h EAX = E820h System Memory Map Input: EBX Номер дескриптора ESI Адрес структуры “Address Range Descriptor” ECX Длина структуры “Address Range Descriptor” (=> 20 bytes) EDX "SMAP" сигнатура (в FASMе "PAMS") 534D4150h Output: Carry 0 => Функция E820 поддерживается EAX "SMAP" сигнатура ESI Тоже самое значение которое подавалось на вход ECX Длина полученной информации в Байтах EBX Следующей номер дескриптора Структура “Address Range Descriptor”: Байты 0-3 Нижние 32 Бита Базового адреса Байты 4-7 Верхние 32 Бита Базового адреса Байты 8-11 Нижние 32 Бита Длины в байтах Байты 12-15 Верхние 32 Бита Длины в байтах Байты 16-19 Тип диапазона: 1 = AddressRangeMemory, разрешен для использования в ОС 2 = AddressRangeReserved, не разрешен для использования 3 = AddressRangeACPI, разрешен для использования в ОС 4 = AddressRangeNVS, не разрешен для использования в ОС Другие = Не определены, не разрешены для использования в ОС Примечание: Каждый вызов этого сервиса возвращает дескриптор Первый дескриптор имеет 0 значение, последний дескриптор указывает на 0. Недавно обусждали здесь http://board.sysbin.com/viewtopic.php?t=1673 и еще на форуме колибре. Способ сканирования памяти не верный. Так как существует возможность, что видео память находиться сразу за основной. Это возможно уже при 3ГБ основной памяти. И это не беря в расчет что биус использует часть основной памяти компьютера. К примеру во встроенных видео картах и для других нужд.
это точно......даже не задумывался но здесь возникает новый вопрос если памяти 4 ГБ, а на видюхе 512 МБ, а система на обычном ядре что тогда делать?
rpy3uH Ядро менять. Можешь просконировать PCI найти самый маленький адресс(>16МБайт). И уже сканировать память до него.
я тут где прочитал что если мать поддерживает не больше 4 ГБ и если поставить 4 ГБ, то получится 3,2 ГБ так как старшие 700 МБ адресов отводятся под PCI устройства, а если мать поддерживает 8 ГБ то не более 7,2 ГБ и так далее..... отсуда новый вопрос: а если на видюхе 1 ГБ памяти?
rpy3uH Если компьютер поддерживает до 4ГБ то. Будет 2ГБ основной памяти далее все под PCI. Это условно, вообще у Intel написано что BIOS отводить 1ГБайт под PCI, но размер может варьироваться. А вот если матерь поддерживает 8ГБ то там все 8 и будут. Такие матери поддерживают переотображения части основной памяти.
не понял.... то есть под PCI устройства может отводиться память любого размера сколько может поддерживать мать
rpy3uH Я имел виду если матерь поддерживает 8ГБайт основной памяти. То все 8ГБайт основной памяти у тебе и будет доступно. Так как в таких материнках предусмотрено переотображения части основной памяти. А под PCI будет зарезервирован участок по средине, и в конце. Посередине нужен участок в целях совместимость со старым оборудованием которое поддерживает только 32линии адреса. Под PCI отводиться не память, а адресатное пространство. В принципе может отводиться сколько угодно. Но есть ряд ограничений.
вопрос который долго меня гложет: на видюхах стоит высокоскоростная память, но с высокой скоростью к ней может обратиться только процессор видюхи собственно вопрос: на процессоре видюхи какой код выполняется?
rpy3uH Собственно, это точно знают только производители видюх или драйверов к ним... Предположительно - в 2D - рисование примитивов, аппаратная поддержка всяких фич типа скроллинга, всякие там копипейстерства, заливки и т.д. в 3D - текстурирование, анти-алиасинг, бамп-маппинг, и т.д. плюс собственно код, который сочинит ей программист, называемый страшным словом "шейдеры" Вообще, понятие GPU довольно мутное - графический процессор, в отличии от CPU, в виде отдельной взятой сущности, для которой применимо понятие "исполняемый код" в современных видяхах и не существует, т.к. есть существо многоголовое от незапамятных времен.