Pull to refresh

Comments 51

На фотографии — топология, а не микроархитектура. Микроархитектура — это вообще не о том.
— Добро пожаловать в Общество зануд! Возьмите себе стул.
— Вообще-то, у этого, как вы выразились, стула, нет спинки, так, что технически это табуретка.
— Похоже, у нас новый председатель!
UFO just landed and posted this here
Микроархитектура — это набор внешних процесорных команд, доступных пользователю (программисту), ну и связанные с ним — какие есть регистры, где какие флаги и прочее, она же внутри транслируется на команды физической архитектуры (или микроархитектуры уровнем ниже), которая уже исполняется непосредственно на кристалле. Т.е. микроархитектура у intel — CISC, однако внутри, там, где это уже не доступно программисту в явном виде, RISC, а микроархитектура представляет из себя последовательность RISC-команд, соответствующих одной CISC-команде, вызванной программистом.

Грубо говоря, виртуальная машина нулевого уровня (очень очень грубо говоря словами Таненбаума).

Топология же — не более чем размещение на кристалле отдельных элементов — шин, ядер, памяти и прочего, что там есть (если точнее — способ размещения).
Не совсем так. То, что доступно программисту — это как раз архитектура, а ее физическая реализация — микроархитектура. То есть у Intel архитектура — CISC x86, а внутри нее микроархитектура RICS.
А у ARM соответственно есть архитектура, например ARM v8, которая может быть реализована, например, как микроархитектуры Cortex A57 или Cortex A53.
Это называется набор инструкций(ARMv8/x86) и собственно архитектура(Haswell/A57/Kryo)
Вы всё перепутали.

Архитектура не определяет детали реализации.
Она описана в документе, называемом Architecture Reference Manual.
Например в случае ARM:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html
Набор инструкций это лишь часть его.

А микроархитектура это как раз и есть конкретная _реализация_ архитектуры.
https://ru.wikipedia.org/wiki/Микроархитектура
Ох, перепуталось в голове. Микрокод — доступные методы программисту, транслируемые в нативные. А микроархитектура — да. Спасибо за правку.
У нас это (x86, ARM) называли программистской архитектурой.
А топология — это физическое размещение элементов на кристалле.

P.S. Кстати, топология по-английски — layout, а то, что они называют topology — это блок-схема по-нашему.
Грубо говоря, топология — взаимное расположение элементов (например, топология сети «звезда»). Кристаллы двух процессоров с одной микроархитектурой могут иметь разную топологию. Например, 4х-ядерный настольный Core и 2х-ядерный мобильный Pentium в рамках одного поколения.
Нененене, топология сети и топология микросхемы — это вообще не взаимосвязанные вещи. Топология сети по-английски topology, а топология микросхемы — layout, но в России/СССР их почему-то стали называть одним и тем же словом.
Я и не утверждаю, что это одно и тоже. Привёл простую топологию сети в качестве примера — не приходит в голову пример простой топологии центрального процессора.
Потому что топология даже самого простого центрального процессора — это вот такая же вот картинка из сотен тысяч транзисторов и миллионов кусков металла, простой пример там привести совсем нельзя.
Хотяяя
https://en.wikipedia.org/wiki/Intel_8086#/media/File:Intel_8086_CPU_Die.JPG
Вот простая топология: Intel8086, всего-то 29 тысяч транзисторов)
Если бы не заголовок и контент статьи подумал бы, что это спутниковый снимок города. Дома, улицы, парки, даже парковки с авто в правой верхней части видны.
UFO just landed and posted this here
Как не хочется чувствовать себя электроном в микросхеме)
«А потом я посмотрел Tron, и мысль в голове засела еще глубже» =)
Научная работа «CAF: Core to Core Communication Acceleration Framework» будет представлена на 25-й конференции по параллельным архитектурам и методам компиляции PACT '16, которая состоится 11-15 сентября 2016 года в Хайфе (Израиль).

Статья вошла в сборник докладов Proceedings of the 2016 International Conference on Parallel Architectures and Compilation, стр. 351-362, doi:10.1145/2967938.2967954. Сборник докладов, вероятно, раздадут участникам конференции и опубликуют в интернете.


Конференционная статья не является надежным peer-reviewed источником. Стоит добавить в заголовок что-нибудь вроде "… предложили способ, который возможно ускорит..."

«Ну слава богу, можно продолжать писать говно-код». (с) Не помню.
UFO just landed and posted this here
Ещё бы этот код неглючил адски…
Не, всё фигня. Проблема с количеством кадров на самом деле. Просто негде взять достаточное количество хороших программистов, чтобы была возможность пойти по первому пути.
UFO just landed and posted this here
А потом тебе говорят нечто в духе: У наших заказчиков рабочая конфигурация — это одноядерный Celeron 1.2 со встроенной видеокартой, полгига оперативки, винт на 40 гиг, и им нужно что бы некая процедура, которая даже на i7 с выносом части расчетов на GPU считается за 30-40 секунд у них считалась за 5. Иди, проявляй чудеса оптимизации, ты же можешь, тыжпрограммист, и вообще — тебе премия нужна или нет?
UFO just landed and posted this here
Как определить предел? Один программист скажет: я тут уже всё перепробовал, все микро-оптимизации, профилировал загрузку конвеера процессора и кеш-промахи. Больше из этого не выжмешь. А другой программист возьмёт и заменит сортировку пузырьком на другую.
UFO just landed and posted this here
То есть, платим не за результат, а за видимость деятельности.
UFO just landed and posted this here
Если программисты будут делать разные программы, то напрямую сравнить нельзя.
Значит, будет доля субъективизма: какая программа больше понравилась, ту и премировали. Но тут надо быть очень хорошим пользователем, т.к. можно награждать любимый «жанр» (для примера, я хорошо разбираюсь в текстовых редакторах и тот, который меня устроил, я наградил, а в музыкальных плеерах не разбираюсь, и каким бы плеер не был хорошим, мне этого не понять).
Если несколько соревнуются в написании одного и того же, это умножение расходов.

И ещё два момента:
1. Награждать придётся всю команду программистов, за конечный продукт. Оценить результат по компоненту сложно, т.к. зависит от условий, куда его поставят. Это размывает ответственность.
2. За бесплатно писать никто не будет, даже кривой код. Придётся платить среднее по рынку всем, и приз делать существенным (чтобы был смысл стараться стать победителем).А значит, г-нокодеры как писали г-но, так и будут его писать — платят же…
UFO just landed and posted this here
То, что ваши идеи я не считаю работающими.
UFO just landed and posted this here
Я пользуюсь принципом: хочешь сделать хорошо, сделай это сам.
Обычно, после этого претензии к софту исчезают, потому что изнутри понимаешь, что не всё так просто (или всё же получается то, что устраивает).
UFO just landed and posted this here
Ну почему же? просто если ты это НЕ сделаешь — то останешься без премии, ведь тыжпрограммист и вообще «удругихвсеработает».
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
А вы точно проводите адекватное сравнение? Не сравниваете, например vim с Idea?
UFO just landed and posted this here
Не забывайте что помимо неоптимизированного кода есть еще функционал, которого в старых ОС было меньше.
UFO just landed and posted this here
Или меньше — в Vista появилось «Aero». Не скажу, что мне этот функционал прям необходим, но то, что он требует на себя отдельных ресурсов — факт.
UFO just landed and posted this here
Нет. Это одна из внутренних оптимизаций процессора, напрямую программисту не доступная, как и конвейер, например. Косвенно же это проявится при написании многопоточных приложений и прочих OpenMP, OpenCL и подобного, нацеленного на использование многоядерности.
>>одна из внутренних оптимизаций процессора, напрямую программисту не доступная, как и конвейер, например
А как же, например, постоянные мысли про грамотное распределение кода по портам, которыми перманентно озабочены программирующие на asm-е или всякое там выравнивание на длину строки кэша и прочая борьба с конфликтами кэширования, которая и в более высокоуровневых языках бывает (выше asm-а, я имею ввиду)? На мой взгляд, это как раз и называется «специальным образом писать программы».
Я думаю, тут будет как с введением второго набора исполнительных юнитов в конвеер. Любая случайно выбранная программа получает от этой оптимизации ускорение в 1.3-1.5 раз, но если мы хотим выжать теоретический максимум 2.0, нужна поддержка компилятора.
Sign up to leave a comment.

Articles