vak: (Улыбка)
Serge Vakulenko ([personal profile] vak) wrote2013-01-28 12:04 pm

О чем говорят инженеры

Выдержки из дискуссии:
Chris Rowen, CTO at Tensilica;
Andrew Caples, senior product manager at Mentor Graphics;
Drew Wingard, CTO at Sonics;
Larry Hudepohl, vice president of hardware engineering at MIPS;
Barry Pangrle, senior power methodology engineer at Nvidia.

"There are examples of chip companies that were started to do some very clever things, but they never got off the ground because no one could figure out how to develop the software. It’s easy to build embarrassingly parallel hardware that is programmable, but building a software environment that people are willing to use is a different matter."

Как бы вдогонку к обсуждению Мультиклета.

[identity profile] mandrykin.livejournal.com 2013-01-29 02:37 am (UTC)(link)
Может быть, но есть вопросы.

Какие системы организуют страничную память на основе сегментов? Какой в этом смысл для секцмй .text и .data, если каждую из них всегда можно описать одним сегментом? Интересная картина могла бы получиться для стека и кучи - но на x86 это дорого и громоздко.


(deleted comment)

[identity profile] mandrykin.livejournal.com 2013-01-29 03:05 am (UTC)(link)
> Скажем, в самом простом случае каждая функция помещается в свой сегмент.

Это не даст никаких преимуществ, а лишь убьёт производительность. Фишка как раз в том, чтобы на основе сегментов реализовать страничную память там, где она больше всего нужна - стек и куча. Размер стека и кучи - динамический. Увеличивать, наращивая границы сегмента, не получится - рано или поздно сегмент упрётся в другой сегмент. Менеджер памяти мог бы "тасовать" сегменты, создавая иллюзию непрерывного адресного пространства.

(deleted comment)

[identity profile] mandrykin.livejournal.com 2013-01-29 03:37 am (UTC)(link)
На x86 это интересно разве что в академических целях, как демонстрация возможностей. Скорости это никак не прибавит, потому что в "аппаратной" страничной реализации участвует TLB. Программная эмуляция в любом случае будет медленнее - переключение сегментов по исключениям будет сильно тормозить.

А вот что касается уровня привелегий - то они как бы и не нужны вовсе. Вполне достаточно прав rwx на виртуальную страницу для организации защищённой системы. Уровень привлегий - лишняя сущность. Защита на уровне страниц вполне покрывает все нужды. Пожалуй, единственное исключение из этого утверждения - это средства виртуализации. Тут бы хватило два уровня привелегий - гипервизор и всё остальное.
Edited 2013-01-29 03:40 (UTC)
(deleted comment)

[identity profile] mandrykin.livejournal.com 2013-01-29 11:11 am (UTC)(link)
Вполне благородная. Но c помощью прав страниц это делается легко.
(deleted comment)

[identity profile] mandrykin.livejournal.com 2013-01-29 05:49 pm (UTC)(link)
А что может случиться страшного, если процессор начнёт исполнять данные? Вряд-ли он успеет навредить системе или другому процессу, прежде чем наткнётся на несуществующую команду или обратится по неправильному адресу. Самое страшное, что может случиться - завснет в бесконечном цикле.

Одним битом можно обойтись. Если неправильный адрес, то страницы просто не существует. Чтение разрешено всегда, а бит определеяет разрешёную операцию - исполнение или запись страницы. Всё же правильнее разделять чтение и исполнение, но если архитектура не поддерживает, то обойтись можно.