Важная информация

User Tag List

Страница 12 из 18 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя
Показано с 111 по 120 из 180

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

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Нет смысла
    Цитата Сообщение от Patron Посмотреть сообщение
    Гораздо проще
    Как нибудь сам.
    Цитата Сообщение от Patron Посмотреть сообщение
    Наличие в архитектуре отдельного 32-разрядного процессора
    И додумывать за меня не надо - я (пока) вообще не говорил - будет ли это один, будет ли их два, будет ли это аппаратная, будет ли это программная.
    Вот руки дойдут (после того, как будут финансы на FPGA и после того как для начала посмотрю сам - чего оно там внутри и сделаю PDP-11 на FPGA) - тогда и буду детали прорабатывать. Когда будет понятно - чего и как умеет платформа реализации.

    А может и не дойдут руки - забот хватает и без хобби

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

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Вот руки дойдут (после того, как будут финансы на FPGA и после того как для начала посмотрю сам - чего оно там внутри и сделаю PDP-11 на FPGA) - тогда и буду детали прорабатывать.
    Но сделать сначала программный эмулятор (на мой взгляд) тоже полезно. Во всяком случае - благодаря данному обсуждению стало гораздо понятнее, какой может быть архитектура 32-разрядного процессора, максимально совместимого с PDP-11.

    Если смотреть с точки зрения программного эмулятора, то на первом этапе проще реализовать 32-разрядного "наследника" процессора 1801ВМ2. Без диспетчера памяти, но с раздельными адресными пространствами ( т.е. "модами") системы и пульта. С 32-разрядными легаси-командами, без поддержки 16-разрядного кода. С плоским адресным пространством 4Гб, условно разбитым на страницы по 4Мб, в старшей из которых видно старшие 4Мб моды пульта со страницей ввода-вывода. Если первый блок памяти 512Кб отдать под область векторов и начального стека, то перекомпилированная RT-11 вполне должна нормально работать даже в конфигурации всего с двумя блоками памяти по 512Кб. Правда, ещё какое-то количество отдельного ОЗУ нужно для нормальной работы ПЗУ пульта.

  3. #113
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    371
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Нет смысла иметь в 32-разрядном процессоре отдельное 16-разрядное ядро для отдельного 16-разрядного режима работы.
    Хунта грубиян ! (модераторы такое общение допускают, а это плохо!)
    (пусть ка в секте Воланда идёт грубить посмотрим как его там местное армянское радио округлит)

    У меня по теме вопрос! Patron, а в чём разница ядро-16 или сопроцессор-16 если средства передачи управления
    будут примерно одинаковы? Ядро-16 должно ведь быстрее работать (интеграция,миниатюризация )? То есть софт
    то всё равно не поймёт разницы? Вот этот момент мне как не профи не совсем понятен. Тема очень интересная.
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

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

    По умолчанию

    Цитата Сообщение от hobot Посмотреть сообщение
    а в чём разница ядро-16 или сопроцессор-16 если средства передачи управления будут примерно одинаковы?
    Разница в том, что при реализации в FPGA проще (на мой взгляд) иметь отдельный эмулятор (например) PDP-11/70, который работает при переключении архитектуры в чистый 16-разрядный режим, и отдельный эмулятор нового 32-разрядного процессора, который работает только в 32-разрядном режиме.

    Софт для PDP-11 никогда не поймёт разницы, так же, как он не понимает разницы при запуске в программном эмуляторе PDP-11 под Windows. Разница есть только с точки зрения сложности разработки аппаратуры - какие функции есть смысл реализовать в FPGA 32-разрядного процессора, какие - в FPGA 16-разрядного сопроцессора, а какие - чисто программно.

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

    По умолчанию

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

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

    Цитата Сообщение от hobot Посмотреть сообщение
    Хунта
    Да да, меня Хунтой зовут

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

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    если чем и поможет эмулятор - отладкой софта на этапе, когда FPGA варианта ещё нет
    Без простого эмулятора архитектуры и системы команд - даже стартовое ПЗУ сделать трудновато, потому что вряд ли реально программировать, когда для отладки скомпилированного кросс-системой кода его надо каждый раз грузить в голое железо или как-то запускать в симуляторе HDL. А портировать операционку без эмулятора - это ( на мой взгляд ) вообще фантастика.

    Проще представить успешную реализацию в железе архитектуры, для которой уже есть эмулятор и солидный набор портированного ПО, чем успешную реализацию архитектуры, на которой ни разу не выполнялась ни одна программа и непонятно, как их писать и отлаживать.
    Последний раз редактировалось Patron; 17.09.2017 в 22:55.

  7. #117
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,582
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    283
    Спасибо Благодарностей получено 
    236
    Поблагодарили
    185 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Если библиотечный модуль обращается к произвольным внешним адресам - его универсальная работоспособность на всех архитектурах и во всех операционках PDP-11 также не гарантирована. Если библиотечный модуль не осуществляет косвенных обращений за пределы собственного сегмента данных -
    - то всё равно никакой гарантии дать нельзя!

    Цитата Сообщение от Patron Посмотреть сообщение
    такие обращения будут осуществляться 32-разрядным кодом точно так же, как и 16-разрядным.
    что такое "точно так же", конкретней можно?
    принудительно всегда по 16 бит? поломается модифицируемый код!
    всегда по 32 битным словам? поломаются побайтовые проходы!
    Прихожу без разрешения, сею смерть и разрушение...

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

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    - то всё равно никакой гарантии дать нельзя!
    Когда по условию задачи заранее известно, что код обращается к данным ( например - к строке байтов ) и известен размер обращения ( из кода команды ) - возможность обращения к тем же данным с тем же размером гарантирована.


    Цитата Сообщение от Lethargeek Посмотреть сообщение
    что такое "точно так же", конкретней можно?
    Точно так же - значит с таким же размером. Если 16-разрядный код обращается к байту, то и 32-разрядный обращается к байту, если 16-разрядный код обращается к 16-разрядному слову, то и 32-разрядный код обращается к 16-разрядному слову.


    Цитата Сообщение от Lethargeek Посмотреть сообщение
    принудительно всегда по 16 бит? поломается модифицируемый код!
    всегда по 32 битным словам? поломаются побайтовые проходы!
    Модифицируемый код точно не поломается, если его не использовать. Приведите пример библиотечного модуля с самомодифицируемым кодом - вряд ли такие вообще есть. А ведь чтобы попасть в адресное пространство 32-разрядного процесса - 16-разрядный код должен быть прилинкован к 32-разрядной программе из 16-разрядной библиотеки.

    Под модифицируемым кодом имеется в виду код, изменяющий первое слово команды, а не второе или третье. Если запись идёт во второе или третье слово команды - такой "модифицируемый код" без проблем автоматически превращается в 32-разрядный.

    Байтовые обращения к данным не могут поломаться, потому что и 16-разрядная, и 32-разрядная архитектуры обращаются к 8-разрядным и 16-разрядным данным одинаково. Разница только в обращении к коду. У 16-разрядного кода обращение к коду 16-разрядное, а у 32-разрядного кода обращение к коду 32-разрядное.
    Последний раз редактировалось Patron; 17.09.2017 в 23:04.

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

    По умолчанию

    Пара мыслей на тему виртуализации PDP-11 в 32-разрядном режиме.

    32-разрядная архитектура вводит дополнительные 8 номеров регистров. При обсуждении виртуализации эти дополнительные регистры удобно называть RR0..RR7. Переход в режим виртуализации PDP-11 возможен только из 32-разрядного режима. Для этого надо загрузить в RR7 адрес таблицы виртуализации и выполнить Extended Legacy команду DO16 ( это может быть легаси-команда IOT с установленным битом Extended в старшем слове 32-разрядного кода команды ). При переходе в режим 16-разрядной виртуализации в PSW устанавливается специальный бит VM, позволяющий обрабатывать реальные прерывания с возвратом в режим виртуализации. В таком случае, при входе в прерывание - в стеке вместо 32-разрядного PC сохраняется адрес таблицы виртуализации. Логично, если в начале таблицы виртуализации будет содержаться 32-разрядный код команды JMP @(PC)+, а в следующей 32-разрядной ячейке таблицы будет сохранён адрес следующей команды после DO16. Тогда, если в ходе обработки прерывания будет сброшен флаг VM в сохранённом значении PSW - выход из прерывания приведёт к выходу из виртуализации в прерванном коде. Это может быть полезным при зависании 16-разрядного кода.

    В режиме виртуализации младшие слова регистров RR выполняют роль 16-разрядных R0..R7, старшее слово RR6 играет роль 16-разрядного PSW, а в старшем слове RR7 содержится код текущей исполняемой команды. При выходе/вылете из режима виртуализации по любой причине - выполнение кода 32-разрядного режима продолжается с команды, следующей за DO16, а содержимое RR6 и RR7 остаётся таким же, каким было в момент выхода/вылета из виртуализации. Судьба содержимого других регистров зависит от флагов в таблице виртуализации, в которой также может сохраняться содержимое RR0..RR6, имевшееся на момент вызова.

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

    Если бит VM будет установлен в загружаемом PSW из вектора прерывания, а сохраняемое значение PSW не содержит установленного бита VM - то для возврата из 16-разрядного обработчика в прерванный 32-разрядный код - в начале таблицы виртуализации, адресуемой вторым 32-разрядным значением из вектора прерывания - должна находиться команда RTI. Тогда любой выход/вылет из 16-разрядного обработчика реального прерывания приведёт к возврату в прерванный 32-разрядный код.

    Если бит VM будет установлен в загружаемом PSW из вектора прерывания и сохраняемое значение PSW также содержит установленный бит VM ( т.е. выполнение 16-разрядного кода было прервано реальным прерыванием с переходом в 16-разрядный обработчик ) - для возврата из 16-разрядного обработчика в прерванный 16-разрядный код - в начале таблицы виртуализации, адресуемой вторым 32-разрядным значением из вектора прерывания - также должна находиться команда RTI.

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

    Но в принципе - обрабатывать реальные "32-разрядные" прерывания виртуализованным 16-разрядным кодом - это уже за гранью добра и зла, поэтому проще запретить установку бита VM из вектора прерывания. Тогда для установки бита VM останутся только два способа - команда DO16 и команды RTI / RTT, загружающие в PSW содержимое с битом VM. Разница между этими способами в том, что при выполнении команды DO16 процессор сохраняет значение PC по смещению +4 от начала таблицы виртуализации ( и если надо - сохраняет в таблице виртуализации содержимое RR0..RR5 ), а при выполнении команд RTI / RTT содержимое таблицы виртуализации не меняется.

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

    Всего возможны четыре уровня сложности виртуализации PDP-11:

    1. Виртуализация PDP-11 невозможна. Команда DO16 вызывает Trap_10. Бит VM в PSW всегда нулевой.
    2. Виртуализация приложений PDP-11. Без поддержки виртуальной страницы ввода-вывода и виртуальных прерываний.
    3. Виртуализация 16-разрядной архитектуры PDP-11. С поддержкой виртуальной страницы ввода-вывода и виртуальных прерываний.
    4. Виртуализация 22-разрядной архитектуры PDP-11. С поддержкой виртуальной страницы ввода-вывода, виртуальных прерываний и виртуального диспетчера памяти.

    Реализация виртуализации PDP-11 максимального уровня сложности - потребует не меньше ресурсов FPGA, чем требуется (например) для полноценной эмуляции в FPGA чего-то вроде PDP-11/70 со всеми контроллерами эмулируемых внешних устройств. В идеале - стандарт должен предлагать рабочие модели всех четырёх вариантов виртуализации, а уже пользователь будет решать, какой из вариантов реализовать в железе.
    Последний раз редактировалось Patron; 18.09.2017 в 17:47.

  10. #120
    Member
    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Lethargeek, до меня дошло как командами "условного" pdp32 выполнять код для "условного" pdp16. Делается три блока:
    1) "pdp16" в котором лежит код и данные эмулируемой системы.
    2) "pdp32" из которого осуществляется выборка кода pdp32
    3) "emu32" в котором будет жить "переводчик"
    Каждому слову(16бит) в блоке pdp16(или байту если команды могут начинаться с нечётных адресов) будет соответствовать слово(32бита) в блоке pdp32. Изначально слова в блоке pdp32 обнулены и попытка их выполнения вызывает исключение, по которому будет вызван переводчик из блока emu32. Переводчик смотрит какая команда pdp16 должна была быть выполнена, помещает её эквивалент в блок pdp32 и возвращается из исключения. Далее будет выполнен эквивалент требуемой команды, после чего будет предпринята попытка выполнения следующей.
    Для поддержки самомодифицирующегося кода при записи байта/слова в блок pdp16 соответствующее слово из блока pdp32 будет обнуляться, и если исполнение дойдёт до такой команды, то снова будет вызван переводчик. Или можно прицепить ко всем связанным ячейкам(слово pdp16 - слово pdp32) признак "был доступ"(еще одна область памяти), устанавливающийся при записи слова в блок pdp16 и сбрасываются при записи соответствующего слова в блок pdp32(переводчиком), ну а при выполнении исключение будет вызываться в зависимости от даннного признака.
    Если некоторые команды pdp16 не имеют простых эквивалентов среди команд pdp32, то на её место просто ставится вызов подпрограммы. Если ситуация совсем запущенная и мы хотим эмулировать что-то сильно непохожее на pdp32, то либо везде ставим вызовы подпрограмм или на каждый байт/слово просто выделяем больше(2,4,8) слов в блоке pdp32, чтобы в такой блок влезал эквивалент большинства эмулируемых команд.
    При наличии нормального механизма виртуальной памяти для блока pdp32 нужно будет зарезервировать адреса, а выделять память только для тех страниц, код из которых реально исполняется. Ну а когда памяти становится маловато, страницы блока pdp16 можно выгружать, а перевод из блока pdp32 просто грохнуть, поскольку потом мы его легко восстановим.

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

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

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

Эту тему просматривают: 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

Ваши права

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