С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Все проще. Диспетчер памяти к PDP-11 прикрутили слишком сбоку - почти без вмешательства в аппаратуру процессора, и, поэтому, у программы нет средств нормального манипулирования длинными адресами. Вспомните х86*16. У него есть команды дальнего перехода, дальнего вызова подпрограммы, дальней косвенной адресации... То есть, при помощи специальных команд ЦП доступно все адресное пространство, все данные для этого содержались в регистрах процессора, при переключении задач они входили в контекст сохранения/восстановления. А здесь до этого не догадались, ДП прикрутили сбоку, как внешнее устройство, систему команд оставили, практически, прежней, а ей доступно только 64К. То есть, конечно, можно сделать что-то подобное, используя ресурсы ОС, что в некотором роде и сделали. Но это, прежде всего, долго, "на лету" не сделаешь. То есть, допустим, не сделаешь последовательный вызов нескольких дальних подпрограмм из быстрого цикла, поскольку он перестанет быть быстрым - вызов ОС для переключения - это не одна машинная команда, как в х86. Пусть и не самая быстрая...
С другой стороны, такая модификация системы команд отправила бы лесом бОльшую часть наработанного до этого... ИМХО.
- - - Добавлено - - -
Да, умелое планирование оверлеев и правильное размещение данных позволяет решать многое, но это надо напрягаться программисту, тогда, как при наличии расширенной системы команд (как в х86, допустим) с этим справляются компиляторы.
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Это если из системы, которая сама управляет MMU - типа XM монитора или RSX. Если прога сама будет управлять MMU - всё несколько быстрее и можно даже проимитировать дальние вызовы и возвраты, но ценой поддержки транслятором или программистом и всё равно это будет достаточно медленно.
И ещё надо учесть факт, что PDP создавались изначально даже не во времена "640 кб хватит всем", память была крайне дорогой, процессор то же не за фантики можно было купить, плюс конкуренция по цене (с той же IBM), поэтому делали не "машину мечты", а то, что будет неплохим и хорошо продающимся. Ну и если вдруг памяти мало, а буратино попался богатым, можно было взять проц (корзина с платами), воткнуть в него (в корзину) ещё плату, (возможно) переставить перемычки и вуаля - у нас уже 248 кб (а то и 4 мб) памяти. А не нужно было столько памяти или буратино просадил все свои сольдо - продаём базовый процессор подешевле, ну а если вдруг сольдо таки найдутся - продаём доп плату и все. Так что не фига он там не был прикручен
- всё было очень логично - с точки зрения ведения бизнеса, а не хотелок людей из 21 века
И точно так же сделали FPP
И кстати - это сейчас, когда всё упаковано в одну две микросхемы похожее решение (вот одна микросхема без MMU, а вот вторая микросхема - MMU) было бы решением сбоку, а во времена процессоров из нескольких плат - всё достаточно логично и с точки зрения техники
Необязательно. Виртуальные массивы в FORTRAN при работе под SJ/FB - тому пример. И работать, кстати, будут быстрее, чем под ОС, потому что той ещё надо управлять - кто где память занял
Слепить при условии разделения кода по нескольким файлам можно и без программиста - на коленках, но выжать максимум производительности, а не так, что бы постоянно оверлеи с диска подкачивались (в памяти переотображались) - тут таки да, придётся попотеть программисту
А цену работа под включённым MMU можно понять (весьма грубо, правда) по
Под SB
Копирование в NL:
65534*512/(2:37)/1024 = ~ 209 кб/с
Копирование на другой ZF с проверкой (два чтения, одна запись, сравнение в памяти)
65534*512*3/(11:25)/1024 = ~ 144 кб/с
Под XM
Копирование в NL:
65534*512/(3:07)/1024 = ~ 175 кб/с
Копирование на другой ZF с проверкой (два чтения, одна запись, сравнение в памяти)
65534*512*3/(13:13)/1024 = ~ 124 кб/с
то есть в районе 10-20 процентов
- - - Добавлено - - -
Аха, конечно, там одни тупые пьяные инженеры сидели
Это не столько цена самогО MMU, сколько цена более навороченной ОС, в том числе, конечно, и затраты на обслуживание MMU, но не только.
ИМХО, ни фига! Проц без ДП не переделывался влёгкую в проц с ДП, это совершенно разные изделия.
Тем не менее, оно, все-таки, сбоку - добавили несколько битов в PSW, добавили второй указатель стека со схемой выбора, кому из них работать, прицепили ДП, как внешнее устройство, завернули шину адреса через него, и все. Ах, да, еще подправили дешифратор команд, запретить исполнение некоторых команд в юзермоде.
Злой ты!Тем не менее, мэйнстрим DEC'и проглядели, как и Межделмаш. Хотя, конечно, в то время, когда к PDP-11 цепляли ДП, будущее еще было туманным...
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
DEC-11-HKBB-D
KB11-A Central Processor unit maintenance manual
Страница 1-4
The KT11-C Memory Management Unit is an OPTION that replaces the SJB System Jumper Board to provide both forms of memory management
Ну и менее надёжный источник - моя память. Когда на химфак МГУ привезли СМ-4 и наш электронщик её приводил в рабочее состояние, насколько мне не изменяет память, он вначале её приводил в чувство БЕЗ ДП, гоняя тесты сначала с перфолент, а потом, когда оживил более менее - грузил с RK05 - сообщение 28KW достаточно хорошо помню. И только после этого он начал смотреть на ДП
- - - Добавлено - - -
О, читаем 1-4 в конце:
1.1.4 Expanded Systems
The elements that distinguish a PDP-11/45 System have all been introduced in the three preceding paragraphs.
These elements are the following:
a. the KB11-A Central Processor Unit
b. the MS11 Semiconductor Memory System
c. the FP11 Floating-Point Processor
d. the KT11-C Memory Management Unit
All PDP-11/45 Systems include the KB11-A; however, ALL OTHER COMPONENTS are OPTIONAL
Последний раз редактировалось Arseny; 18.10.2019 в 08:27.
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)