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

User Tag List

Страница 1 из 18 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 180

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

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

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

    ..

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

    Первое, что приходит в голову - 22-разрядная и 32-разрядная архитектуры памяти не должны пересекаться по масштабу, поэтому минимальный блок распределяемого 32-разрядного адресного пространства должен иметь размер 222 ( 4 Mb ), а значит - режимы доступа и другие атрибуты распределяемой памяти должны задаваться для регионов, состоящих из целого числа таких блоков. 16-разрядные регионы возможны двух типов - совмещённых программ и данных ( размером 1 блок ) и разделённых программ и данных ( размером 2 блока ). Размер создаваемого 16-разрядного региона автоматически задаёт его тип. 32-разрядные регионы могут быть только совмещённого типа, поэтому непосредственные данные 32-разрядного кода всегда находятся вперемешку с кодами команд.

    Количество 16-разрядных регионов не ограничено, поэтому страница ввода/вывода каждого такого региона эмулируется процессором ( с возможностью мапить отдельные адреса ввода-вывода на совместимые устройства реальной 32-разрядной шины ).


    Каждому 32-разрядному процессу выделяются все 232 байтов виртуальной памяти. Номер выполняемого процесса задаётся в PSW и называется "мода":



    Нулевой процесс имеет особые привилегии и выполняется в адресном пространстве KERNEL-моды. Максимальное число процессов составляет: 256*3 = 768 ( из-за недопустимости номера моды 2 - все 256 номеров, оканчивающихся на 2, выпадают ).


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

    ...

    Первый 4Мб блок адресного пространства KERNEL-моды содержит вектора прерываний и начальный KERNEL-стек, последний 4Мб блок KERNEL-моды содержит блок ввода-вывода со стартовым ПЗУ и регистрами внешних устройств.

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

    ...

    При выполнении команд процессор предъявляет только одно требование к выравниванию кода - команды должны начинаться с чётных адресов. 16-разрядные команды могут содержать от 1 до 3 = 16-разрядных слов с одним словом кода команды, 32-разрядные - от 1 до 6 ( или более? ) 16-разрядных слов с одним или двумя словами кода команды.

    Размер поля 32-разрядной команды увеличивается ( по сравнению с 16-разрядной командой ) с 3 до 4 битов, поэтому помимо регистров R0..R7 появляются ещё 8 регистров, назначение которых предстоит определить. Также появляются 7 дополнительных способов адресации ( каких? ). 8-й набор битов адресации ( например ^b1111 ) резервируется. В позиции источника ( т.е. для битов 15,14,13,12 ) такой набор является признаком отсутствия у кода команды второго слова. В результате - однословные команды имеют 15 вариантов с использованием младшего байта ( в качестве кода приёмника или байтовой константы ) и дополнительно - 256 вариантов однобайтовых команд.

    Двухсловные команды могут задавать размер отдельно источника и приёмника в 1, 2 или 4 байта - для чего выделяются младшие 4 бита второго слова команды ( по два бита на размер источника и размер приёмника ). Поле позволяет задавать также размер источника и/или приёмника в 8 байтов, но в текущей реализации это недопустимо. Остаток даёт 4095 различных команд с источником и приёмником и дополнительно ( для кодов команд с единицей в старшем разряде второго слова ) - более 4000000 команд, не удовлетворяющих стандарту PDP-11 на кодирование источника и приёмника.

    ...

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

    Если дополнительные способы адресации будут предусматривать использование индексных регистров - ещё два регистра надо отдать для индексного регистра источника и индексного регистра приёмника. Остаются три регистра - R8, R9, R10 ( или RA ? ), которые можно использовать как дополнительные регистры общего назначения. Если конкретная программа не использует индексную адресацию - индексные регистры также могут использоваться ею в качестве регистров общего назначения. При косвенной адресации относительно индексного регистра - регистр базы данных используется так же, как и при косвенной адресации относительно обычных регистров.

    Регистры базы могут непосредственно использоваться в команде только с режимом адресации 00.
    Последний раз редактировалось Patron; 31.08.2017 в 16:47.

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

  3. #2
    Guru Аватар для MiX
    Регистрация
    13.12.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    3,065
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    74
    Поблагодарили
    62 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    32-разрядный процессор, полностью совместимый с архитектурой PDP-11.
    Теперь эмуляцию КЦГД точно не дождаться.

  4. #3
    Guru Аватар для CodeMaster
    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,225
    Спасибо Благодарностей отдано 
    139
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    182 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от MacBuster Посмотреть сообщение
    каким образом и какими средствами предполагается писать для него ПО?
    На первом этапе - только кросс-компиляция под Windows. Где-то ( если не ошибаюсь ) есть порт MACRO-11 на C++, поэтому его надо переделать на генерацию 32-разрядного кода PDP-11.

    Если на первом этапе не торопиться с выдумыванием новых методов адресации и не использовать дополнительные регистры - тогда для написания 32-разрядного кода стартового ПЗУ, позволяющего создавать 16-разрядный регион и запускать в нём любую операционку PDP-11 - надо (в основном) определиться с механизмом управления регионами адресов и создать спецификацию RMU ( 32bit Region Menegment Unit ).

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

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    А зачем? Не в смысле нафига козе баян, а какие плюшки и для чего это даст? Или просто чтоб было?
    В железе такое могут реализовать только те, кому (по каким-то причинам) такое ОЧЕНЬ надо. Мне такое даром не надо. Однако, полезно максимально отчётливо представлять, как такое чудо могло бы выглядеть и работать. А когда максимально отчётливое представление есть - написать эмулятор можно за пару дней ( хотя мне такой эмулятор тоже даром не нужен ).

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

    По умолчанию

    Возможность прямо указывать размер источника и приёмника порождает любопытные следствия:

    1. Можно выбирать - расширять или нет знак передаваемого байта/слова, как при пересылке в регистр, так и при пересылке в память. Для пересылки без расширения знака нужно использовать одинаковый размер источника и приёмника ( MovB == MovBB ; MovW == MovWW ; MovD == MovDD ). При пересылке с "расширением данных" ( режимы BW, BD и WD ) - старшие байты приёмника заполняются знаком источника. Выравнивание проверяется отдельно для каждого операнда, поэтому у команд MovBW и MovBD - первый операнд ( байт == B ) не требует выравнивания, а второй ( слово == W или двойное слово == D ) должен быть выровнен по границе слова.

    2. При источнике-регистре - запрещённые режимы "сжатия данных" WB, DB и DW могут использоваться для чтения старшего байта первого слова регистра ( при режиме WB ), старшего байта второго слова регистра ( при режиме DB ) или старшего слова регистра ( при режиме DW ).

  7. #6
    Moderator Аватар для MM
    Регистрация
    20.04.2013
    Адрес
    г. Павловский Посад
    Сообщений
    4,133
    Спасибо Благодарностей отдано 
    470
    Спасибо Благодарностей получено 
    519
    Поблагодарили
    412 сообщений
    Mentioned
    42 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А может для начала сделать макетик на 1839ВМ1 с СОЗУ вместо ПЗУ микрокоманд, для "тренировке на кошках" ?
    *
    Если для чистого новодела - целесообразно страничку BS7 оставить в неприкосновенности, 8 кбайт...
    Блог : http://collectingrd.kxk.ru/ . В ЛС прошу не писать, все сообщения [email protected]

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

    По умолчанию

    Биты моды фактически задают номер 32-разрядного раздела ( объёмом 4Гб ) в общем 42-разрядном адресном пространстве (объёмом 4Тб). Понятно, что столько физического ОЗУ вряд ли кто-то воткнёт, поэтому объём физически доступной виртуальной памяти ограничен только объёмом SSD своп-диска ( для которого 4Тб уже не фантастика ). Возможно, учитывая проблемы с запрещённым номером моды, есть смысл выделить всю моду супервизора в качестве 4Гб "страницы ввода-вывода". Тогда объём теоретически доступной виртуальной памяти сократится до 241 (максимальный объём своп-диска = 2Тб).

    Поскольку операционная система ( живущая в KERNEL-моде ) должна загружать программы и данные в любую моду - очевидно, что система управления регионами должна позволять подключать регионы одной моды в другую. В такой ситуации логично предположить, что после включения питания - управление передаётся на адрес 0000 моды супервизора, где расположено стартовое ПЗУ, которое (в случае загрузки 32-разрядной операционной системы) - мапит младший 4Мб блок моды супервизора в одноблочный регион ввода-вывода в старших 4Мб KERNEL-моды.

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

    По умолчанию

    Цитата Сообщение от MM Посмотреть сообщение
    А может для начала сделать макетик на 1839ВМ1 с СОЗУ вместо ПЗУ микрокоманд, для "тренировке на кошках" ?
    *Если для чистого новодела - целесообразно страничку BS7 оставить в неприкосновенности, 8 кбайт...
    Многие процессоры до их воплощения в железе были реализованны в софтовом виде (тот же pdp11/20 в желе имел дефекты и пришлось патчить софтовый эмуль на котором обкатывали первый софт для pdp11 пока самих железных pdp11/20 было всегото десяток). Без рабочей просчитанной софтовой модели вообще не стоит лезть в железо. И еще один момент, если модель показывает что тактов требуется на выполнение больше чем в ВМ3 то такой процессор никому не нужен, в новом процессоре все команды должны занимать меньше тактов чем в ВМ3. При первом переносе в "железо" логичнее использовать доступный 5v FPGA (acex ?) чем недоступный простым смертным советский 1839ВМ1.

    По изложенному выше, можно только судить об крайней сырости идей по переделке j11 в такой себе "j11/32" (причем явно навевает аналогия с 8086->80286/386). Тут надо понимать что процессор должен проектироваться так чтобы работать с как можно меньшим реально доступным обьемом ОЗУ, при этом создавая для процессов ВСЕ режимы j11 + 32bit режим в котором можно использовать кроме всего того что есть в j11 еще и 32bit aдресацию!!! Довольно сложная задача создать такую модель. По поводу предложенного увиличения количества регистров: это сразу затормозит сохранение контекста вдвое...
    Последний раз редактировалось bigral; 01.09.2017 в 14:58.

  10. #9
    Master Аватар для svinka
    Регистрация
    18.02.2016
    Адрес
    г. Москва
    Сообщений
    618
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    И еще один момент, если модель показывает что тактов требуется на выполнение больше чем в ВМ3 то такой процессор никому не нужен, в новом процессоре все команды должны занимать меньше тактов чем в ВМ3
    Это смотря какая тактовая

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

    По умолчанию

    Цитата Сообщение от svinka Посмотреть сообщение
    Это смотря какая тактовая
    тактовая всегда максимально возможная для текущего уровня техпроцесса

Страница 1 из 18 12345 ... ПоследняяПоследняя

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

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

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

Ваши права

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