Pull to refresh

Comments 18

Подозреваю, что на чисто счётном бенчмарке на скалярах практически не работает логика по проверке прав доступа, влияющая на производительность. Вопрос, что будет в более реальном случае, когда обрабатываются массивы разных структур.

Вопрос, что будет в более реальном случае, когда обрабатываются массивы разных структур.

Массивы структур это те же скаляры. ISA легко позволяет работать со структурами и массивами, используя простую арифметику под капотом.

Другое дело кастомные типы (можно назвать их классами в терминах ООП) и объекты этих классов с полноценной системой доступа. Вот на них будет просадка.

Но многие источники хаяли iAPX 432 как раз в задачах вычислительного толка, а не исследовали сценарии, для которых и была разработана данная система.

Я имею в виду "правильную" работу со структурами как объектами.

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

Насколько я понимаю, он должен был конкурировать не с PC на 8086 , а с нишами мейнфреймов и UNIX-рабочих станций.

И вот по сравнению с тамошними конкурентами он был медленный.

Интересно, кстати, 8087 - стековый, это глядя на iAPX432 сделали?

должен был конкурировать не с PC на 8086 , а с нишами мейнфреймов и UNIX-рабочих станций.

Типа того - но из-за epic fail с ним пришлось развивать дальше линейку x86 (хотя в конце 80х Интел и в RISC поигрался, там вроде не так плохо получилось, но тоже не взлетело).

8087 примерно в то же время делался, возможно команды общались.

"Гладко было на бумаге". Видимо там есть какая-то предыстория об этой архитектуре. Возможно в научных кругах в теоретических работах она обрела популярность.

У нас издавали книжку Органика, можно почитать на досуге.

Очень интересно,спасибо. Да, об этом процессоре написано во всех учебниках как о об одном и самых провальных технических решений и как демонстрация проблемы "второй системы" (по Бруксу).

Не совсем понятно зачем Вам потребовалась частота работы с памятью в 250 МГц если у iAPX432 тактовая всего 5 МГц ?

250Мгц - это частота тактирования. Максимальная скорость работы памяти достигается в определенных условиях - скажем, если используется burst режим. В среднем нужно 4-5 тактов + всякие CDC и получаем уже числа порядка десятков мегагерц, а не сотен.

Для чипов 432, которые у меня есть в наличии, этого достаточно (хотя есть и 8МГц версии), но, как всегда, я стараюсь использовать решения, проверенные в других проектах. И в одном из таких проектов, мне нужна была очень быстрая память, поэтому использовал эту связку, которая перешла и в дизайн для 432.

Использовал в одном из своих проектов TPS63002 - тоже дохли как мухи

перемудрили с тем, что надо было реализовывать на апаратном уровне, а что отдать на откуп софту

Я это рассматриваю как пример того, когда из одних посылок разные люди делают противоположные выводы. К концу 70х было общее понимание, что большая часть софта пишется на языках высокого уровня и архитектуру надо делать в основном для этого сценария, а не для пишущих вручную на ассемблере. В Интеле решили, что для этого железо должно само поддерживать высокоуровневые конструкции - и появился монстр 432 c аппаратной поддержкой работы с объектами и т.д. Более практичные люди посмотрели, как компилятор использует существующий набор команд и увидели, что и там и так много лишнего и лучше, наоборот, всё упростить - и появилась идеология RISC, живая до сих пор.

у меня немного другие мысли, больше про защиту памяти и ее виртуализацию

К тому времени и то и другое уже давно использовалось (хотя бы на IBM 370).

в массовом сегменте этого не было, IBM 370 это совершенно другой уровень

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

Объект разделён на 2 части - access сегмент содержит только указатели, а data сегмент всё остальное. То есть, работая с каким-то системным объектом, процессор зачастую обращается к 2м физическим сегментам.

Если бы эта идея зашла разрабам мы бы имели не плоскую линейную память как сейчас а маркированные указатели и были бы возможны асинхронные вызовы к ОС:

многие объекты могут быть захвачены (залочены) либо железом, либо программно (через инструкцию LOCK OBJECT). Реализуется весьма просто - в data-сегменте объекта есть поле, которое содержит мета-информацию о блокировке: тип блокировки и идентификатор того, кто захватывает объект

Отдельный тактовый сигнал для планировщика - это тоже очень интересная идея - он позволяет замедлять планировщик когда глобальный сборщик мусора не справляется - это вычислительно дешево.

В общем там целый кладезь идей, я сразу задумался о том можно ли перенести его идеи на fpga. Там граница между хардвером и программой становится совсем неощутимой.

Из-за того что сообщество программистов отвергает не самые простые идеи и "эффекта Матфея" мы регулярно попадаем в такие специфические тупики которые требуют героических усилий чтобы выбраться

не плоскую линейную память как сейчас а маркированные указатели

Только переключение сегментов на каждом доступе к объекту не бесплатно.

Sign up to leave a comment.

Articles