All streams
Search
Write a publication
Pull to refresh
4
0
Send message

Прямо всех банкротов, и аналогов ИП тоже? Или все тоже Too Big To Fail как и везде? Да и не очень понятно, какое это имеет отношение к социализму, как концепции "социальной справедливости". Скорее это стоит называть ручным регулированием рыночной экономики, плохо это или нет это уже другой вопрос.

"Одна стана, две системы" это в основном про Тайвань, а не экономику. Но интересно было бы узнать, что там в Китае такого сильно "социалистического"?

Такой мульти-этапный препроцессинг входных данных, обычно ухудшает качество предсказания ML моделей. Лучше сразу строить фичи для модели забрасывая сырые входные данные и другие факторы.

Просто ваша картинка с вики, а вики вы не доверяете ;)

Вики доверяю, но картинка с микроскопа, а вот откуда взялась информация в вики и была-ли она правильно проинтерпретирована большой вопрос. При прочих равных доверяю более "прямолинейному" источнику. Не докапываюсь, но мне реально интересно почему так получилось. Тут есть варианты: картинка - не картинка, кэши на ней - не кэши. По поводу первого то, что кто-то подсунул фейковую фотку чипа, верится с трудом.

Суть моего спора в том, что ОоО как и in-order -- это средства, которые дают выигрыш в определенных условиях и предлагают tradeoff. В некоторых случаях как раз и получаются ваши 2-3 раза, в других получается иначе.

С этим глупо спорить ) Мои тезисы были по поводу десятков процентов прироста, в общем случаи. И тупиковости развития in-order архитектур, в рамках концепции увеличения instruction-level parallelism(то есть гонки за максимальной производительностью)

Не понятно откуда взялись исходные данные, я даже нашел ссылку на оригинальный пэйпер И там действительно есть фраза "The Alpha 21164 cache partitions, containing 7.2 million of the 9.3 million total devices, are, in themselves, very large and difficult to verify."

С другой стороны я вижу картинки чипа, там эти кэши идентифицируются тривиально, и по площади получается 50 на 50.

По моим ссылкам выше указаны явные цифры, зачем гадать?

Извините, но я больше доверяю глазам, чем вики, если вы имеете ввиду отсылку "The caches and the associated logic consisted of 7.2 million transistors" Единственное объяснение только, если кэши имеют значительно большую плотность по сравнению с логикой по соотношению транзисторы/площадь.

Так их и делали некоторое время, пока лёгкость и простота конструкции позволяла получать существенный выигрыш по производительности за счёт роста частот

Первым и последним in-order супер скалярным дизайном(в экосистеме x86) был перво-пень и его аналоги, это было почти 30 лет назад.

Но есть ещё и мобильные, а также встроенные, где in-order вполне себе прижились, их делали и продолжают делать.

Cortex-A57 2012 год, OoO дизайн. in-order жив только там где не нужна производительность и/или нужна сильная энергоэффективность, и еще хорошо бы за 3 копейки (embedded).

Так-то у альфы 1.8 млн транзисторов на логику, а остальное кэши. А у пентиума на логику 4.5 млн.

Смотрю вот это: https://en.wikichip.org/wiki/dec/microarchitectures/alpha_21164 Там есть картинка с разметкой блоков на чипе, кэшей/логики там примерно 50 на 50.

А так у intel вполне был конкурент в лице amd, если бы in-order дизайны были конкурентно способны, их бы и делали. А не вот эти Атлоны, когда Jim Keller в первый раз пришел за intel(более чем 20 лет назад).

Нельзя просто так сравнивать OoO и не OoO, особенно разные линейки разных производителей, тем более такие древние. Это все имеет смысл в комплексе при прочих равных. Так как надо учитывать еще задержки и темп(latency/throughput) инструкций, размер кэшей и их задержки, качества предсказателя ветвлений, глубина конвейера.

По факту целочисленное было 2-issue и у того и другого. (проблема в том, что в in-order архитектуре, вероятность stall совершенно нелинейно растет от "ширины параллелизма". если бы у них был хотя бы 4-issue параллелизм в рамках одного целочисленного исполнительного/регистрового блока это можно было бы зачесть за пример отражающий современные реалии)

Alpha 21164 - 9 300 00 транзисторов

Pentium Pro - 5 500 000 транзисторов

То есть разница по транзисторам почти в два раза, а по перфомансу лишь 20% хуже.

В софтвере это менее актуально, но какой смысл делать хардверный проект по повышению производительности без измерения производительности и сравнения ее с другими примерами?

Так они вообще не измеряют или не измеряют только на курсе ОоО? Если первое то да, совсем плохо. Если второе, ну можно понять, как профессору еще согласовать "когнитивный диссонанс" типичного студента - "мы трудились, разбирались, реализовывали это ОоО, а повышение производительности в рамках курса повышения производительности получилось глубоко отрицательное" ? Надо еще один разъяснительный курс читать, почему получилось, так как получилось. Но я бы на месте преподавателя на последнем занятии, собрался с духом и написал бы на слайде, что-то в духе "Товарищи студенты, разработанный в рамках нашего курса проект, имеет большое теоретическое значение, так как раскрывает принципы построения высоко производительных OoO процессоров общего назначения. Несмотря на это учебная реализация на которой мы рассматривали эти принципы, в рамках данного курса не может показать прироста производительности на практике, в чем вы можете убедиться произведя соответствующие измерения. Потому что (дальше идет список потенциальных причин). Несмотря на это данные знания вам обязательно пригодятся на практике при строительстве следующего Большого Андронного Коллайдера (tm). Спасибо за внимание!"

С моей колокольни вы просто ожидаете навыков уже состоявшегося инженера от немного улучшенной версии "вчерашнего школьника". В софтварь так же приходят джуны после университетов.

1) Если вчерашний студент - может стабильно написать кусок кода для простой изолированной задачи, это уже хорошо и с этим можно работать. (но такому если мозги на месте, можно и самому научится за полгода-год)

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

3) Если что-то знает из дискретной математике, теории графов. Или понимании принципов хорошего объектно-ориентированного дизайна.

Так вот в этой воронке до уровня 3), мало кто доходит, хотя они это все учили в ВУЗе по специальности, даже в самом посредственном. И объяснений тут может быть несколько, типичные: плохо учили или студенты раздолбаи не учились. Но я больше склоняюсь к концепции, что теория без практики мертва, и пока условные 10 000 часов не оттарабанишь, глубокого системного понимания и мышления не будет. И главное подспорье на этом пути, это не поддельный, настоящий интерес к своей профессии, все остальное придет с опытом.

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

Так то современные процессоры для конкретики zen 2 могут декодировать до 4 инструкций за такт(несмотря на x86 адок с переменной длиной и сложностью декодирования), складывать их в кэш микроинструкций и получать до 8 микроинструкций на исполнение в back-end. Arm neoverse-n1 - 4 way decode, то есть 4 инструкции за такт.

Далее, при OoO, даже если есть много вычислительных устройств (ALU,
умножители итд) производительность может упираться в производительность LSU (load-store unit) / подсистемы памяти. Латентность доступа к памяти при промахе многоуровневого кэша может быть сто тактов и выше. Чтобы этого избежать, нужно иметь двойной конвейер в LSU.

Могут, но load-store обычно является отдельным исполнительным юнитом, и возможно не одним. Поэтому в OoO дизайне он может "зависнуть", в то время пока будет молотиться параллельный "instruction path". А с значительными задержками памяти ничего не сделать, это просто данность. (если мы говорим про высоко производительные CPU общего назначения) Плюсом OoO не идет один, он идет с register renaming, который развязывает зависимости по архитектурным регистрам, и обеспечивает бОльший параллелизм. Широкий front-end и back-end дают значительный прирост IPC, при сопоставимой или бОльшей частоте. А OoO позволяет все это хозяйство "связать", сглаживая возможные stall в исполнении(и доступе к памяти) и декодировании, уравнивая общий темп работы системы и обеспечивая максимальный instruction-level parallelism.

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

Один из вариантов, что учебный-наивный OoO давал значительно худшую производительность и это было очевидно, поэтому учеников было решено не расстраивать.

Вообще для таких вопросов удобно исследовать вебсайт https://www.eembc.org/coremark/scores.php

ARM:

neoverse-n1, 4-decode 8-issue OoO, "20 000" на ядро 2500 Mhz

Raspberry Pi 4B/ARM Cortex A72, 3-decode 3-issue OoO, "12 000" на ядро 2145 Mhz

То есть если даже сравнивать с 2-decode 2-issue(методом интерполяции, сферического коня в ваккуме), будет те самые 2 раза. Для супер скалярного дизайна без OoO разрыв будет еще больше. Поэтому считаю что оценка в 2-3 раза боле чем валидна.

Ну 10 раз как я понял шел разговор в сравнении с тем, что я бы назвал процессор с одним исполнительным устройством. Если посмотреть микроархитектуру высоко производительных OoO процессоров(intel/zen2/arm neoverse-n1/apple m1) , то они могут долбить до 8 микроинструкций параллельно, плюсом идет маскировка задержек длительных инструкций, которые в классических суперскалярах(статических?) давали бы stall. При прочих равных, как мне кажется больше 2-3 инструкций параллельно "в среднем по больнице" в классическом суперскаляре не сделать. То есть OoO дизайн в любом случаи будет давать в 2-3 раза большую производительность, и это точно не десятки процентов. Плюсом идет то что компилятору не надо правильно разбрасывать инструкции по коду, чтобы не было stall. Вопрос в том, что это раньше выливалось в серьезный дополнительный транзисторный бюджет, но сейчас это стало минорной проблемой, до того что продают обычные потребительские процессоры с современным OoO дизайном до 8 ядер на чиплете. Естественно это сегмент высоко производительных вычислений, и соответсвующего энерго потребления (не мобилки).

Чтобы сделать хороший бенчмарк надо понимать, что и как работает, где узкие места, где потенциально алоритмы с плохой асимптотикой, и т.д. Так то пусть делают и в QA и разработчики, если это эффективно.

В одном интервью Jim Keller говорил, что OoO и сопутствующие оптимизации где-то в 10 раз набрасывают. В принципе так и получается, если учитывать чистый параллелизм, по исполнительным блокам, плюсом маскировку задержек, в том числе кэш-промахов по памяти.

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

PS: а по поводу Универа, там даже не брокер распродавал, а его отмаржинколил НКЦ (Национальный Клиринговый Центр) из-за образовавшейся задолженности.

По моему вы несколько путаете брокера и депозитарй. У депозитария не может быть проблем с шортами или еще что-то связанное с деньгами. Так как это не зависимая структура от брокера, где хранится информация о ваших правах владения активами. И у них обычно плоская двух-уровневая структура, по крайней мере в России, то есть вышестоящим будет - НРД. Конечно, можно найти какого-то сомнительного брокера состоящего в "близких отношениях" с конкретным депозитарием или мошенника. Но я лично ни одного случая, когда у достаточно известного брокера, что-то пропадала из депозитария не знаю. Даже когда в 2008 году, банкротились всякие сомнительные конторы типа Юниаструма, как раз единственным способом спасти деньги было - закупиться на рынке активами и получить запись в депозитарии, потом перевести к другому брокеру и продать.

PS: это не касается "иностранных" акций, с которыми там довольно мутная схема.

Так я это и имел ввиду, когда написал "был там не трейдером в привычном понимании", то есть что-то разрабатывал и понимал, а не просто на кнопки bye/sell жал. (в привычном понимании обывателя)

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

Тогда я не очень понял к чему относился изначальный комментарий, если не ручное то - роботы/hft.

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

PS: по поводу трейдера я как-раз и имел ввиду, что он не просто заявки вводил в терминал, а что-то скорее всего понимал.

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Developer, Application Developer
Senior
C++
C++ STL
Linux
Python
Machine learning
Applied math
Algorithms and data structures
Code Optimization