Cache coherency, и что происходит при записи в L1 в статье я не рассматривал. 2 потока из теста работают над непересекающимися областями данных, которые, однако, конкурируют за место в LLC. Единственный элемент, в который пишут оба потока — спинлок.
В статье Хеннеси, на которую я сослался в тексте, есть инфа, что происходит при L1 hit on store.
Это скорее подробное разжевывание тезиса о том, что LLC — inclusive. Что описано в документации. Несмотря на это, мне часто приходится объяснять это клиентам, которые ссылаются на первую диаграмму: «вот у вас же в powerpoint нарисовано, что у каждого ядра есть свой кэш. Куда же из него подевались наши данные, почему кэш миссы?».
В двух словах — они есть, но не совсем «свои собственные». То есть есть вероятность, что ядра в некоторых условиях могут вытеснять чужые данные из чужих L1, L2 кэшей.
Нет, не описано. Но можно нагуглить несколько релевантных академических статей, в том числе опубликованых архитекторами Intel по запросу «L1 L2 LLC inclusive».
Обычно архитекторы просто прогоняют на модели нового дизайна огромный синтетический бенчмарк и пытаются выбрать вариант политики с лучшей производительности и наименьшим расходом энергии.
Тем, что L3 (LLC) в текущих реализациях Core i7 — fully inclusive of L1 and L2. То есть если линия вытеснена из LLC, LLC автоматически посылает сигнал об изменении статуса этих данных на Invalid в нижележащие кэши.
Для сравнения, если по какой-то причине линия пропадает из L2, в L1 она все еще может оставаться.
>>То есть выпытать код от карты с магнитной полосой труднее? :)
>Да, т.к. владелец карты может его не знать.
А Вы очень смелый человек… Если уже дело дошло до пыток, пин код лучше бы знать.
1. Medfield — первый мобильный SoC от Intel, но не первый SoC. Уже несколько лет продаются SoC для рынков CE, IVI, industrial: Sodavile, Groveland, Berryville, Tunnel Creek в 3 вариантах.
3. Возможно, потому, что APU — зарегистрированая торговая марка? Если не шинами, то как связывать GPU и CPU ядра? И в SNB, и IVB GPU одинаково общается с остальными компонентами на кольцевой шине — с ядрами, частями LLC и системным агентом.
4. Это сопроцессор, который умеет исполнять тот же x86 код, что и хост, а не специальный data parallel набор инструкций с ограниченными возможностями программирования сложных управляющих структур.
Joel Spolsky:
I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
Я как сотрудник Интел очень даже люблю PC. Но в европе может быть сложно с сертификацией. Хотя если приспособить сбоку отдельную safety железку, может быть прокатит.
мой ответ:
1. Конечно! Я специально и написял, что в IL так наворотить сложно, а в structured text — запросто.
Однако приведенный код, как ни странно, «боевой». Я видел приложение, гда надо было перемножать 4x4 матрицы почти каждый цикл.
2. Сращивание HMI и контроллера конечно удобный пример для Интел, но действительно часто не полезно для крупного объекта. Хотя бывает и наоборот: на конвейейре фабрики бмв видел HMI у каждого робота отдельно, в нем видно пошаговое исполнение structure text, и еще в операторском помещении все дублируется.
izard> Получил личный коммент от muzzy0.livejournal.com. Это инженер, который занимается пром
izard> автоматизацией. У него нет аккаунта на хабре.
muzzy0>
1. Пример с тремя вложенными циклами — просто отличный. Его должны показывать на первом уроке курса по structured text — как пример «как нельзя программировать ПЛК» :)
Подобных дел можно и в instruction list наворотить, но несколько сложнее.
Это было одной из первых любопытных вещей, с которой я столкнулся, когда столкнулся с программированием контроллеров. Не надо тащить на ПЛК десктопные привычки :))
У тебя и так программа в цикле крутится, так зачем запихивать такой здоровый цикл в один проход главного цикла? Напиши свою программу так, чтоб за один проход главного цикла у тебя выполнялся один (ну или не один, а в пределах разумного) проход твоего цикла — и порядок :)
А насчёт сращивания контроллера и HMI — чем крупнее объект, тем физически дальше они друг от друга и тем большая вычислительная мощность им требуется. Кроме того, контроллеры могут быть дублированными (как S7-400H) и их может быть несколько. А HMI сервера достаточно одного, хоть и дублированного. Вот только стоит этот сервер в шкафу, в серверном помещении, даже без монитора, а люди сидят за клиентскими станциями, тонкими (веб) и толстыми (рантайм скады).
Computer Architecture: A Quantitative Approach
Обе книги написаны Хеннеси(которого я уже упоминал) и Паттерсоном.
Я не сказал бы, что они для newbie, но с другой стороны, они (особенно первая) не требует каких-то prerequisites.
В статье Хеннеси, на которую я сослался в тексте, есть инфа, что происходит при L1 hit on store.
Обычно архитекторы просто прогоняют на модели нового дизайна огромный синтетический бенчмарк и пытаются выбрать вариант политики с лучшей производительности и наименьшим расходом энергии.
Для сравнения, если по какой-то причине линия пропадает из L2, в L1 она все еще может оставаться.
>Да, т.к. владелец карты может его не знать.
А Вы очень смелый человек… Если уже дело дошло до пыток, пин код лучше бы знать.
3. Возможно, потому, что APU — зарегистрированая торговая марка? Если не шинами, то как связывать GPU и CPU ядра? И в SNB, и IVB GPU одинаково общается с остальными компонентами на кольцевой шине — с ядрами, частями LLC и системным агентом.
4. Это сопроцессор, который умеет исполнять тот же x86 код, что и хост, а не специальный data parallel набор инструкций с ограниченными возможностями программирования сложных управляющих структур.
I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
Какое время реакции необходимов вашем приложении?
Я как сотрудник Интел очень даже люблю PC. Но в европе может быть сложно с сертификацией. Хотя если приспособить сбоку отдельную safety железку, может быть прокатит.
Удачи вам, Beckhoff тоже начинал с обычных PC.
1. Конечно! Я специально и написял, что в IL так наворотить сложно, а в structured text — запросто.
Однако приведенный код, как ни странно, «боевой». Я видел приложение, гда надо было перемножать 4x4 матрицы почти каждый цикл.
2. Сращивание HMI и контроллера конечно удобный пример для Интел, но действительно часто не полезно для крупного объекта. Хотя бывает и наоборот: на конвейейре фабрики бмв видел HMI у каждого робота отдельно, в нем видно пошаговое исполнение structure text, и еще в операторском помещении все дублируется.
izard> автоматизацией. У него нет аккаунта на хабре.
muzzy0>
1. Пример с тремя вложенными циклами — просто отличный. Его должны показывать на первом уроке курса по structured text — как пример «как нельзя программировать ПЛК» :)
Подобных дел можно и в instruction list наворотить, но несколько сложнее.
Это было одной из первых любопытных вещей, с которой я столкнулся, когда столкнулся с программированием контроллеров. Не надо тащить на ПЛК десктопные привычки :))
У тебя и так программа в цикле крутится, так зачем запихивать такой здоровый цикл в один проход главного цикла? Напиши свою программу так, чтоб за один проход главного цикла у тебя выполнялся один (ну или не один, а в пределах разумного) проход твоего цикла — и порядок :)
А насчёт сращивания контроллера и HMI — чем крупнее объект, тем физически дальше они друг от друга и тем большая вычислительная мощность им требуется. Кроме того, контроллеры могут быть дублированными (как S7-400H) и их может быть несколько. А HMI сервера достаточно одного, хоть и дублированного. Вот только стоит этот сервер в шкафу, в серверном помещении, даже без монитора, а люди сидят за клиентскими станциями, тонкими (веб) и толстыми (рантайм скады).