Физическая память

Тема в разделе "WASM.BEGINNERS", создана пользователем pashe4ka13, 9 дек 2010.

  1. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    Всем доброго времени суток! На моей машине установленно два банка оперативной памяти по 1 Гб и видеокарта 1 Гб. Значит ли это то, что я могу физически адресовать 3 Гб ? Или память видеокарты проецируется на область оперативной памяти ?
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    pashe4ka13
    Нет не значит. Адресовать это значит составлять адрес. У 32 битного процессора семейства x86 у тебя 36 выходов то тебе доступно адресов 2^36 или другими словами 64 миллиарда адресов. А вот из них рабочих будет 2ГБайта+видео память. Да видео память проецируется в физическое адресное пространство, но не вся.


    Термины "Физическая память" и "Физическое адресное пространство" использованы в узком смысле, так как они определены в документации фирмы Intel для архитектуры X86.
     
  3. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    На самом деле даже несколько меньше двух гигабайт ОЗУ -- часть адресов там как минимум затенена видеопамятью. Ну а сколько потенциально можно адресовать, зависит только от разрядности шины адреса -- обычно 36 бит (хотя в современных процессорах теоретически ширина может достигать 64 бит, но физически это не реализовано).
     
  4. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Если видео-карта проецирует весь свой 1 ГБ памяти, то да.
    Определённо нет. Сначала будет полностью располагаются оперативная памяти (хотя и разрываться в первом МБ BIOS и другими служебными областями), потом память различных устройств (в том числе и видео-память). Вот если у вас оперативной памяти будет скажем 3 или 4 ГБ и она вместе с памятью устройств не поместится в первых 4 ГБ, то часть оперативки будет отображена выше 4 ГБ и не будет доступна без 36- (PAE) или 64-битной адресации (long mode).
    Любой 32-битный процессор имеет возможность составлять физический адрес из 32 бит. То есть адресовать до 4 ГБ физической памяти. 32-битный процессор обладающий технологией PAE способен адресовать 64 ГБ физической памяти. Однако это требует специальных приспособлений со стороны ОС (к тому же объём адресуемой виртуальной памяти всё равно будет 4 ГБ). И наконец 64-битный процессор может адресовать до 2 ^ 64 байт памяти (16777216 ТБ). Однако поскольку этот объём памяти слишком велик, адресная шина современных процессоров позволяет адресовать намного меньшее (меньшее число бит. 48, например. может быть ещё меньше). К тому же 64-битная адресация (кстати, виртуальный адрес имеет лишь 48 значащих бит. у отдельных процессоров может быть меньше) требует перевода процессора в "длинный режим" и соответственно 64-битной ОС.
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Как уже верно заметили, адресовать можно 4Гб или 64Гб, в зависимости от разрядности шины. А вот сколько из этих адресов будут валидными - другой вопрос :)
     
  6. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    SII,Pavia Вам огромное спасибо, а Вам KIV отдельное, которое еще больше, так как мне кажется Ваш ответ самый точный. Но, что-то я еще не совсем допонимаю. Вот значит на моей машине будут валидными 3 Гб в любом случае,даже при различной разрядности шины данных, хоть 32 хоть 36. Ну предположим на моей машине 32-х разрядная
    шина, у меня 3 Гб, а адресовать я могу виртуально 4 ?
    Будет использоваться виртуальная память ? Это аппаратная поддержка (операционной системы нет) защищенного режима процессора ? И еще если шина будет 36 (при страничной адресации размер сегмента равен 4 Гб), а на машине будет, ну, скажем 8 Гб памяти, я смогу разместить в ней два сегмента?
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Виртуальное адресное пространство в любом случае будет 4Гб
    а что ты туда проецироваьт будешь - твое дело.
    можно хоть одну страницу на все 4Гб перепроецировать - какая разница. ты сам задаешь таблицы.

    PS. Чтобы обозначить вопрос, достаточно одного вопросительного знака. Лишние потёр. Плиз, не надо ставить "???" и тп, в глазах рябит
     
  8. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    Ага, значит, никому ненужный фильтр мата есть, а преобразовать "??????" в "?" нельзя....
     
  9. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    О великий, всезнающий и могучий, который может стирать знаки вопросиков из моих постов всё вышесказанное Вами я внимательно вкурил, но мои вопросы остались без ответа:
     
  10. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    pashe4ka13
    Не всегда проецируется вся видео память. Иногда проецируются лишь так называемые окна памяти. Например: на моей машине 8 Гб оперативной памяти и 2 видео карты по 1 Гб каждая, но первые 4 Гб памяти выглядят у меня так
    0-~2.5Gb - RAM
    2.5Gb-0.5Gb - Video1 window
    3.0-~0.3Gb - PCI Devices
    3.3Gb-0.5Gb - Video2 window
    3.8Gb-0.2Gb - PCI devices and others
    4.0-~5.5Gb - RAM
    Виртуально всегда 4, но не обязательно. Многие страницы виртуального пространства могут попросту отсутствовать, а какие-то выгружены на диск. Разберитесь с адресациями памяти, это сложная тема, но она прекрасно разжевана в манах по процам.
    "Физическое пространство (4/64 Гб/256 Tb)">"Страничная адресация, Виртуальное пространство (4 Гб/16 Еб)">"Сегментная адресация (4 Гб/Unlimited)">"Линейное адресное пространство (4 Гб/16 Еб)"
    Вроде я запомнил так.
    Что выгружать или что загружать на/с диска определяет только операционная система.
    Да, но они не будут превышать 4 Гб адресации т.к. механизм сегментации идет после механизма страничной адресации, а механизм страничной адресации ограничивает нас 4 Гб виртуальным адресным пространством в 32-битном режиме
     
  11. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    max7C4
    спасибо, вроде уложилось в моем мозгу понятия о памяти. Всем еще раз спасибо!
     
  12. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    KIV
    Это Ваше утверждение неверно. Области ОЗУ, видеопамяти и регистров устройств могут перемежаться. Например, если на компьютере много оперативной памяти (свыше примерно 2-3 гигабайт, точное количество зависит от конфигурации железа), то часть её либо будет вообще недоступна (т.е. полностью затенена регистрами устройств и видеопамятью), либо будет переотображена чипсетом (в широком смысле, включая сюда контроллер памяти, физически располагающийся в современных процессорах на кристалле самого процессора, но логически являющийся отдельным узлом) за пределы 4 Гбайт. Это необходимо для того, чтобы 32-разрядные системы могли на такой конфигурации работать, ведь они не обязаны уметь пользоваться ПАЕ, а значит, могут оказаться неспособными дотянуться до регистров устройств за пределами нижних 4 Гбайт физического адресного пространства. Кроме того, БИОС обязан располагаться в конце этих 4 Гбайт, ну и т.д.

    В общем, ещё раз: обычное ОЗУ, видеопамять, регистры устройств и области БИОС перемежаются друг с другом, и никаких _предположений_ об их местонахождении делать нельзя (полагаться можно лишь на то, что точно известно, т.е. стандартизировано).
     
  13. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    SII
    Регистры устройств? А разве регистры устройств имеют отношение к оперативной памяти? Мне всё время казалось, что данные регистры находятся в адресном пространстве ввода-вывода, которое размером 64Кб и физически к ОЗУ не имеет ни какого отношения
     
  14. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    pashe4ka13
    и лишь некоторые из этого пространства доступны также и через АП В/В (то, что 64 кб размером, а большинство вообще в этом самом АП В/В эмулируется, например клавиатура с мышью, т.к. они отображаются с усб и прикидываются обычными пс/2)
     
  15. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    pashe4ka13
    Это кривость архитектуры x86. В нормальных архитектурах это одно пространство.

    По мимо портов ввода/вывода (IO) которые находятся в своем пространстве. Есть порты которые отображены в адресное пространства физической память (Memory Mapped IO - MMIO).

    PCI устройства обычно отображают свои регистры в память. Вообще все устройства начиная примерно с 1990 стараются отображать свои регистры в память. А вот все устарелые и те которые поддерживают совместимость с ними еще продолжают использовать порты ввода вывода в отдельном адресном пространстве.

    max7C4
    По поводу USB клавиатур и мышей. Контроллер USB просто считывает данные и записывает их в PS/2 контроллер. Так что порты не эмулируются они физические и настоящие.
     
  16. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Pavia
    Не везде.
     
  17. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    Пример, пожалуйста. PCI-устройства предпочитают жить в I/O-пространстве (фрэйм-буфер не в счёт). Из ярких примеров я помню только Weitek какой-то-там, мат. сопроцессор с MMIO.

    А эмуляция legacy-устройств иногда и через SMM идёт. Хотя современные чипсеты поддерживают это аппаратно (запись в read-only порт?).
     
  18. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    baldr
    Стандарт ПСИ прямо указывает, что предпочтительней отображать регистры на пространство памяти, а не ввода-вывода, ну а система поступает по своему усмотрению. Например, на моём компе на работе (за коим сейчас нахожусь; южный мост ICH7) USB2 Enhanced Host Controller занимает адреса памяти FEA77C00-FEA77FFF, а вот все четыре USB Universal Host Controller сидят в пространстве ввода-вывода.
     
  19. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Для USB контроллеров в их собственных спецификациях указано что у EHCI регистры находятся в MMIO, у UHCI - в I/O.
    Это будет так на всех материнских платах.

    Определённо это зависит от типа карты.
    Если карта внешняя - то будет так как ты описал, если интегрированная - у неё нет своей видеопамяти, она использует системную, и реально доступный объём RAM будет меньше на объём видеопамяти.
     
  20. alborvas

    alborvas New Member

    Публикаций:
    0
    Регистрация:
    18 ноя 2011
    Сообщения:
    1
    Здравствуйте.
    Подскажите, пожалуйста, возможен ли доступ к физическим адресам $E8001000-$E80013FF PCI-платы из приложения,
    созданного при помощи Borland Pascal 7.0. Запускать приложение нужно на компьютере Pentium3 с ДОС 6.22.