Как протестировать всю оперативную память

Тема в разделе "WASM.ELECTRONICS", создана пользователем AceOfTrump, 6 апр 2006.

  1. AceOfTrump

    AceOfTrump New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2006
    Сообщения:
    23
    Очень прошу, напишите пожалуйста код проги, которая тестит всю оперативную память (до 4гб) под dos. Мне это по диплому надо... Заранее благодарен.
     
  2. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    AceOfTrump

    Дизассембли memtest или поищи ее сорец. И деньги платить не придется.
     
  3. AceOfTrump

    AceOfTrump New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2006
    Сообщения:
    23
    alpet

    И то и это пробовал, но нигде успеха не достиг...
     
  4. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    AceOfTrump

    Тогда видимо придется изучить архитектуру i386, работу в защищенном режиме, или в методы раскрывающие возможности 32-битной адресации в реальном режиме для процессоров данной архитектуры.
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    AceOfTrump

    Сам напиши.

    Перейти в защищенный режим. Установит преоброзования логических адрессов в физические. Отключить кэширование(Хотя можно и не отключать). И просто пробижаться в цикле пишим данные затем другим циклом читаем. И так для различных данных от 00 до 0FFh. Если прочитанные данные совпали с записанными, то памить в порядке.

    Через PCI интерфейс.Еще пожно получить ID северный мост - онже является контролером памити. И из списка выбрать производителя и название. Через контролер сможешь узнать объем памити.

    Возможно понадобиться еще что-то.
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    AceOfTrump

    В досе (а дос выполняется в real mode) доступно вплоть до 1Мб физической памяти. Если приложение переключится в защищённый режим, получит доступ ко вплоть до 4Гб виртуальной памяти. В книжке AOA by R. Hide в 4й главе написано, что начиная с i386 приложения могут получать доступ к более 1Мб физ. памяти каким-то более удобным способом, чем переключение в PM. Подробности я там не нашёл, но где-то они должны быть: справочники по IA32, статьи Broken Sword по PM, etc.



    PS: Опередили.
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Quantum



    Есть спец функция, изначсальна она была не документированной. Не помни, где ее описание видел.
     
  8. ava

    ava New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2003
    Сообщения:
    169
    "напишите пожалуйста код проги, которая тестит всю оперативную память (до 4гб) под dos. Мне это по диплому надо"



    Не слишком ли примитивно для диплома?



    "Если приложение переключится в защищённый режим, получит доступ ко вплоть до 4Гб виртуальной памяти"



    Ничего подобного. Линейная память будет отображаться на физическую один в один (если не забыть про вентиль A20 :). А для использования "виртуальной" памяти потребуются дополнительные действия.



    "начиная с i386 приложения могут получать доступ к более 1Мб физ. памяти каким-то более удобным способом, чем переключение в PM"



    Либо я что-то недопонял, либо этот способ обычно называется "нереальным режимом" (URM). Для перехода в этот режим все равно придется прыгать в PM (правда, ненадолго).



    "Есть спец функция, изначсальна она была не документированной"



    Это, случайно, не функция 87h (move extended memory block) прерывания 15h (AT services)?
     
  9. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    ava

    Функция вроде бы называется loadall, предназначена для загрузки всех регистров (в том числе и теневых), что позволяет вроде бы расширить предел сегмента с 64к до 4гб. Беда в том что на разных процессорах (286, 386, 486) ее опкод различается, а на новых ее может и не быть вовсе. Так что самый универсальный способ - переключиться в защищеный режим, и там проверять. Достаточно простой - обрабатывать из прерываний надо разве что исключительную ситуацию (#UD?).
     
  10. AceOfTrump

    AceOfTrump New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2006
    Сообщения:
    23
    ava

    Не слишком ли примитивно для диплома?

    это примерно 1/30 от всего остального



    народ, если честно я в терминах не сильно разбираюсь и ориентируюсь тока по коду (и то плоховато :))

    Вот нашел на wasm.ru статью http://www.wasm.ru/article.php?article=hardzen

    там определяется объем оперативки, есть подозрения что примерно по этому же способу можно протестировать память. Посмотрите пожалуйста и напишите свои мысли, желательно с исправленным кодом этой статьи (если можно конечно).
     
  11. AceOfTrump

    AceOfTrump New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2006
    Сообщения:
    23
    Pavia

    Через PCI интерфейс.Еще пожно получить ID северный мост - онже является контролером памити. И из списка выбрать производителя и название. Через контролер сможешь узнать объем памити.

    Возможно понадобиться еще что-то.


    а можно поподробней, как это сделать...
     
  12. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    AceOfTrump

    В той статье от дарк мастера есть все, что тебе нужно.
     
  13. AceOfTrump

    AceOfTrump New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2006
    Сообщения:
    23
    Pavia

    Значит с помощью этого способа из под Доса можно протестить, я правильно понял?
     
  14. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Pavia



    Есть сайт по недокументированностям x86. Там описаны возможности loadall. Адрес не помню. Всё же, автор книги подразумевал, IMHO, документированную возможность. Иначе бы он не назвал её более удобной. Наверное, я неправильно перевёл и возможность эта не исключает переключение в PM. Просто начиная с i386 этот процесс стал более удобным или менее глючным.



    ava



    Пока не закончится, если только на машине не окажется 4Гб физ. памяти. Я не вижу ошибки в своём утверждении.





    Видимо, мы называем "виртуальной" пямятью разные вещи. Для использования свопа и динамической подкачки страниц, конечно, потребуется много килобайт дополнительных действий.
     
  15. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Quantum

    Скорее всего LoadAll. Насколько я слышил Intel по требованию может выслать описания "Не документированных" возможней.



    А вопросс, что происходит с памитью при присутствии 4Гб физической памити? Ведь физические адресса C0000000-FFFFFFFF отводятся под PCI устройства.
     
  16. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Pavia



    Нельзя, вроде, 4Гб подключать к x86. Первый Мб, кстати, тоже зарезервирован.
     
  17. ava

    ava New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2003
    Сообщения:
    169
    "Видимо, мы называем "виртуальной" пямятью разные вещи"



    Действительно. То, что ты назвал виртуальной памятью, называется линейной памятью (точнее, линейным адресным пространством).



    "Нельзя, вроде, 4Гб подключать к x86"



    Гм... Зачем же тогда в Pentium Pro появилась 36-битная шина адреса? А Xeon-овые серверы с 32 ГБ памяти - это, наверное, рекламный трюк?
     
  18. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine


    Это уже модель памяти. В моём понимании всё гораздо проще:



    В PM 386й проц позволяет адресовать 4Гб. Эти 4Гб включают в себя не только оперативную память. Даже 2Гб RAM практически задействовать не представляется возможным (из технических и/или экономических соображений). Поэтому эти 4Гб называются виртуальной памятью.





    Да, запамятовал, что Пни тоже считаются x86.





    36-битный адрес позволяет использовать вплоть до 64Гб адресного пространства. Т.к. для ОЗУ выделяется только половина (35 бит), то получается, что 36-битной шины вполне достаточно для адресации 32Гб. Такую машину я ещё не видел и о рекламе не знал.
     
  19. ava

    ava New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2003
    Сообщения:
    169
    "Даже 2Гб RAM практически задействовать не представляется возможным"



    Это ничем не обоснованный пессимизм :)



    "эти 4Гб называются виртуальной памятью"



    Тот, кто писал третий том "IA-32 Intel® Architecture Software Developer’s Manual", использовал словосочетание "виртуальная память" только в связке со страничной трансляцией. Если же эта самая трансляция отключена, то есть только логические (преобразуемые в линейные), линейные (однозначно отображаемые на физические) и физические адреса - про "виртуальную память" ничего не говорится.
     
  20. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    ava



    Предположем, нужен i386 с 2Гб оперативки. Для таких требований на рынке существует материнка? Я такую не нашёл даже для i486. Теоретически, конечно, можно заказать или самому сделать, но тут как раз просыпается пессимизм.





    Виртуальная память имеет место быть не только на IA-32 и даже не только на IA совместимых CPU. "Своё" определение я почерпнул из довольно попсовых и даже ламерских изданий, вроде этого. Всё-таки модель памяти, страничкая адресация, трансляция адресов, PDE, PTE... всё это тесно связано с архитектурой CPU и понятие VM становится более узким.