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] http://users.livejournal.com/_slw/ 2013-01-28 08:25 pm (UTC)(link)
сакрализация имеющихся знаний и умений -- в корне неверный подход

[identity profile] mandrykin.livejournal.com 2013-01-29 02:09 am (UTC)(link)
Простите, я бы поспорил с этим утверждением. Можно придумать массу мотивов для "сакрализации". Вот если бы мы жили в идеальном обществе, тогда да.

[identity profile] http://users.livejournal.com/_slw/ 2013-01-29 07:04 am (UTC)(link)
возможность придумать мотивы мое утверждение не опровергает

[identity profile] mandrykin.livejournal.com 2013-01-29 12:41 pm (UTC)(link)
Давайте копнём чуть глубже - Стив Джобс и Стив Возняк. Первый - талантливый предприниматель, второй - талантливый инженер. На Джобса молились миллионы, а Возняк известен лишь в технических кругах. Но кем бы был Джобс, если бы Возняк не собрал свой Apple-I? Наиболее вероятно - "сторчался" бы от каких либо синтетических наркотиков и закончил свою жизнь в подворотне. Если верить источникам, предпосылки для этого были.

Хотя, время расставило всё по местам - Джобса уже нет, а Возник здравствует, несмотря на избыточный вес.

Я ведь к чему клоню - знания и умения в одних головах, а сливки снимают другие. Т.ч. сокрытие знаний это некий элемент поддержания справедливости. Это ж каким бессребреником надо быть, чтобы ютясь по съёмным квартирам и питаясь лапшой быстрого приготовления, радоваться что кто-то получает хороший профит за счёт твоего труда. Не всем же быть Перельманами.



[identity profile] http://users.livejournal.com/_slw/ 2013-01-29 12:51 pm (UTC)(link)
нихрена не понял связи с постом и моим утверждением.

а, наверное ты неверно понимаешь слово сакрализация?

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

это путь в деградацию. может локально ты и снимешь какие-то сливки, то на длительном интервале -- полная деградация

[identity profile] mandrykin.livejournal.com 2013-01-29 02:05 pm (UTC)(link)
Да, вероятно я не правильно понял смысл слова "сакрализация".

Не могу найти пример сакрализации в области современной науки и технологий. Это все же больше из области религии.

[identity profile] http://users.livejournal.com/_slw/ 2013-01-29 02:12 pm (UTC)(link)
ну мне кажется в стартовом посте по ссылке именно оно.
типа у нас есть, а остальным недоступно.
откуда у нас оно взялось -- а свыше спустилось [неявно предполагается]

[identity profile] http://users.livejournal.com/_slw/ 2013-01-29 07:08 am (UTC)(link)
во всем этом нет ничего невозможного.
никаких сакральных знаний в этом нет, в конце уонцов то, что существует сейчас когда не существовало вообще.
а особенно в "убедить" --- специалисты часто подки на новинки, по крайне мере "на пощупать".
ну то, что не всякая идея на самом деле стреляет -- это другой вопрос. но тут похоже никто не может заранее угадать меру успеха или провала

[identity profile] gineer.livejournal.com 2013-01-29 09:39 am (UTC)(link)
да, в простом банальном "как сделать", нет ничего сакрального
а вот в "как сделать так чтобы вытрелило и принесло (кучу) прибыли" -- дофига

[identity profile] http://users.livejournal.com/_slw/ 2013-01-29 11:38 am (UTC)(link)
там тоже нет сакрального знания.
подчеркиваю -- знания.
побольшей части там удача. иногда у некоторых персонажей вроде как есть чуйка. но отделить и обучить они не способны.
вот к примеру фирма dec сделала охрененую линейку pdp. подняла бабла.
сделала хорошую железку vax-11, к ней операционку vax/vms. из них до сих пор идеи черпаются.
с баблом на этом получилось уже не так хорошо.
сделали альфу. с баблом вообще не вышло.
(deleted comment)

[identity profile] archaicos.livejournal.com 2013-01-28 08:55 pm (UTC)(link)
Если я не ошибаюсь, Windows 3.xx, запущенный на 80286 или не в самом каком-то там расширенном режиме на 80386, работал с сегментами, и в OS/2 также использовались сегменты.

Четыре уровня - многовато на практике. Тем не менее, некоторые виртуальные машины использовали один (1-й) в дополнении к двум основным (0 и 3).

С задачами вышла промашка - медленно. Однако, если происходит переполнение стека в ядре на 0-м уровне, единственный гарантированный механизм не умереть прямо там по #DF - использовать задачу в качестве обработчика исключения #DF.
(deleted comment)

[identity profile] archaicos.livejournal.com 2013-01-28 09:31 pm (UTC)(link)
Медленность не в задачах, а в том, как было сделано аппаратное переключение между ними. Не всегда нужно сохранять и восстанавливать так много контекста и со всеми проверками, не всегда нужно перезагружать корень таблицы страниц, сбрасывая при этом весь TLB, просто читать TSS из памяти - дополнительный тормоз тогда, как, в сегментных регистрах кода ядра обычно сидят константы - чего их из TSS читать-то? Можно так загрузить. Короче, сразу сделать быстро не вышло, а потом уже поздно было - т.к. уже обошлись без и вряд ли бы переписывали, если бы сделали примерно так же быстро - уже ж работает.
(deleted comment)

[identity profile] archaicos.livejournal.com 2013-01-28 09:49 pm (UTC)(link)
Всех подробностей не знаю/помню, но корень сбрасывать точно не надо, т.к. с перезагрузкой CR3 на 80386 уйдут и записи в TLB для кода и данных ядра, которые должны быть адресуемы в контекстах всех процессов и ниток (иначе как вызывать ф-ции ядра и данными с ним обмениваться?). Потом в 80486 Pentium специально добавили бит Global в элементы таблиц страниц чтобы TLB для таких общих страниц не сбрасывались.
Edited 2013-01-28 21:50 (UTC)
(deleted comment)

[identity profile] archaicos.livejournal.com 2013-01-28 10:07 pm (UTC)(link)
В какой-то момент придётся, да. Если не это, то ещё есть аргумент гибкости кода без TSS - одной специфичной для железа деталькой меньше (комментарий в старом коде Linux об этом говорит).

[identity profile] oboguev.livejournal.com 2013-01-28 10:52 pm (UTC)(link)
В х86 нет четырех уровней защиты.
Page table entries предусматривают только два.
(deleted comment)

[identity profile] oboguev.livejournal.com 2013-01-28 11:13 pm (UTC)(link)
И что толку от сегментов без страниц?
Никакую реально существующую систему с виртуальной памятью и 4 кольцами перенести на x86/x64 с сохранением архитектуры нельзя.
(deleted comment)

[identity profile] oboguev.livejournal.com 2013-01-28 11:32 pm (UTC)(link)
Вы же и говорите в заглавном комментарии: "коммерческая операционная система".

Вот, пожалуйста: OpenVMS использует 4 кольца и требует 15 уровней защиты страницы.
В Itanium-е это есть (и больше, с добавкой доступа Execute), а в x86 -- нет.
OpenVMS работает на IA64, а на x64 -- ее не переносили, разумеется не по этой причине, но если бы встал вопрос о переносе, то отсутствие поддержки 4 колец защиты виртуальной памяти стало бы значимым техническим препятствием.
(deleted comment)

[identity profile] oboguev.livejournal.com 2013-01-29 02:32 am (UTC)(link)
Ну и, нельзя виртуальную память точно так же организовать на базе сегментов, как на базе страниц.
Либо количество страниц в виртуальном пространстве получится ограниченным, либо страницы большими и wasteful.
Хуже же всего, что void* окажется 128-битным типом, и адресация к каждому элементу памяти будет медленной из-за необходимости постоянных перезагрузок сегментных регистров.
И наконец, last but not least, в х86/х64 с помощью сегментных регистров можно задать защиту KW, EW, SW и UW, но не UR или URKW.
(deleted comment)

[identity profile] oboguev.livejournal.com 2013-01-29 02:50 am (UTC)(link)
Фиксированность размера страницы определяется необходимостью иметь manageable paging algorithms.
Указатель должен быть адресовать всё адресное пространство, приключения с разными категориями указателей никому не нужны.
Указатели данных могут приходить из самых разных, наперед неизвестных сегментов, поэтому перегрузка сегментного регистра потребуется практически перед каждой инструкцией или, в лучшем случае, коротким блоком инструкций. Поскольку же выяснится, что данные могут также пересекать границы сегментов-страниц, то реально проверка на переполнение указателя потребуется при каждом обращении с индексацией или инкрементом или попросту при возможности того, что поле атомарного типа пересечет границу сегментов. См. FAR-указатели в 16-битном Windows.
(deleted comment)

[identity profile] oboguev.livejournal.com 2013-01-29 05:34 am (UTC)(link)
То, что вы описываете -- это система без виртуальной памяти с ручной организацией подкачки. Всё это можно делать и раньше делалось (оверлеи кода и данных и т.д.), но это никому не нужно.

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

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

Сегменты нарезал пейджер.

[identity profile] oboguev.livejournal.com 2013-01-29 02:56 am (UTC)(link)
> Фиксированность размера страницы определяется необходимостью иметь manageable paging algorithms.

И, конечно, собственно вообще иметь paging.

[identity profile] oboguev.livejournal.com 2013-01-29 02:38 am (UTC)(link)
Опечатка:
И наконец, last but not least, в х86/х64 с помощью сегментных регистров можно задать защиту (K/E/S/U)(R/W), но не напр. URKW.

[identity profile] mandrykin.livejournal.com 2013-01-29 02:20 am (UTC)(link)
> Виртуальную память можно точно так же организовать на базе сегментов, как и на базе страниц. Сложнее? Да! Гибче? Несомненно!


Как удивительно это пересекается с тем, над чем сейчас думаю. На базе сегментов вполне можно организовать страничную память. В некотором роде "костыль", но при этом обработчик исключения по нарушению границы сегмента может эмулировать страницы любого размера. Т.е. даже на такой схеме можно получить некоторый выигрыш.
(deleted comment)

[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)

(no subject)

[identity profile] mandrykin.livejournal.com - 2013-01-29 11:11 (UTC) - Expand
(deleted comment)

(no subject)

[identity profile] mandrykin.livejournal.com - 2013-01-29 17:49 (UTC) - Expand

[identity profile] eentropy.livejournal.com 2013-01-29 01:58 pm (UTC)(link)
говоря x86 - мы давно уже говорим о 386DX и старше

[identity profile] izard.livejournal.com 2013-01-29 07:29 am (UTC)(link)
Из крупняков аппаратную поддержку задач использовала ОС в коммутаторах от Nokia.
(deleted comment)

[identity profile] izard.livejournal.com 2013-01-29 03:58 pm (UTC)(link)
DX200 была еще на 8086, но это было 30 лет назад. 7 лет назад мне приходил баг репорт о TSS в новом железе, на котором должны была работать DMX

[identity profile] kondybas.livejournal.com 2013-01-28 08:46 pm (UTC)(link)
"Патамушто железо для людей, а не люди для железа..."

[identity profile] kondybas.livejournal.com 2013-01-28 09:58 pm (UTC)(link)
Ну, до определенного предела, все-таки :)