User Tag List

Показано с 1 по 10 из 180

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    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

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

  3. #2

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  4. #3

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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


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

  5. #4

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  6. #5

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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


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

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

  7. #6

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    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 страниц за раз? (помните, у нас памяти сейчас у нас... как грязи)

  8. #7

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,805
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    Возможно не все знают, что программа DIR в RT-11 v5.0 стала оверлейной не потому, что не лезла в память, а для того, чтобы при обычном просмотре каталога с диска считывались только первые блоки программы и лишь при использовании различных экзотических режимов - подгружался оверлей, обрабатывавший дополнительные ключи запуска.

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

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

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

Похожие темы

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

Ваши права

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