OSDev

для всех
Текущее время: 28 апр 2024, 14:43

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: 14 июн 2012, 03:32 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
ZarathustrA писал(а):
SII, без обид, но вы не совсем правы


Да какие обиды, сколько людей -- столько и мнений. Йоду, по крайней мере, идиотом не называю -- оснований нет; скорей, наоборот -- один из наиболее грамотных форумчан (хоть я с ним и не согласен по целой куче вопросов).

Цитата:
Хотя не скрою, что вы выглядите весьма рьяным апологетом ARM (на грани фанатичности).


Скорей, я апологет древней техники -- той же Системы 360, PDP-11, VAX-11... Хотя прекрасно сознаю все недостатки этих архитектур -- как уже писал, идеала нет и вряд ли он возможен. К АРМу же я отношусь весьма и весьма критически, просто эта архитектура по всем почти статьям лучше, чем ИА-32, и куда перспективней по этой причине.

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


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

Сложность же схемы самого процессора определяется почти исключительно его системой команд, причём не только их набором, но и стройностью, простотой кодирования и т.п. Например, чтобы полностью выбрать из памяти команду Системы 360, достаточно выполнить не более двух операций чтения: команда всегда имеет длину 1, 2 или 3 полуслова (по 16 бит), причём длина однозначно задаётся двумя старшими битами первого байта. Ну а чтоб только определить длину команды IA-32, может потребоваться 5-6 или даже больше байтовых доступов. (Речь не о физических доступах -- понятно, что за один раз можно считать 16 байт или даже больше, а о логических, т.е. фактически о числе операций, необходимых для определения длины кода команды). Понятно, что при прочих равных блок выборки и декодирования команд Системы 360 будет много проще, чем для IA-32, хотя, если не брать в расчёт векторные команды (MMX, SSE и т.п.), то система команд означенного мэйнфрейма (образца аж 1964 года) не шибко беднее, чем у IA-32, а в работе обычно намного удобнее за счёт равноправности регистров и т.п. вещей.

Что касается умножения-деления, то аппаратная их реализация, конечно, быстрей, но не всегда намного; особенно это касается деления. Нет, глупо спорить, что их отсутствие в ранних АРМах (а деления нет и сейчас, не считая ядер Cortex-M, да и то не всех) является минусом, но есть и не менее несомненные плюсы. Один пример я уже приводил ранее: строковые операции. В ИА-32 они сделаны безобразно -- в первую очередь из-за жёсткой завязки на определённые регистры. В мэйнфреймах или там VAX-11 они ни к чему привязаны не были: какие хочешь регистры использовать, те и используй (вдобавок, на ВАХах у этих команд куча вариаций на все случаи жизни, так сказать). У ПДП-11 и АРМов их нет вообще, однако за счёт хитрых режимов адресации есть возможность их эффективной реализации программно -- и, естественно, со свободным использованием регистров (у ПДП-11 вообще две команды нужно для пересылки строк, не считая подготовительных для загрузки адресов и счётчика, причём одна строка может идти в прямом направлении, а вторая -- в обратном). Так что ещё неизвестно, что выгодней в конкретном случае. Другой пример -- то же самое умножение. В АРМах оно появилось давно и есть во всех выпускаемых процессорах. Как водится, использовать регистры можно свободно, а вот у ИА-32 вроде только в знаковом умножении ограничений нет, а в беззнаковом -- как в 8086 (т.е. только пара АХ:ДХ под один операнд и любой регистр под другой). Соответственно, на бесконечных регистровых пересылках/сохранениях/восстановлениях ИА-32 может растерять все преимущества от формально более богатой системы команд. Вот VAX-11 -- это другое дело, по эффективности системы команд он рвёт любую другую архитектуру, как тузик грелку.

Цитата:
Чистые RISC-и если я правильно помню считались очень перспективными лет 15 назад, когда считалось, что за счет упрощения процессора удастся получить значительно более высокие рабочие частоты и в итоге более высокую производительность. Однако с тех прошло уже много времени, ничего по сути не изменилось и энтузиазм широких масс поугас. Тот же Apple приложивший руку к появлению компании ARM, в своих компьютерах использовал IBM-овские POWER-ы а потом и вовсе перешел на x86 и вроде как никогда не рыпался перейти на ARM. Я не могу понять, что по-вашему мнению, кроме ровной системы команд высокая ценность которой для меня не совсем понятна, ARM может противопоставить x86 в сфере высокопроизводительных вычислений?


Ещё раньше они считались перспективными -- лет 25, пожалуй. Эта идея провалилась, о чём я уже тогда и говорил -- не в последнюю очередь за счёт того, что объём кода (в байтах) программы для настоящего РИСК-процессора намного больше, чем для ЦИСКа, а на выборку команд тратится уйма времени (ну и эффективность кэша падает). Собственно, я всегда был сторонником ЦИСКов -- но хороших ЦИСКов. ИА-32 же ужасен.

Теперь насчёт АРМов. В области высокопроизводительных вычислений в настоящий момент они не могут противопоставить ничего, но не в силу достоинств/недостатков системы команд, а из-за отсутствия столь же быстрых процессоров, как интеловские -- а это не имеет прямого отношения к системе команд как таковой и определяется назначением процессоров и прочим спросом-предложением. (Грубо говоря, даже самый дохлый Атом многократно быстрей любого мэйнфрейма 1960-х, но ведь современные мэйнфреймы, сохранив программную совместимость с теми, обойдут даже самый мощный интеловский процессор без всякого использования новых команд, только на старых -- а про Атом и говорить нечего). Однако это не значит, что в будущем положение не изменится, причём у АРМов, если отбросить чисто полупроводниковые вещи (они с архитектурой не связаны), побольше возможностей для достижения высокой производительности в силу относительной простоты. Исполнительные блоки (АЛУ, чтение-запись данных и т.п.) у любых процессоров одинаковы, поскольку их устройство определяется, грубо говоря, правилами двоичной арифметики. А вот выборка-декодирование команд различается кардинально, и для ИА-32 эти блоки многократно сложней -- ну а чем сложней блок, тем трудней заставить его работать на большой скорости. Кроме того, у ИА-32, как уже отмечалось, требуется многоступенчатая система даже для определения длины кода команды, не говоря уже о декодировании, а у АРМа полностью декодировать можно за один заход (правда, с системой команд Thumb-2 несколько сложней, но и там декодирование многократно проще, чем у ИА-32). В итоге при прочих равных (уровне технологий, числе транзисторов и т.п.) АРМ сможет существенно быстрей выбирать и декодировать команды, а значит, и передавать их на исполнение. Добавьте сюда меньшую зависимость по регистрам из-за "ортогональности" его системы команд, что повышает возможности суперскалярного выполнения.

Ну и напоследок про РИСК. Об этом я раньше писал, но вкратце повторюсь: современный АРМ почти ничего общего с самой концепцией РИСКов уже не имеет. Остался лишь один общий момент: способность обрабатывать данные только в регистрах процессора (т.е. невозможность прямого выполнения операций со значениями в памяти -- их сначала надо загрузить). Это, конечно, уменьшает производительность, но не так уж сильно. По богатству же основной системы команд он если и уступает ИА-32, то несильно, а всякие там векторные расширения и т.п. -- вещи всё ж специфические, далеко не всегда дающие эффект, да и у АРМов такие команд нередко имеются... Ну а классический РИСК, из которого выкинуты чуть ли не все команды -- действительно ерунда, потому они или вымерли (ну, почти вымерли), либо фактически превратились в ЦИСКи, сохранив лишь часть черт своих предков. В общем, опять то же самое вольное обращение с терминологией.

Цитата:
2) Что вы понимаете под суперкомпьютером? Пока понятно только то, что вы оперируете каким-то своим собственным определением отличным от общепринятого, но не понятно каким, что вводит в некоторое замешательство. Могли бы вы развернуть свою точку зрения и привести примеры таких машин? Я пока себе не представляю высокопроизводительные вычисления без распараллеливания.


Я как раз оперирую исходным определением, которое сейчас "затроллено" вольным использованием терминов. Ключевым для меня является слово "компьютер", т.е. некая единая машина, которую нельзя разделить на части так, чтобы каждая эта часть продолжала работать сама по себе. Если имеется суперкомпьютер со 128 процессорами, то выдернуть из него часть процессоров, конечно, можно (во всяком случае, в теории), однако выдернутый процессор работать уже не будет -- ему ж нужны и память, и устройства ввода-вывода. А вот в кластерах можно смело резать связи между отдельными компьютерами -- и каждый из них сохраняет индивидуальную работоспособность. Поэтому кластер для меня -- не суперкомпьютер, а именно кластер.

Что же касается распараллеливания, то в целом Вы, конечно, правы. Но здесь есть два "но". Первое -- не всякая задача может быть распараллелена, и для ускорения её решения имеется только один путь -- поднимать производительность одного отдельно взятого процессора. Ну а второе -- есть распараллеливание на уровне потоков (увеличение числа процессоров, чтобы параллельно выполнять несколько потоков) и распараллеливание на уровне данных (СИМД-команды). Одно другому не мешает и предназначено для решения разных задач, по большому счёту. Например, если надо выполнять действительно разные вычисления, то нужно несколько независимых процессоров, а вот если алгоритм один, и данные можно обрабатывать параллельно, то эффективней СИМД-команды (поскольку добавить в процессор несколько АЛУ проще и дешевле, чем делать несколько полноценных процессоров, даже если индивидуально каждый процессор проще).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 июн 2012, 05:31 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Вон у нас есть супер компьютер в котором процессоры связанны сетью по принципу трехмерной решётки. Где сеть проложена не через хаб, а по двум сетевым. Потеря одного процессора испортит часть решётки. Так как последующие за ним процессоры не будут получать данные. А следовательно вся система не будет работать правильно.
И таких систем в TOP500 полно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 июн 2012, 22:04 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
SII писал(а):
Yoda, знаете, дискутировать с Вами действительно бессмысленно, поскольку основная масса аргументов у Вас, скажем так, странновата, если не является вообще полным бредом.

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

SII писал(а):
Так что не буду на этот раз тратить времени, замечу лишь, что в последнем Вашем посте к полному бреду однозначно относится утверждение о том, что Z8000, 68000 и PDP-11 -- не "истинно" 16-разрядные машины. То, что они при определённых условиях могли формировать физические адреса, превышающие 16 разрядов, не означает, что они не 16-разрядные.

Я и не сказал, что они не 16-разрядные. Я сказал, что они не совсем 16-разрядные, т.к. адресная разрядность - один из важных компонентов архитектуры. Точно так же, как для вас полемичен вопрос суперкомпьютеров, я утверждаю, что вопрос разрядности процессоров не решается директивно, как это пытаетесь сделать вы. А 68000 я бы (да и не только я) вообще отнёс к 32-битным архитектурам. Если вы думаете, что вопрос определения разрядности предельно прост, почитайте вот эту статью, может она сподвигнет вас на размышления: http://www.ixbt.com/cpu/cpu-bitness.shtml
А в идеальном случае, может и перестали бы считать, что любое мнение, отличное от вашего, - полный бред.

SII писал(а):
лично я не считаю и не буду считать суперкомпьютером (в единственном числе) машину, состоящую из множества компьютеров.
...Соответственно, смею предположить, что мы с Вами расходимся из-за разницы в терминологии, и то, что для меня является суперкомпьютером, не только в десятку, но и во весь ТОП-500 не попадёт...

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

SII писал(а):
Отвечать не трудитесь, я всё равно проигнорирую, поскольку опровергать регулярно появляющиеся бредовые высказывания порядком надоело

Я понял. Попал в грубый "игнор" за несогласие с вашим мнением. Ну что ж, в таком случае я пишу не для вас, а для других читателей этой темы, кому это интересно.

SII писал(а):
А менеджер (или диспетчер, как переводили MMU в советской документации) памяти PDP-11 ну ничего общего с сегментацией 8086 не имел -- совсем другой принцип

Я же нигде не писал, что у него такой же принцип работы. В то время многие разработчики пытались преодолеть барьер 64кБ памяти, навязанный 16-битной архитектурой и каждый шёл своим путём.

SII писал(а):
Я как раз оперирую исходным определением, которое сейчас "затроллено" вольным использованием терминов. Ключевым для меня является слово "компьютер", т.е. некая единая машина, которую нельзя разделить на части так, чтобы каждая эта часть продолжала работать сама по себе.

У меня такое впечатление, что вы неоправданно консервативны во многих вопросах. Это не понятие затроллено, а вы живёте устаревшими представлениями. Никто, поймите, НИКТО сейчас не будет делать абсолютно неделимый суперкомпьютер. Вы, конечно, можете считать это полным бредом, ментальным геморроем и воспалением делирия, но лучше, если определения оставите при себе и попытаетесь понять идею. Да, первые суперкомпьютеры были неделимы. И такая ситуация продолжалась до тех пор, пока фактически любая решаемая задача требовала 100% отдачи всей имеющейся вычислительной мощности.
---- Начало лирического отступления
Вот пример из моей практики. Для моделирования физического процесса методом Монте-карло, когда я ещё работал на серпуховском ускорителе, мне понадобилось найти большой полином (от 64 до 128 бит), примитивный над полем по модулю 2. Такие используются, например, для расчёта контрольных сумм CRC. Я реализовал алгоритм по Кнуту, а в спец-литературе нашёл программу на фортране для Cray-1 с указаниями на то, что она для определённых значений работала несколько часов. Кстати, результаты работы в книге тоже приводились, т.к. в то время несколько часов работы Cray - это уже научный труд, но полиномы были плохие, у них было недостаточное рассеяние. Моя программа была на С и работала на VAX-11 тоже несколько часов при тех же значениях (то есть, за десяток лет мощность СК стала доступна на мэйнфреймах). Сейчас она работает несколько секунд на настольном ПК. Но во времена ПЕРВЫХ суперкомпьютеров даже такая простая задача была под силу только суперкомпьютерам.
---- Конец лирического отступления
Другими словами: для старых суперкомпьютеров сколько бы ни было вычислительной мощности, её всегда будет нехватать.
Но сейчас совсем другие реалии! Сейчас ни одно предприятие не покупает суперкомпьютер только для того, чтобы попасть в рейтинг. Большинство задач вполне решается настольными системами, а те, которые не решаются, имеют вполне конкретные требования к производительности. Сейчас смотрят класс задачи, - ага, аэродинамика. Делают пробный прогон, оценивают, какая мощность потребуется, например, для разработки Суперджет-100 за разумное время, и в соответствии с этой потребностью строят систему. Если вдруг выяснилось, что мощность недооценили (например, военные присосались к проекту и захотели срочно обсчитать новый стратегический самолёт), ничего страшного, - НАРАСТИМ в соответствии с потребностью. Какими модулями? Ага, для вашей аэродинамики потребуется столько-то модулей с 2ГБ и столько-то с 4ГБ. Хлопнули по рукам, разошлись, сделали. Заодно поменяли пару вышедших из строя модулей.
Итого, для современного суперкомпьютера на первый план выходят следующие критерии:
1. Масштабируемость.
2. Модульность.
3. Гибкость архитектурных единиц.
4. Цена в расчёте на *флопс.
Сейчас не делают АБСТРАКТНО мощных компьютеров, их делают под КОНКРЕТНЫЕ задачи или, по крайней мере, под класс задач. Поэтому ваши представления о неделимости суперкомпьютера в современных реалиях... вредоносны (извините).

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 июн 2012, 23:31 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
SII писал(а):
Цитата:
2) Что вы понимаете под суперкомпьютером? Пока понятно только то, что вы оперируете каким-то своим собственным определением отличным от общепринятого, но не понятно каким, что вводит в некоторое замешательство. Могли бы вы развернуть свою точку зрения и привести примеры таких машин? Я пока себе не представляю высокопроизводительные вычисления без распараллеливания.


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


Дополню самого себя. Тут меня просветили, что проклятые буржуины используют термин "high-performance computing clusters", т.е. американский термин совпадает с моим.

Понятно, что для краткости речи можно говорить "суперкомпьютер", но вольное обращение с терминами приводит в конечном итоге к их выхолащиванию. Одни утверждают, что Си -- язык низкого уровня (видите ли, есть некие языки, которые реально высокого уровня, а этот -- так, тот же ассемблер почти), другие микроядром называют всё подряд, включая Винду, а заодно выдумывают нано- и пикоядра... Вот поэтому я и предпочитаю предельно жёсткие определения везде, где только возможно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 15 июн 2012, 02:28 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Согласно буржуйской статье в википедии о суперкомпьютерах есть два основных подхода для систем с массовым параллелизмом: Grid computing и Computer cluster. И, самое важное, Grid computing, в отличие от кластеров подразумевает СЛАБО связанные друг с другом системы. Примером грид-вычислений является программа SETI@home. Таким образом, HPCC - это частный случай более общего понятия, к тому же наиболее соответствующий традиционным представлениям о суперкомпьютерах.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB