The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Линус Торвальдс: 'ядро стало раздутым и огромным', opennews (??), 22-Сен-09, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


2. "Линус Торвальдс: "  +3 +/
Сообщение от аноним (?), 22-Сен-09, 15:47 
Дык давно понятно было. Нужно о железо с бесплатными context switch, и нормальное микроядро, все.
Ответить | Правка | Наверх | Cообщить модератору

3. "Линус Торвальдс: "  –2 +/
Сообщение от Iv945n (ok), 22-Сен-09, 15:51 
Категорически согласен!
Ответить | Правка | Наверх | Cообщить модератору

4. "Линус Торвальдс: "  +2 +/
Сообщение от svn (??), 22-Сен-09, 15:54 
>Нужно о железо с бесплатными context switch, и нормальное микроядро

Нужен квантовый компьютер, и нормальное ядро для него, всё!!

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

31. "Линус Торвальдс: "  +/
Сообщение от User294 (ok), 22-Сен-09, 16:57 
>Нужен квантовый компьютер, и нормальное ядро для него, всё!!

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

Ответить | Правка | Наверх | Cообщить модератору

55. "Линус Торвальдс: "  +4 +/
Сообщение от IOException (?), 22-Сен-09, 17:56 
>Вот когда на луну слетать будет столь просто как на автобусе пару остановок скататься

Главное, что бы это не из-за роста цен на автобусные билеты произошло...

Ответить | Правка | Наверх | Cообщить модератору

62. "Линус Торвальдс: "  +/
Сообщение от vitek (??), 22-Сен-09, 18:11 
1987: трамвай - 3 коп., автобус - 5 коп.
немного ещё...
Ответить | Правка | Наверх | Cообщить модератору

99. "Линус Торвальдс: "  +/
Сообщение от pavlinux (ok), 22-Сен-09, 22:53 
>1987: трамвай - 3 коп., автобус - 5 коп.
>немного ещё...

А почему трамвай дешевле? Ты с квасом 0.33 и 0.5 не перепутал? :)

Ответить | Правка | Наверх | Cообщить модератору

100. "Линус Торвальдс: "  +/
Сообщение от fidaj (ok), 22-Сен-09, 22:57 
>>1987: трамвай - 3 коп., автобус - 5 коп.
>>немного ещё...
>
>А почему трамвай дешевле? Ты с квасом 0.33 и 0.5 не перепутал?
>:)

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

Ответить | Правка | Наверх | Cообщить модератору

101. "Линус Торвальдс: "  –1 +/
Сообщение от pavlinux (ok), 22-Сен-09, 23:00 
>>>1987: трамвай - 3 коп., автобус - 5 коп.
>>>немного ещё...
>>
>>А почему трамвай дешевле? Ты с квасом 0.33 и 0.5 не перепутал?
>>:)
>
>А в советском союзе весь электротранспорт был дешевле чем тот, что с
>двигателями внутреннего сгорания... Троллейбус, например 4 коп...

А почему велик КАМА стоил 99 руб. там же мотора нету. :(

Ответить | Правка | Наверх | Cообщить модератору

117. "Линус Торвальдс: "  +1 +/
Сообщение от User294 (ok), 23-Сен-09, 01:49 
Потому что это, так сказать, не "помегабайтная" тарификация а "анлим" - сколько напедалишь, столько и проедешь, хе-хе :).
Ответить | Правка | Наверх | Cообщить модератору

217. "Линус Торвальдс: "  +/
Сообщение от sergem (??), 23-Сен-09, 19:14 
>
>А почему велик КАМА стоил 99 руб. там же мотора нету. :(
>

Зачэм такой дарагой машин пакупал?
Мой велик "Украина" стоил 55 руб. (1971)

Ответить | Правка | К родителю #101 | Наверх | Cообщить модератору

218. "Линус Торвальдс: "  +/
Сообщение от vitek (??), 23-Сен-09, 19:16 
точно...
и до сих пор ездит..
Ответить | Правка | Наверх | Cообщить модератору

219. "Линус Торвальдс: "  +/
Сообщение от pavlinux (ok), 23-Сен-09, 19:50 
>>
>>А почему велик КАМА стоил 99 руб. там же мотора нету. :(
>>
>
>Зачэм такой дарагой машин пакупал?
>Мой велик "Украина" стоил 55 руб. (1971)

Меня тогда ещё в планах не было. Да и ваще большой он,... каму сложил и на полку закинул... на зиму.

Ответить | Правка | К родителю #217 | Наверх | Cообщить модератору

190. "Линус Торвальдс: "  +/
Сообщение от vitek (??), 23-Сен-09, 14:07 
>>1987: трамвай - 3 коп., автобус - 5 коп.
>>немного ещё...
>
>А почему трамвай дешевле? Ты с квасом 0.33 и 0.5 не перепутал? :)

альтернативные источники были уже тогда


Ответить | Правка | К родителю #99 | Наверх | Cообщить модератору

5. "Линус Торвальдс: "  –1 +/
Сообщение от Max (??), 22-Сен-09, 15:55 
это уже будет не линукс.
вместо микроядра можно переписать линукс на джаве
http://en.wikipedia.org/wiki/Singularity_(operating_system)
только врядли жава-линукс все сразу бросяться использовать
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

64. "Линус Торвальдс: "  +/
Сообщение от аноним (?), 22-Сен-09, 18:15 
> это уже будет не линукс.

И слава тебе господи

> Singularity

Знаю. Спасибо, такого не надо.

Ответить | Правка | Наверх | Cообщить модератору

8. "Линус Торвальдс: "  +/
Сообщение от anonymouse (?), 22-Сен-09, 15:57 
нужно кому, разработчикам микроядра?)
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

13. "Линус Торвальдс: "  +/
Сообщение от User294 (ok), 22-Сен-09, 16:06 
> Нужно о железо с бесплатными context switch

In  your dreams. Как только вы придумаете как закопать х86... :).За ...цать лет так никто и не придумал, интел продолжает штамповать этот булшыт. Ведь бабло побеждает зло! :)

>  и нормальное микроядро, все.

Как у вас все просто. В теории, бэть! Ну, есть у вас микроядро. И - дальше то что с ним делать? И, главое, кому оно будет надо? А если вы напишете столько же дров и фич - так у вас в системе получится 1 хрен примерно такое же, с теми же проблемами, плюс-минус лапоть. Потому что чудес не бывает. Было б микроядро панацеей - только его б и юзали. Но правда в том это лишь унылая попытка фана микроядер выдать желаемое за действительное. Понимаете, тем кто не фанат - микроядро само по себе нафиг не впилось.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

56. "Линус Торвальдс: "  +/
Сообщение от Pilat (ok), 22-Сен-09, 17:59 
>Как у вас все просто. В теории, бэть! Ну, есть у вас
>микроядро. И - дальше то что с ним делать?

Оно будет более надёжное, при той же производительности.

Ответить | Правка | Наверх | Cообщить модератору

119. "Линус Торвальдс: "  +1 +/
Сообщение от User294 (ok), 23-Сен-09, 01:57 
>Оно будет более надёжное, при той же производительности.

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

И даже если с всем этим справиться - а теперь попробуйте это продать. А all скажет "а у нас и так сервера месяцами не падают - идите ка вы с вашей крутизной за бабки в сад, нас наше х86 гумно и традиционое ядро вполне устраивает".Что будете делать дальше?Даже интель свой итаник продавать не осилил толком.И?

Ответить | Правка | Наверх | Cообщить модератору

123. "Линус Торвальдс: "  –2 +/
Сообщение от Pilat (ok), 23-Сен-09, 02:12 
>>Оно будет более надёжное, при той же производительности.
>
>Во первых, интель достиг неких успехов в подстановке костылей старперу и накачкой
>его стероидами и т.п. - он теперь даже бегать научился. И
>за ним придется угоняться.

<skip про процессоры>

Микроядро к процессорам отношения не имеет.

Ответить | Правка | Наверх | Cообщить модератору

127. "Линус Торвальдс: "  –1 +/
Сообщение от User294 (ok), 23-Сен-09, 03:15 
Ручник полезно отпускать. Хотя я заметил - жаба програмеры типа вас, задрюченные своими высокими концепциями в итоге дошли до маразма и не знают как работает их компьютер. А уж понимание работы CPU, ОС и о чем вообще спич - и вовсе за пределами их мозговых возможностей.

Изначально был разговор про бесплатное переключение контекстов, если вы не заметили.
Спец-пояснение для програмеров на яве, которые не знают как все это работает и поэтому нереально тупят:

Чтобы микроядро не тормозило, переключение в режим ядра и обратно должно быть очень быстрым, чтобы вагон переключений туда-сюда не сажали бы скорость работы. Упомянутое исходным автором "бесплатное" (в плане затрат времени CPU) переключение контекстов должен уметь именно процессор. На аппаратном уровне и не черер попу, т.е. - быстро. У того же x86 оно не бог весть какое быстрое, да и у остальных - не фонтан как правило. Т.к. в традиционных ядрах это не очень то и частая операция, всех все устраивает и менять это всем в облом. Под "бесплатностью" автор понимал тот факт что время переключения контекста - малое и ни на что не влияет.

Совсем бесплатно (по времени процессора) переключение контекста разумеется не бывает, как-то отсигналить процу о желании сменить состояние придется и какое-то время это как ни крути займет. Но, JFYI, в природе есть и варианты процессоров где переключение контекста - реально быстрая и эффективная операция. Например, бывает допустим свой банк регистров на задачу (а также режим привелегий, ... ) и его смена 1 командой. По сути можно попасть на новую задачу (и даже в другом режиме привилегий) за время порядка выполнения 1 команды.

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

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

Ответить | Правка | Наверх | Cообщить модератору

129. "Линус Торвальдс: "  –2 +/
Сообщение от Pilat (ok), 23-Сен-09, 03:49 
Фантазёр Вы. Если бы да кабы да изобрели волшебный процессор... "Должно", "Если сделать" ...  
Ответить | Правка | Наверх | Cообщить модератору

138. "Линус Торвальдс: "  +2 +/
Сообщение от аноним (?), 23-Сен-09, 05:43 
>Фантазёр Вы. Если бы да кабы да изобрели волшебный процессор... "Должно", "Если
>сделать" ...

ващета его, можно сказать, давно изобрели

Ответить | Правка | Наверх | Cообщить модератору

185. "Линус Торвальдс: "  +/
Сообщение от fidaj (ok), 23-Сен-09, 13:40 
>>Фантазёр Вы. Если бы да кабы да изобрели волшебный процессор... "Должно", "Если
>>сделать" ...
>
>ващета его, можно сказать, давно изобрели

Ссылку если можно...

Ответить | Правка | Наверх | Cообщить модератору

213. "Линус Торвальдс: "  +/
Сообщение от User294 (ok), 23-Сен-09, 18:42 
>Ссылку если можно...

Описанного мной проца в природе 1 в 1 наверное не существует (хотя, стоит посмотреть на новые разработки последних лет). Но ничто не мешает такой сделать, если оно будет кому-нибудь надо. Просто, всем (кроме академиков и особо рьяных фанов) нормально живется с классическими ядрами, что не способствует спросу на создание специально заточенных под микроядра процов.

Как грубый пример реализации "почти-моментального" переключения контекстов могу сослаться на Infineon'овские 80C167 и подобные. Хоть это и древние 16-битники, даже без режимов привилегий толком, но вот переключение контекста там сделано весело, 1 командой, за время выполнения 1 машинной команды. Так что если бы кто-то всерьез захотел создать проц для которого микроядро не проблема - они могли бы почерпнуть ряд идей как переключать контексты "почти моментально". Как раз в стиле того о чем исходный автор говорил.

Ответить | Правка | Наверх | Cообщить модератору

215. "Линус Торвальдс: "  +/
Сообщение от Aleksey Salowemail (?), 23-Сен-09, 19:05 
>>Ссылку если можно...
>Как грубый пример реализации "почти-моментального" переключения контекстов могу сослаться на Infineon'овские 80C167 и подобные.

Я не в курсе как сделано там, но подозреваю что аналогично Z80 - два банка регистров с возможностью быстрого переключения. Вот только есть одна небольшая проблема: данная методика работает только в случае когда у вас есть только две задачи, например текущая программа и обработчик единственного прерывания, как было в Z80. Если же мы хотим иметь больше процессов, тогда либо делаем как в i286+ (выделяем отдельный TSS для сохранения контекста задачи), либо вводим жёсткое ограничение на кол-во аппаратно поддерживаемых контекстов.

> Хоть это и древние 16-битники, даже без режимов привилегий
>толком,

Вот-вот. У него не только нет разграничения привелегий, у него ещё нет механизмов для реализации виртуальной памяти. Современному процу для того чтобы переключить контекст нужно проверить уровень привелегий, сохранить текущий контекст в медленную память (попутно ругнувшись на Segment not found и Page fault), загрузить новый контекст из медленной памяти (попутно ругнувшись на Segment not found и Page fault), загрузить каталоги страниц из медленной памяти, сбросить конвеер и кеш кода, загрузить код из медленной памяти (попутно ругнувшить на Segment not found и Page fault) и начать его декодировать и только после этого можно передать управление коду.

Теперь подумайте как это сделать за один такт и сколько времени он должен длиться.

> но вот переключение контекста там сделано весело, 1 командой, за
>время выполнения 1 машинной команды.

Только вы забыли уточнить что ваш 80C167 как и Z80 имел в лучшем случае двух байтный буфер выбраных команд и поддерживал только плоскую модель памяти. Для такого простого проца сделать переключение банка в один такт - действительно очень просто.

> Так что если бы кто-то всерьез
>захотел создать проц для которого микроядро не проблема - они могли
>бы почерпнуть ряд идей как переключать контексты "почти моментально". Как раз
>в стиле того о чем исходный автор говорил.

Вы вообще что заканчивали то?

Ответить | Правка | Наверх | Cообщить модератору

247. "Линус Торвальдс: "  –1 +/
Сообщение от User294 (ok), 24-Сен-09, 08:07 
>Я не в курсе как сделано там, но подозреваю что аналогично Z80
>- два банка регистров с возможностью быстрого переключения.

Не, там покруче на пару порядков. Грубо говоря - это такой идеальный неймановец.Настолько идеальный что даже у general purpose регистров CPU есть ... адрес (да, это вам не х86). Крыша еще на хлопает в ладоши? Отлично, тогда вот в чем прикол: состояние проца по сути описывается указателем на адрес начала блока регистров. Думаю теперь понятно как контекст переключается 1 командой? Правильно - она тупо пишет 1 указатель, начало этого самого окна регистров. В итоге почти моментально можно перекинуть проц в какое-то другое состояние. И допустим у каждой задачи могут быть свои копии регистров :).Переключение по сути моментальное - перезапись 1 указателя спец. командой для этого и баста.Поэтому если есть 20 задач, можно прыгать между их 20 состояниями довольно просто и быстро. Лишь бы накристальной RAM для регистров хватало (ограничение только в том что это должна быть скоростная накристальная RAM успевающая за ядром, видимо немцев ломало городить сложную логику в довольно простом проце).

Не вижу проблем чуть доразвить эту идею и сделать по образу и подобию но с переключением привилегий и полного состояния CPU, буквально еще пара-тройка регистров к контексту (Program Counter, mode, flags, ...).Тогда проц мог бы спокойно прыгать между пачкой процессов и режимов характерных для микроядра за буквально время выполнения 1 команды пишущей указатель, т.е. несколько тактов. Если б кого приперло микроядра всерьез и много юзать - давно б сделали.

>Вот только есть одна небольшая проблема: данная методика работает только в
>случае когда у вас есть только две задачи,

О, я все больше убеждаюсь что шутка про некоторых, которые "unable to think big" не такая уж и шутка была :-).Некоторые, реально, unable - вы сами только что доказали, что видя решение для ДВУХ ЗАДАЧ вам слабо его же представить в случае когда вместо 2 будет N. А вот немцам оказалось не слабо - в конкретном железе при том.Немолодом весьма.Забавно, а?

>Если же мы хотим иметь больше процессов, тогда либо делаем как в i286+
>(выделяем отдельный TSS для сохранения контекста задачи), либо вводим
>жёсткое ограничение на кол-во аппаратно поддерживаемых контекстов.

Немцы в их добре наверное могли бы поддерживать сколько угодно наборов регистров, ограничиваясь только адресным пространством. По факту оно у них ограничено объемом накристальной RAM.И ничем более.Это явно не 2 задачи а, гм, довольно-таки неплохая кучка.

Если вспомнить про размер кешей у современных топовых CPU и предусмотреть на пиковый случай сброс добра в обычную оперативу (уже с потерей скорости ессно) можно понять что таким манером вполне реально очень быстро переключать контексты всех процессов и потоков в ОС. Если б кому зудело - давно б сделали уже. Просто всем и так хорошо - вот и не дергаются. Но в теории это не запрещается. И даже как видите на практике в минимальном варианте существовало, блин.

>контекст нужно проверить уровень привелегий, сохранить текущий контекст в медленную
>память

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

>после этого можно передать управление коду.

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

>Теперь подумайте как это сделать за один такт и сколько времени он
>должен длиться.

Элементарно, Ватсон - это будет называться памятью на кристалле. Которая работает с частотами порядка частот проца по жизни (кэш, etc). Соответственно, при должном желании можно перебросить контекст за считанные такты. Длиться будет недолго. Ну, у немцев оно толи 1 толи 2 такта занимает. А фигли, 1 указатель перезаписать. Если задаться такой целью - не вижу проблем например сделать адресуемую накрсистальную память и адресовать указатели на нее пока есть место.Ну а в крайнем случае уже с оперативой дело иметь, но в реальной ОС при разумном ее юзеже этот крайний вообще никогда не настанет и нужно только для перестраховки (а вдруг юзер миллион процессов все-таки захочет запустить?!).

>Только вы забыли уточнить что ваш 80C167 как и Z80 имел в
>лучшем случае двух байтный буфер выбраных команд и поддерживал только плоскую
>модель памяти.

Это все не столь уж принципиально, т.к. буфером в случае накристальной памяти она может быть сама себе. В конечном итоге идею адресуемых регистров и переписку указателя можно вписать куда угодно. Хоть в отдельное адресное пространство или там куда еще. Вы размышляете с точки зрения "есть х86 говно, оно единственно возможное". А я размышляю с точки зрения создания проца под задачу, хорошо вписывающегося в нее. Просто по факту то что есть - неплохо работает, ну и влом всем придумывать хитрые велосипеды ради не особо очевидных выигрышей. Но если представить себя конструктором велосипедов... ;)

>Для такого простого проца сделать переключение банка в один такт - действительно
>очень просто.

Внимание, коронный вопрос: есть у нас накристальная память. Есть указатель, выбирающий в ней текущий блок регистров, описывающий состояние CPU. Чему там тормозить при переключении блоков регистров? Указатель перезаписат как бы быстро. После чего проц оказывается в совсем другом состоянии, т.к. его регистры одним взмахом содержат другой контекст. Я вижу только 1 проблему - чтобы не лимитить жестко число процессов, отлив в обычную память таки придется сделать, да. Но в обычной ситуации оно вообще юзаться не должно - этакая запасная фича, по аналогии с свопом :). И, собссно, зачем привязываться к тому как у х86 урода сделано? Можно ведь и иначе. Просто и изящно приделать это к новой архитектурке, заранее предусмотрев какойнить обработчик исключений по этому поводу, отливая в заведомо non-pageable память и прочая (да, читать контекст проца из свопа - не рулит как бы, ни разу! :D).

>Вы вообще что заканчивали то?

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

Ответить | Правка | Наверх | Cообщить модератору

256. "Линус Торвальдс: "  +1 +/
Сообщение от Aleksey Salowemail (?), 24-Сен-09, 13:57 
>Не, там покруче на пару порядков. Грубо говоря - это такой идеальный
>неймановец.Настолько идеальный что даже у general purpose регистров CPU есть ...
>адрес (да, это вам не х86).

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

>Крыша еще на хлопает в ладоши?

С какого это перепугу?

>Не вижу проблем чуть доразвить эту идею и сделать по образу и
>подобию но с переключением привилегий и полного состояния CPU, буквально еще
>пара-тройка регистров к контексту (Program Counter, mode, flags, ...).Тогда проц мог
>бы спокойно прыгать между пачкой процессов и режимов характерных для микроядра
>за буквально время выполнения 1 команды пишущей указатель, т.е. несколько тактов.
>Если б кого приперло микроядра всерьез и много юзать - давно
>б сделали.

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

Давайте посчитаем, сколько же памяти занимает контекст. Забегая вперёд скажу что в самом распоследнем Core i7 всего 32K L1 кеша данных, тобишь самой быстрой памяти с низким latency у нас всего кот наплакал. Но давайте посчитаем размер контекста:
16 x  64bit (регистры общего назначения) = 128b
8 x  80bit (FPU) = 80b
16 x 128bit (SSE) = 256b
64bit RIP   = 8b
64bit RFLAGS = 8b
5 x 32bit (CRx) = 20b
1 x 64bit (EFER) = 8b
тобишь только один контекст уже занимает 508b. Тобишь в L1 кеш влезет аж 64 контекста, а ведь там ещё данные хранить нужно. Добавьте в контекст каталоги страниц, чтобы за ними в память не лазить и не тормозить (одна PDPT, на которую cr3 указывает, занимает 512 x 48bit = 3kb). В общем на такой идее можно смело ставить крест.

>А вот немцам оказалось не слабо - в конкретном
>железе при том.Немолодом весьма.Забавно, а?

Ещё раз - у немцев задача была на порядки проще.

>Немцы в их добре наверное могли бы поддерживать сколько угодно наборов регистров,
>ограничиваясь только адресным пространством. По факту оно у них ограничено объемом
>накристальной RAM.И ничем более.Это явно не 2 задачи а, гм, довольно-таки
>неплохая кучка.

Ещё раз - 80C167, который конкурент 8051, поддерживал только основную программу и два прерывания: итого 3 контекста и в общей сложности < 48b на всё про всё.

>Если вспомнить про размер кешей у современных топовых CPU и предусмотреть на
>пиковый случай сброс добра в обычную оперативу (уже с потерей скорости
>ессно) можно понять что таким манером вполне реально очень быстро переключать
>контексты всех процессов и потоков в ОС. Если б кому зудело
>- давно б сделали уже.

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

>Просто всем и так хорошо -
>вот и не дергаются. Но в теории это не запрещается. И
>даже как видите на практике в минимальном варианте существовало, блин.

Просто на практике это нереализуемо. Или вы думаете что разрабы добавляют L3 кеш на много мегабайт просто из лени нарастить на столько же L1?

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

Потому что нет этой резвой локальной, а та что есть - мало. Вы в своих познаниях относительно архитектуры процессоров застряли в районе конца 80-х начала 90-х.

>Дык разговор вроде был не о том как все паршиво может быть
>(у какойнить унылой байды типа х86 уродца) а о том как
>в принципе можно было сделать если б задаться целью. Проц похожий
>на это (хоть и отдаленно) я даже показал.

Давайте возьмём какой-нить RISC. У них регистров ещё больше и контекст занимает ещё больше. Можно всё сделать, если захотеть, только это никому не нужно будет, банально не взлетит ибо нет софта, который бы на нём работал.

>Это все не столь уж принципиально, т.к. буфером в случае накристальной памяти
>она может быть сама себе.

Ещё как принципиально. На размер контекста влияет.

>Но в обычной ситуации оно вообще юзаться не должно - этакая
>запасная фича, по аналогии с свопом :).

У меня сейчас на машинке запущено 245 процессов, сколько там потоков (тех самых execution context) - бог знает, считать лень. Тобишь уже места не хватает.

> И, собссно, зачем привязываться к тому как у х86 урода сделано?

потому что это сделано, это работает, под это написано много кода.

>Можно ведь и иначе.
>Просто и изящно приделать это к новой архитектурке, заранее предусмотрев какойнить
>обработчик исключений по этому поводу, отливая в заведомо non-pageable память и
>прочая (да, читать контекст проца из свопа - не рулит как
>бы, ни разу! :D).

Делайте, кто вам мешает?

Ответить | Правка | Наверх | Cообщить модератору

268. "Линус Торвальдс: "  +/
Сообщение от User294 (ok), 24-Сен-09, 23:41 
>Вах. Аппаратное переименование регистров появилось аж в Pentium-е, если мне склероз не
>изменяет,

А это не переименование, это использование напристальной памяти как general-purpose регистров, с честной адресацией блока регистров указателем на область. Сравнили, блин, от интеля костыли и красивую реализацию неймановской концепции по максимуму.

>С какого это перепугу?

С такого что наличие реального адреса в памяти у регистров - не очень общее свойство для CPU, например.

>Бла-бла-бла. Понимаете, разница между мной и вами в том, что у меня
>был курс микроэлектроники и я умею пользоваться калькулятором,

ИМХО, благородный дон шибко самоуверен.

>а у вас всего этого не было.

У вас по-моему был и есть разве что апломб и гонор. А у меня оно не просто было - были и весьма прозорливые учителя. Как вам например предсказание что сериальные шины вытеснят параллельные сделанное в эпоху когда PCI (вполне себе параллельный) только-только появился?Некоторые, черт возьми, хорошо рубят в своем ремесле: спустя немало лет можно наблюдать как их предсказания постепенно воплощаются в реальном железе.Судя по вашим постам не всем везло так же...

>Давайте посчитаем, сколько же памяти занимает контекст. Забегая вперёд скажу что в
>самом распоследнем Core i7 всего 32K L1 кеша данных,

Мля, вот упертый тип то. Привязался к своему сраному х86 и дальше видеть ничего не хочет. Давайте, молитесь на интель :)

>быстрой памяти с низким latency у нас всего кот наплакал.

Ну и конечно же совершенно банальные инженерные трюки (как то хранение только часто используемых вещей типа general purpose регистров - ну редко, блин, системные дела нуждаются в FPU по большому счету) и перераспределение вентилей в пользу того или сего автору представить слабо.Зато пальцы растопыривать умеет.Так и запишем - протирал портки в каком-то учебном заведении.Зачем протирал - хрен бы его знает: думать своим мозгом его там не научили.

>Но давайте посчитаем размер контекста:

Вы, имхо, безнадежны. Вы считаете что в мире есть только х86 и что надо делать только так и баста. А теперь вот вам пуля в лоб: целью вроде был быстрый переход между состояниями для удобства микроядерной ос. Вопрос: ну и напуркуа системным делам контексты SSE и FPU? Они ими часто и много пользуются? Прямо в каждом системном процессе?!? Нет?! Ну так зачем их тогда хранить для каждой задачи, выжирая под них вагон скоростной оперативы? Потому что вас в вашем вузе думать не научили? oO

А вот например 16х64 регистров в те же 32К можно понапихать о-го-го... у вас активных потоков в системе заметно меньше, пожалуй. Т.е. грубый прикидон показывает что идея как раз вполне катит даже если не отращивать память сильно жирнее :).Хотя в случае такого дизайна имело бы смысл ее увеличить, откусив немного от мегабайтов L2 а то и L3, жрущих под себя немеряно площади кристалла.

>тобишь только один контекст уже занимает 508b. Тобишь в L1 кеш влезет
>аж 64 контекста, а ведь там ещё данные хранить нужно.

1) 64 контекста довольно неплохо. У вас в системе более 64 процессов активно переключаются между собой?
2) Я честно говоря не понял - нахрен таким макаром хранить данные всяких там побочностей типа SSE и FPU.
3) Более того - вы реально не способны представить себе ничего кроме х86 (наверное, это единственная архитектура которую вы знаете). Мой совет - посмотрите на еще несколько архитектур, мир на х86 не заканчивается.Зафиг ограничивать свои познания одним уродливым монстрилой с пачкой костылей и потом смотреть на остальной мир мир через это кривое зеркало?

> Добавьте в контекст каталоги страниц, чтобы за ними в память не лазить
>и не тормозить (одна PDPT, на которую cr3 указывает, занимает 512
>x 48bit = 3kb). В общем на такой идее можно смело ставить крест.

Ага, а если еще и дамп памяти для каждой задачи туда сохранять то и вообще пипец - даже контекст 1 задачи не втиснется. Ну и конечно же отличное такое мышление - на уровне "как бы эту идею прикрутить в известный мне х86 крап?!". Да, для х86 получается уныло. А зачем утыкаться в х86 и его проблемы? При разработке нового проца - свобода маневра полная. Чтобы понять насколько это может в итоге отличаться от "технологии начала 80 + много-много костылей к ним" можно допустим посетить http://www.xmos.com/ и (если мозга хватит) почитать даташиты на их добро(мне оно мозг вынесло неплохо, т.к. не похоже на то что я видел до этого). Чисто чтобы понять насколько проц в современной инкарнации, задизайненый с нуля может отличаться от говна надизайненого в начале 80 и обвешанного потом костылями по самые нидерланды по принципу "как вышло" и "чтобы было совместимо".

>Ещё раз - у немцев задача была на порядки проще.

Да.А я не знаю нахрен вы ее так старательно усложняете.Наверное, потому что "unable to think big" и поэтому не мыслите ничего кроме х86 и как бы к нему это прикрутить в виде стопервого костыля :)

>Ещё раз - 80C167, который конкурент 8051,

Угу, если 167 - конкурент 8051, тогда запор - конкурент поршу, однозначно:).Вообще-то это разные классы, x51 это в embedded по сути самый low end и свое почти отлетал (в новых разработках почти не используется, т.к. безбожно устарел а вопросы бинарной совместимости в новых разработках в embedded обычно никого не колебут). А 167 - это где-то серединка. Как бы х51 немного стушуется адресовать 16М памяти и быстро переключать задачи.

>поддерживал только основную программу

Основной программе ничто не мешает быть побитой на вагон задач между которыми быстое переключение - более того, 167 не то чтобы редко используется в системах с RTOS, ресурсов у него для этого предостаточно в отличие от 51 и он довольно удобен и для них и для компилера по своему устройству. И не вижу каких-то глобальных проблем запихать туда же program counter и регистр состояния (режим привилегий, etc).

>  и два прерывания:

У 167 как бы вагон прерываний, IIRC...

>итого 3 контекста и в общей сложности < 48b на всё про всё.

Блин, скажите уж честно - вас в вашем вузе научили только тому как устроен всякий древний ископаемый крап типа х51, Z80 да x86. Так ведь? :)

>Вы просто с реальностью не дружите, вот и всё. Контекст в современном
>проце это намного больше чем десяток восьми битных регистров.

Ну да, конечно, если рассматривать все в контексте "а как бы эту кульную фичу к известному мне крапу х86 прикрутить" - и правда, возникают сомнения в дружбе с головой.Весь вопрос только в том - кто же с ней не дружит.ИМХО, тот кто хочет подобное прикручивать к х86, хранить контексты SSE и FPU и прочая :).Ну да, системный софт только и занимается что юзанием FPU и SSE :).Только вот в случае микроядра время жрет "распасовка" туда-сюда несколько раз между системными процессами и ядром - ну и напуркуа б им там SSE и FPU? Они ж должны быть простыми у тупенькими, by design.

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

Угу, конечно, если подумать как сделать все максимально через жо, можно и придумать. У вас это получилось - я вас поздравляю, только вот я когда про это говорил - не имел в виду что это надо делать "ну совсем как в х86". Если бы по такому же принципу строили самолеты - это были бы кареты с крыльями :D

>Просто на практике это нереализуемо. Или вы думаете что разрабы добавляют L3
>кеш на много мегабайт просто из лени нарастить на столько же L1?

Нет, разумеется. Но, знаете, я не подразумевал что надо хранить все и вся таким макаром да еще сделав это как в х86.

>Потому что нет этой резвой локальной, а та что есть - мало.

А например у IBM в Cell есть 8 SPE и у каждого из SPE по 256 кило быстрой локальной памяти. Все это впихано на 1 кристалл.

>Вы в своих познаниях относительно архитектуры процессоров застряли в районе конца
>80-х начала 90-х.

Это вы наверное о себе - с вашими познаниями про архитектуру x86.Как раз было создано в начале 80-х и потом густо обвешивалось костылями.

>Давайте возьмём какой-нить RISC. У них регистров ещё больше и контекст занимает
>ещё больше.

Ну и пусть себе занимает, не так уж оно и много. А хранить всякие там SSE и подобное там же - идиотизм чистой воды, пардон. Хотя бы потому что системные процессы им не пользуются и стало быть ускорять оное в таком виде - нафиг не уперлось. А локальной памяти можно и побольше всобачить, если захотеть. Айбиэм вон захотели и впихали в свой целл по 256 кило на SPE.

>Можно всё сделать, если захотеть, только это никому не нужно будет,

А вот тут вы как ни странно правы - дело даже не в софте а в том что в большинстве применений микроядра никому нахрен не нужны, а там где все-таки нужны - рекордные скорости обычно не требуются. Ну вот и не заморачивается никто. Но если подумать как сделать удобный для микроядер проц не сливающий на переключении контекстов - можно и придумать. Только да, на хлам начала-середины 80-х как то х86 смотреть при этом не надо :)

>Ещё как принципиально. На размер контекста влияет.

Да, блин, если поставить себе сохранять в контексте ВСЕ И ВСЯ как вы это сделали - можно предложить еще и дамп памяти задачи туда сливать. Чтоб уж совсем не скромничать. А потом поныть что даже 1 задача не влезает :)))

>У меня сейчас на машинке запущено 245 процессов, сколько там потоков (тех
>самых execution context) - бог знает, считать лень. Тобишь уже места
>не хватает.

Гм, вообще, 254 наборов по 16х64 регистров (если уж не гнаться за хранением всего и вся и ориентироваться на скоростное переключение между системными процессами а не вообще хранение таким макаром всего и вся) - это менее 32К памяти. И уж ессно если городить такое - наверное надо выделить побольше чем 32Кб под это (предусмотрев на крайние случаи механизм отливающий редко юзаемые контексты в простую оперативку, etc). При том - такая механика не будет тупить при переключении контекстов до тех пор пока число активно работающих процессов помещается в такой "кэш" (при необходимости можно в принципе сливать наиболее редко используемые контексты в обычную RAM без какого-то чрезмерного ущерба). У вас часто в системе шпарят на всем ходу сотни процессов или хотя-бы тредов? Или большая их часть все-таки нихрена не делает большую часть времени а активно работает дай боже несколько десятков, которые как раз "забуферятся" и будут переключаться в момент? :)

>потому что это сделано, это работает, под это написано много кода.

А если б так конструировали самолеты - мы бы летали на каретах с крыльями. Упряжь (для сохранения совместимости с транспортировкой лошадью по взлетной полосе) была бы оставлена, хоть и безбожно портит аэродинамику. Где-то так, да? :)

>Делайте, кто вам мешает?

Отсутствие в этом какой либо необходимости. И даже не мне а много кому еще. Для начала пусть фаны микроядер расскажут - как они убедят юзерей что все это нужно. Но если допустить что микроядра все-таки нужны и озаботиться вопросом как сделать проц на котором микроядра не будут сильно сливать - может получиться что-то вот такое в первом приближении (мну просто подумал как сделать чтобы переключения контекстов были как можно более халявными по времени проца и даже накопал существующий дизайн проца наиболее похожий в этом плане на то что было надо).

Ответить | Правка | К родителю #256 | Наверх | Cообщить модератору

205. "Линус Торвальдс: "  +/
Сообщение от User294 (ok), 23-Сен-09, 18:14 
>Фантазёр Вы. Если бы да кабы да изобрели волшебный процессор...

Угу, я такой офигительный фантазер что даже лично програмил под проц где переключение контекста делалось одной командой, за 1 такт. Если вы чего-то не знаете и не видели и даже не можете себе это вообразить, подумав мозгом - это не мое упущение. Ну да, ява-блондины воспринимают процы и среду выполнения как данность свыше созданную богами и способны только генерить унылый говнокод, годный только для всякой бизнес логики. Унылые типчики, ибо думать мозгом не умеют ничерта.

Ответить | Правка | К родителю #129 | Наверх | Cообщить модератору

208. "Линус Торвальдс: "  –2 +/
Сообщение от Pilat (ok), 23-Сен-09, 18:19 
>>Фантазёр Вы. Если бы да кабы да изобрели волшебный процессор...
>
>Угу, я такой офигительный фантазер что даже лично програмил под проц где
>переключение контекста делалось одной командой, за 1 такт. Если вы чего-то
>не знаете и не видели и даже не можете себе это
>вообразить, подумав мозгом - это не мое упущение. Ну да, ява-блондины
>воспринимают процы и среду выполнения как данность свыше созданную богами и
>способны только генерить унылый говнокод, годный только для всякой бизнес логики.
>Унылые типчики, ибо думать мозгом не умеют ничерта.

Юзер с номером, Вы уже портировали ядро  линукса на Ваш чудо-процессор?

Ответить | Правка | Наверх | Cообщить модератору

214. "Линус Торвальдс: "  +/
Сообщение от User294 (ok), 23-Сен-09, 18:48 
Это слишком толсто, т.к. тут было про микроядра и процы для них -> в сад.
Ответить | Правка | Наверх | Cообщить модератору

225. "Линус Торвальдс: "  +/
Сообщение от letsmac (?), 23-Сен-09, 22:16 
>Унылые типчики, ибо думать мозгом не умеют ничерта.

Марку эльфийского проца  в студию. С документацией конечно. Фэйл №1999 на твой счёт уже записывать?


Ответить | Правка | К родителю #205 | Наверх | Cообщить модератору

227. "Линус Торвальдс: "  +1 +/
Сообщение от User294 (ok), 23-Сен-09, 23:02 
>>Унылые типчики, ибо думать мозгом не умеют ничерта.
>Марку эльфийского проца  в студию.

Да, еще попросите готовую операционку с настоящим микроядром в чистом виде. И чтоб на вашем писюке еще и все железо подхватила. Было бы в вашем стиле :D.

>С документацией конечно.

Для лично вас с вашими познаниями в системных делах - /dev/random вполне подойдет, имхо.

>Фэйл №1999 на твой счёт уже записывать?

Хоть 2^64-1 если хотите. Если вы еще не поняли - на мнение таких "умных" перцев как вы, несомненно, разбирающихся в осестроении и устройстве CPU, мне просто положить с прибором.Доступно излагаю? :)

P.S. и кстати если я не говорил - жиденькое тявкание и кидание какашками в оппонента когда аргументы кончились, спорщика не красит. Ибо выдает сопливую школоту. Проигрывать споры - да, это уметь надо. И признать поражение - требует мужества и усилия над собой. А вот тявкать из кустов пытаясь обгавкать оппонента - очень уж напоминает одну басню.

Ответить | Правка | Наверх | Cообщить модератору

189. "Линус Торвальдс: "  +/
Сообщение от yvuemail (?), 23-Сен-09, 14:03 
>P.S. я думаю теперь вы понимаете почему жабистов и прочих презрительно величают
>скрипткидисами - они тупо не знают как работает их компьютер, но
>при этом тем не менее имеют наглость считать себя програмерами.

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

Но считать, что любой, кто пишет код и при этом не знает "как работает его компьютер" (подразумевается полный объём знаний, да? вроде устройстваядра, как работает процессор и тд) - не программист - это надо иметь специфическое устройство головы.

Т.е. вот то, что написано в "P.S." это просто идиотское утверждение.

Извините. Спасибо.

Ответить | Правка | К родителю #127 | Наверх | Cообщить модератору

250. "Линус Торвальдс: "  +/
Сообщение от Чебурашка (?), 24-Сен-09, 10:11 
>И даже если с всем этим справиться - а теперь попробуйте это
>продать. А all скажет "а у нас и так сервера месяцами
>не падают - идите ка вы с вашей крутизной за бабки
>в сад, нас наше х86 гумно и традиционое ядро вполне устраивает".Что
>будете делать дальше?Даже интель свой итаник продавать не осилил толком.И?

Для обычной конторы в 20-30 человек действительно разницы не будет. Но есть определённый круг куда более специфических задач, где интел сливает по своим характеристикам. И в таких задачах клиент обычно выбирает альтернативные решения (спарки, например).

Но эти вкусности навряд ли станут доступны по цене для настольных ПК. По объективным причинам такие реализации сложнее и дороже интела и их фичи рядовому пользователю просто не нужны.

Ответить | Правка | К родителю #119 | Наверх | Cообщить модератору

61. "Линус Торвальдс: "  +/
Сообщение от Евгений (??), 22-Сен-09, 18:10 
Интел и сама кстати его закопать не смогла IA64 умерло при рождении
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру