User Tag List

Страница 4 из 18 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 180

Тема: 32-разрядный процессор, полностью совместимый с архитектурой PDP-11.

  1. #31
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    62 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Как мне кажется, основная причина появления режима Supervisor, так же DataSpace - попытка увеличить доступную для приложения память с 64 кб на что то побольшее. Поэтому смысла увеличивать количество режимов работы процессора не вижу. По идее - даже три (как и dataspace) - пока никак не просматривается - для чего? - в 32-битном режиме.
    Специальный режим, в котором после включения питания процессор работает только с внешними устройствами - нужен для того, чтобы стартовый код мог находиться не в микрокоде процессора, а обычном ПЗУ по нулевому адресу моды супервизора. Выпадение в HALT и другие напасти также должны автоматически обрабатываться системным ПЗУ моды супервизора.

    Проще говоря, мода супервизора - это режим пульта.

    - - - Добавлено - - -

    Цитата Сообщение от Hunta Посмотреть сообщение
    И опять вопрос - с практической точки зрения нафига нам шаг в 512 байт на 4 гигах адресного пространства?
    Изучение интеловских документов по работе с памятью подсказало, что сделать можно иначе.

    Оставить 8 сегментов ( которых в DEC называют "страницами" ) и дать каждому сегменту по 1024 страницы ( которых в DEC называют "блоками" ). Тогда общее число страниц в моде будет 8К при размере страницы 512К.

    Если принять старый интеловский лимит для 32-разрядных MMU в миллион страниц, то такое количество страниц позволяет иметь 128 мод. А раз по меркам 10-летней давности 128 мод не пугают, то по современным меркам и 1024 моды не сильно страшны.

    - - - Добавлено - - -

    В интел ( насколько я понял ) применяется чисто страничная организация памяти, когда вся толпа флагов и признаков режима использования страницы хранится в её дескрипторе. Однако, все флаги и признаки можно разделить на имеющие отношение к аппаратуре и имеющие отношение к процессу-владельцу страницы. Смешанная сегментно-страничная организация памяти выделяет все общие свойства страниц процесса из дескрипторов и хранит их отдельно - в специальной "таблице регионов", объединяющей ссылки на дескрипторы всех страниц процесса с общими свойствами.

    При таком подходе, возможно - есть смысл не задавать фиксированное количество регионов в моде ( 8 или 1024 ), позволив каждому процессу создавать столько наборов страниц, сколько надо.

    Например, таблица первого уровня - может содержать 1024 ссылки на описатель региона ( все на один, каждая на свой или как угодно ещё ). Описатель региона задаёт свойства региона и содержит ссылки на описатели страниц. Для полного заполнения одного "атомарного региона" ( занимающего одну ссылку в таблице регионов ) нужно 8 страниц по 512К. Соответственно, полные регионы имеют шаг размера 4Мб, а минимальное изменение размера региона = 512К.
    Последний раз редактировалось Patron; 02.09.2017 в 23:09.

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Уважаемые гуру, обьясните простому смертному что есть мода в Вашем разговоре? Это набор регистров аналогичный pdp-шным PAR/PDR?
    Неплохо бы послушать "на пальцах" про реализацию MMU на pdp11,vax,mc68000,arm,x86,alpha,pa-risc чтобы было перед глазами некое сравнение. Хочется чтобы проц мог и в 64кб физической памяти организовать многозадачную OS так же легко как и в 640Mb и в 4GB и в 4TB. Ясно что для этого MMU должен иметь микрокод который бы задавал размер элементов-описателей страниц, и этот самый микрокод заливался при старте компьютера BIOS-ом в зависимости от количества физического ОЗУ (а возможно MMU должен иметь в себе отдельное ОЗУ для описателей страниц чтобы не тормозить рабочее ОЗУ).

  4. #33
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    62 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    Уважаемые гуру, обьясните простому смертному что есть мода в Вашем разговоре?
    Мода - это номер предварительно загруженного в MMU набора таблиц трансляции адресов, выбираемого битами моды в PSW.


    Цитата Сообщение от bigral Посмотреть сообщение
    Это набор регистров аналогичный pdp-шным PAR/PDR?
    Проблема MMU PDP-11 в том, что память не надо свопить. Когда память надо свопить - приходится хранить отдельный описатель для каждого минимального выделения памяти. В 64К адресного пространства PDP-11 минимальных выделений памяти было 1024. В интел для 32-разрядных MMU принято иметь миллион минимальных выделений, называемых "страница". В такой терминологии у MMU DEC не 8 страниц, а 1024 страницы, объединённых в 8 регионов.

    Но MMU DEC не надо свопить отдельные страницы, поэтому все страницы мапятся одним махом - через регион, задающий их общие свойства.


    Цитата Сообщение от bigral Посмотреть сообщение
    Хочется чтобы проц мог и в 64кб физической памяти организовать многозадачную OS так же легко как и в 640Mb и в 4GB и в 4TB. Ясно что для этого MMU должен иметь микрокод который бы задавал размер элементов-описателей страниц, и этот самый микрокод заливался при старте компьютера BIOS-ом в зависимости от количества физического ОЗУ (а возможно MMU должен иметь в себе отдельное ОЗУ для описателей страниц чтобы не тормозить рабочее ОЗУ).
    Отличная идея - у интел тоже есть возможность задавать размер страницы при инициализации процессора, выбирая из 3 вариантов: 4К, 2М, 1Г.

  5. #34
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,007
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Проще говоря, мода супервизора - это режим пульта.
    У DEC режим супервизора - это не режим пульта! Это третий режим работы - типа пользовательского со своим набором PAR/PDR. В RSX-11M-Plus есть поддержка этого режима и в него можно загнать, скажем, резидентную библиотеку FCS, обычно собирается с именем FCSFSL.
    Ещё раз - ЭТО НЕ ПУЛЬТОВЫЙ РЕЖИМ!

    - - - Добавлено - - -

    Цитата Сообщение от bigral Посмотреть сообщение
    что есть мода в Вашем разговоре
    Насколько я понял - первоначальная идея моды у Патрона - попытка ускорить по крайне мере описание отображения виртуальной памяти в физическую при переключении контекста процессов.

    В PDP-11 три "моды" (режима работы процессора) и три набора PAR/PDR (которые реализованы как сверхОЗУ в MMU - по крайне мере такую аналогию можно провести). Соответственно, если пользовательский процесс обращается за обслуживанием к ядру или происходит прерывание - происходит переключение режима работы процессора (моды) по информации из вектора прерывания - и вот уже мы работаем с другим (ранее загруженным) набором PAR/PDR. И только если нужно переключиться с одного процесса на другой, когда оба работают в одном режиме работы процессора (планировщик активирует другой процесс, например) (в одной моде) - тогда нужно перезагрузка PAR/PDR.

    У Патрона попытка ускорить этот процесс за счёт того, что количество режимов работы процессора резко увеличивается, у каждого свой набор PAR/PDR - мы их когда то проинициализировали - и вуаля - значительно реже их перезагружаем.

    Проблема только в том, что при большом количестве памяти и/или маленьком размере страницы (то, что у PDP-11 64 кб и 8 кб) - этих самых PAR/PDR (если использовать аналогичный PDP-11 механизм описания страниц и работы MMU - только расширить на большие размеры памяти - физ и вирт) получается чуть больше, чем дохера.

    Поэтому с моей точки зрения - не взлетит. Нужно думать - как уменьшить или реализовывать другой механизм

    - - - Добавлено - - -

    Цитата Сообщение от Patron Посмотреть сообщение
    64кб физической памяти организовать многозадачную OS
    при 32-битном процессоре (и размере команды (минимум) в 4 байта, а не 2) - думаю - это тоже утопия. Нэ влэзит

    - - - Добавлено - - -

    В дополнение к описанию моды.

    Если реализовывать на эмуляторе - может и взлетит, только или памяти будет жрать дохера или MMU будет работать медленно.
    А если пихать в FPGA - более чем уверен, что или не влэзит (памяти там все токи чуть меньше, чем недохера) или MMU будет тормозить аки Конь Древний На Борозде

    - - - Добавлено - - -

    И поскольку я опять запутался в терминах Патрона, определение моих терминов (может, DEC использует свои, более правильные - но я их щас вспомнить не могу, а лезть в доки лень)
    Окно в виртуальном адресном пространстве - грубо говоря - начиная с какого виртуального адреса и сколько отобразить на физический адрес.
    С какого - с границы 8 кб
    Сколько - от 64 байт до 8 кб.
    Почему с границы 8 кб - потому что регистров-описателей (регистров базы) - всего восемь
    Почему от 64 байт (100 в восьмеричном) - потому что MMU берет содержимое регистра PAR (16 бит) (номер регистра - старшие три бита виртуального адреса - номер окна) сдвигает его влево на шесть бит (и вот вылез минимальный блок в 64 байта) (теперь 22 бита, младшие шесть - нули), берет виртуальный адрес (16 бит), режет старшие три бита (номер окна) (на самом деле ничего он не режет - просто берет младшие 13 бит) и складывает, формируя физический адрес (22 бита)
    Сколько отобразили - ЕМНИП - в PDR - как количество 64 байтных блоков

    - - - Добавлено - - -

    С ваксами в живую дело не имел - поэтому как оно там - даже с памятью-изменщицей не скажу - надо листать талмуды. Но учитывая наличие режима совместимости - видимо не кардинально отличающееся

  6. #35
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    62 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    У DEC режим супервизора - это не режим пульта! Это третий режим работы - типа пользовательского со своим набором PAR/PDR.
    А в 32-разрядном режиме - это режим пульта. Другие варианты организации режима пульта: 1) микропрограмма в CPU; 2) специальный контроллер режима пульта с поддержкой в CPU; 3) железный пульт. Отдельная мода пульта выглядит на порядок проще любого другого варианта.


    Цитата Сообщение от Hunta Посмотреть сообщение
    Окно в виртуальном адресном пространстве - грубо говоря - начиная с какого виртуального адреса и сколько отобразить на физический адрес.
    С какого - с границы 8 кб
    Сколько - от 64 байт до 8 кб.
    Почему с границы 8 кб - потому что регистров-описателей (регистров базы) - всего восемь
    Почему от 64 байт (100 в восьмеричном) - потому что MMU берет содержимое регистра PAR (16 бит) (номер регистра - старшие три бита виртуального адреса - номер окна) сдвигает его влево на шесть бит (и вот вылез минимальный блок в 64 байта) (теперь 22 бита, младшие шесть - нули), берет виртуальный адрес (16 бит), режет старшие три бита (номер окна) (на самом деле ничего он не режет - просто берет младшие 13 бит) и складывает, формируя физический адрес (22 бита)
    Сколько отобразили - ЕМНИП - в PDR - как количество 64 байтных блоков
    А какими кусками свопить? Если кусками по 4Мб, которых в 32-битном адресном пространстве всего 1024 - то интел с 1М страниц по 4Кб выглядит в 1024 раза более экономно. Если свопить кусками по 8Кб, которых в 4Гб будет 512К, то предлагается ли для каждого из 512 тысяч этих 8Кб окон иметь собственную пару PAR/PDR? А если нет - то как определить, какое из окон уже в памяти, а какое ещё надо загрузить из свопа?

    В том и дело, что концепция PAR/PDR плохо масштабируется для перехода от 16-разрядного пространства без свопа к 32-разрядному со свопом.

    - - - Добавлено - - -

    Идею виртуальных пространств со свопом можно показать на простом примере. Допустим, у нас есть архитектура с адресным пространством из 10 адресов, работающая на машне с 3 адресами физического ОЗУ и 10 адресами свопа. Когда программа заказывает выделение памяти в 10 адресов - операционка возвращает указатель на первый адрес.

    Потом программа начинает загружать данные в память.

    Для виртуального адреса 0 MMU выделяет физический адрес 0
    Для виртуального адреса 1 MMU выделяет физический адрес 1
    Для виртуального адреса 2 MMU выделяет физический адрес 2
    Для виртуального адреса 3 MMU выгружает адрес 0 в своп по адресу 0 и выделяет физический адрес 0
    Для виртуального адреса 4 MMU выгружает адрес 1 в своп по адресу 1 и выделяет физический адрес 1
    Для виртуального адреса 5 MMU выгружает адрес 2 в своп по адресу 2 и выделяет физический адрес 2
    Для виртуального адреса 6 MMU выгружает адрес 0 в своп по адресу 3 и выделяет физический адрес 0
    Для виртуального адреса 7 MMU выгружает адрес 1 в своп по адресу 4 и выделяет физический адрес 1
    Для виртуального адреса 8 MMU выгружает адрес 2 в своп по адресу 5 и выделяет физический адрес 2
    Для виртуального адреса 9 MMU выгружает адрес 3 в своп по адресу 6 и выделяет физический адрес 0

    Потом программа читает данные из памяти.

    Для виртуального адреса 0 MMU выгружает адрес 0 в своп по адресу 9 и загружает из свопа адрес 0 по адресу 0
    Для виртуального адреса 1 MMU выгружает адрес 1 в своп по адресу 7 и загружает из свопа адрес 1 по адресу 1
    Для виртуального адреса 2 MMU выгружает адрес 2 в своп по адресу 8 и загружает из свопа адрес 2 по адресу 2
    Для виртуального адреса 3 MMU выгружает адрес 0 в своп по адресу 0 и загружает из свопа адрес 3 по адресу 0
    Для виртуального адреса 4 MMU выгружает адрес 1 в своп по адресу 1 и загружает из свопа адрес 4 по адресу 1
    Для виртуального адреса 5 MMU выгружает адрес 2 в своп по адресу 2 и загружает из свопа адрес 5 по адресу 2
    Для виртуального адреса 6 MMU выгружает адрес 0 в своп по адресу 3 и загружает из свопа адрес 6 по адресу 0
    Для виртуального адреса 7 MMU выгружает адрес 1 в своп по адресу 4 и загружает из свопа адрес 7 по адресу 1
    Для виртуального адреса 8 MMU выгружает адрес 2 в своп по адресу 5 и загружает из свопа адрес 8 по адресу 2
    Для виртуального адреса 9 MMU выгружает адрес 3 в своп по адресу 6 и загружает из свопа адрес 9 по адресу 0

  7. #36
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,007
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    А в 32-разрядном режиме - это режим пульта
    Если начинать ТАК жонглировать терминами - мы застрянем в самом начале!
    В PDP-11 (от которого мы пляшем - это не режим пульта. Нужен режим пульта - так и пусть будет режим ПУЛЬТА!
    Цитата Сообщение от Patron Посмотреть сообщение
    А какими кусками свопить?
    Зачем свопить?? У нас что - оперативка по 10 баксов за байт???

  8. #37
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    62 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Нужен режим пульта - так и пусть будет режим ПУЛЬТА!
    Предлагается, чтобы после включения питания - мода супервизора была замаплена на 4Гб адресов внешних устройств, где по адресу 0 начинается пультовое ПЗУ. В принципе - загруженная операционка может позже эту моду перемапить, чтобы установить собственный обработчик исключительных ситуаций, но при сбросе питания и обнулении ОЗУ - мапинг моды супервизора на пространство ввода-вывода автоматически восстанавливается.


    Цитата Сообщение от Hunta Посмотреть сообщение
    Зачем свопить?? У нас что - оперативка по 10 баксов за байт???
    Когда у нас есть два процесса, каждый из которых имеет доступ к собственному виртуальному адресному пространству 4Гб, то в общем случае без свопа не обойтись даже на машине с 4Гб ОЗУ. А если у нас 64 процесса или 1024 процесса - тогда и подавно. Поэтому 32-разрядные архитектуры изначально проектируют со свопом.

  9. #38
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,007
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    мода супервизора
    Пульта!!
    Цитата Сообщение от Patron Посмотреть сообщение
    два процесса
    Цитата Сообщение от Patron Посмотреть сообщение
    виртуальному адресному пространству 4Гб
    Операционка будет выделять программе 4 гига оперативки, даже если программе нужно 100 байт???

  10. #39
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    123
    Поблагодарили
    62 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Пульта!!
    Если даже перемапленная с пультового ПЗУ в ОЗУ мода обработки исключительных ситуаций больше похожа на "моду пульта" - пусть будет мода пульта.


    Цитата Сообщение от Hunta Посмотреть сообщение
    Операционка будет выделять программе 4 гига оперативки, даже если программе нужно 100 байт???
    Архитектуры со свопом могут работать гораздо быстрее, чем без свопа, потому что операционка получает возможность запускать на выполнение файлы любого размера, просто помечая их как "временные файлы подкачки" и без загрузки файла в память - просто передавая управление на "смотрящий в пустоту" стартовый адрес. Тогда во время исполнения программы в память попадут только те страницы файла исполняемой программы, куда будут происходить переходы и вызовы в коде.

    За счёт этого гигабайтные файлы стартуют на выполнение за доли секунд, тогда как при отсутствии в архитектуре свопа - их надо или целиком загружать в память, или использовать убогую концепцию оверлеев.

  11. #40
    Guru
    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,007
    Спасибо Благодарностей отдано 
    288
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    531 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    пусть будет мода пульта.
    Человек читает - основана на архитектуре PDP-11. Человек читал доку по PDP-11 и он знает, что такое режим супервизора на PDP-11. Человек видит - мода супервизора... Профит!

    Цитата Сообщение от Patron Посмотреть сообщение
    Архитектуры со свопом могут работать гораздо быстрее
    Цитата Сообщение от Patron Посмотреть сообщение
    просто помечая их как "временные файлы подкачки" и без загрузки файла в память - просто передавая управление на "смотрящий в пустоту" стартовый адрес. Тогда во время исполнения программы в память попадут только те страницы файла исполняемой программы, куда будут происходить переходы и вызовы в коде.
    Назовём единицу выделения памяти (и подкачки) - страницей.

    Только здесь. Больше нигде (я уже начинаю запутываться в терминах, значение которых отлично от тех, к которым я привык в доках по PDP-11)

    Операционка пометила запускаемую программу как временный файл подкачки (кстати, в Windows аналогичный механизм носит название - файл, отображённый в память, что позволяет легко обойтись без специальных пометок, что бы не дай бог не вмешался диспетчер файла подкачки и не выгрузил в наш (временный) файл подкачки что то ещё) и передала управление на нулевую страницу - пусть там стартовый адрес. Что происходит дальше.

    Операционка - я передаю управление на страницу 0
    MMU - упс, памяти нет - подгружаем.
    Программа - я передаю управление на страницу 20
    MMU - упс, памяти нет - подгружаем.
    Программа - я передаю управление на страницу 21
    MMU - упс, памяти нет - подгружаем.
    Программа - я передаю управление на страницу 100
    MMU - упс, памяти нет - подгружаем.
    Программа - я передаю управление на страницу 101
    MMU - упс, памяти нет - подгружаем.
    Программа - я передаю управление на страницу 120
    MMU - упс, памяти нет - подгружаем.
    Программа - я передаю управление на страницу 12
    MMU - упс, памяти нет - подгружаем.
    Программа - я передаю управление на страницу 45
    MMU - упс, памяти нет - подгружаем.
    ....

    Пусть размер программы - 150 страниц.

    Вы серьёзно думаете, что в 150 запросов чтения по странице выполнятся быстрее, чем один, читающий 150 страниц за раз? (помните, у нас памяти сейчас у нас... как грязи)

Страница 4 из 18 ПерваяПервая 12345678 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Fuzebox - полностью открытая 8-битная игровая приставка
    от CityAceE в разделе Зарубежные компьютеры
    Ответов: 22
    Последнее: 09.03.2017, 15:35
  2. MSX и EPSON-совместимый принтер
    от ipkin в разделе MSX
    Ответов: 3
    Последнее: 01.12.2011, 19:23
  3. Ответов: 5
    Последнее: 20.06.2011, 03:18
  4. Собрал комп полностью своими руками
    от scooby-do в разделе Зарубежные компьютеры
    Ответов: 14
    Последнее: 27.06.2009, 11:25
  5. Куплю ZX совместимый компьютер.
    от billgilbert81 в разделе Барахолка (архив)
    Ответов: 19
    Последнее: 05.12.2008, 20:33

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •