Инструкция ооо: Пошаговая инструкция самостоятельной регистрации ООО в 2021 году

Содержание

ООО «ТГК-2 Энергосбыт» — Инструкция ЛК

«Личный кабинет абонента» предоставляет возможности:

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

Регистрация в Личном кабинете. Пошаговая инструкция.

Для регистрации в сервисе Вам необходимо:
1. Знать свой адрес эл. почты и номер мобильного телефона, приготовить квитанцию за последний месяц
2. Зайти на сайт компании ТГК-2 Энергосбыт: https://tgc2-energo.ru/
3. На сайте в правом верхнем углу перейти по ссылке Личный кабинет


4. Нажать на кнопку «Зарегистрироваться»


5. Выполнить следующие действия:


6. Система запросит подтверждение Ваших данных, для этого Вам на телефон будет отправлено СМС-сообщение с кодом. Ввести код в соответствующую графу.


7. После успешной регистрации ввести свои данные для доступа



8. При первом входе — принять соглашение о защите персональных данных


9. Затем система запросит ваш лицевой счет, который указан в квитанции


Здесь — вести свой лицевой счет и также код, который расположен на квитанции за последний месяц



После завершения регистрации будет доступна главная страница Личного кабинета


В разделе «Квитанции» можно получить расчётно-платежные документы, которые выставлялись за прошедшие месяцы, в электронном виде

Для передачи показаний нужно выбрать в меню слева соответствующую строку, перейти на страницу «новое», затем нажать «+»,в следующем окне кнопку «добавить» и ввести данные с прибора учета.



Для оплаты электроэнергии с помощью сервиса можно воспользоваться страницей «Оплаты через ЛК» в меню «Начисления», затем нажать кнопку «+»


Далее необходимо ввести сумму и нажать «оплатить». На сайте платёжной системы необходимо будет указать данные своей карты.



Вы также можете настроить способ доставки квитанций.



Страница «Сообщения» поможет в решении возникающих вопросов



Пошаговая инструкция по реорганизации в форме слияния ООО

Каждое ООО, участвующее в слиянии должно провести общее собрание Участников.

С 01 октября 2014г. принятие общим собранием участников ООО Решения и состав Участников ООО, присутствовавших при его принятии, подтверждаются путем нотариального удостоверения, если иной способ не предусмотрен уставом ООО либо решением общего собрания участников общества, принятым участниками общества единогласно.

В ООО, состоящем из одного Участника, решения по вопросам, относящимся к компетенции общего собрания Участников ООО, принимаются единственным участником общества единолично и оформляются письменно. При этом нет надобности в соблюдении процедур созыва и проведения общего собрания Участников ООО.

В назначенный день проводится общее собрание Участников ООО, на котором принимается (или не принимается) решение о реорганизации в форме слияния ООО.

Решение о реорганизации ООО в форме слияния ООО принимается единогласно всеми Участниками ООО.

По итогу проведения собрания составляется Протокол, подписываемый Председательствующим и Секретарем, а также лицами, определенными Решением о реорганизации или Уставом, а в случае не указания в них, способа подтверждения принятого решения и состава Участников – нотариусом.

Не позднее чем в течение 10 дней после составления протокола общего собрания Участников ООО Руководитель (Генеральный директор) обязан направить копию Протокола общего собрания участников ООО всем Участникам ООО.

Затем, по истечении срока, указанного в Договоре о слиянии, на совместном общем собрании участников обществ, участвующих в слиянии, должно быть принято решение об избрании исполнительных органов создаваемого в результате слияния ООО (Генерального директора).

Порядок проведения такого общего собрания определяется также Договором о слиянии.

Его принимают участники всех ООО, участвующих в слиянии. Нельзя сказать, что такое решение принимается общим собранием ООО, участвующего в слиянии или участниками создаваемого ООО, т.к. в первом случае Участники ООО уже приняли решение с повесткой дня, предусмотренной ФЗ «Об обществах с ограниченной ответственностью», а во втором – еще не зарегистрировано ООО, а соответственно нет речи об участниках нового ООО. По факту такое решение приравнивается к учредительному собранию, которое принимается лицами до образования юридического лица, и на такое собрание не распространяются требования ст. 67.1 ГК РФ о подтверждении принятия решения и состава участников общества.

Решение по вопросам избрания исполнительных органов создаваемого общества, принимается 3/4 от общего числа голосов, при этом количество голосов каждого участника определяется из расчета размера доли, которая будет принадлежать участнику в создаваемом ООО.

основания, порядок и пошаговая инструкция по исключению из общества

Рисует: Полина Калашникова

Не всегда бизнес работает без конфликтов, но лучше заранее прописать возможность исключения участника из ООО – самой популярной организационной формы юридического лица. Это позволит сократить временные издержки на урегулирование конфликта, а в некоторых случаях можно не выплачивать обязательную долю при выходе из компании. Рассказываем, какие могут быть основания для исключения участника из ООО и как грамотно оформить такую процедуру.

Правовая основа

Исключение участника из ООО регулируется Гражданским кодексом – нормы об этой процедуре можно найти в статье 94, а также статье 10 закона «Об обществах с ограниченной ответственностью». Законодательство приводит несколько оснований для добровольного выхода или принудительного исключения участника из ООО, разберем их подробнее.

Добровольный выход участника из ООО

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

Заявление должен заверить нотариус, после получения нотариальной подписи пакет документов подается в налоговую, которая вносит изменения в лист записи из ЕГРЮЛ и исключает участника из ООО.

Если в уставе норма о добровольном выходе участника ООО предусмотрена заранее, то его доля переходит компании с даты принятия заявления участника о выходе и она становится собственностью компании, а значит ее не учитывают при голосовании на общем собрании участников общества, при распределении его прибыли и имущества в случае проведения ликвидации предприятия.

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

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

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

Закон ограничивает добровольный выход участников, если в компании не осталось ни одного из них, а также если в обществе изначально состоял один гражданин (в таком Также участник при выходе должен будет внести вклад в имущество компании, если до подачи заявления это не сделал.

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

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

Основания для исключения из ООО

Принудительное исключение участника прописано в статье 10 и статье 67 закона «Об обществах с ограниченной ответственностью». Помимо законодательных норм такие положения должны быть установлены в уставе компании. Закон называет несколько оснований для исключения участника из ООО, например участник должен грубо нарушать свои обязанности либо делать невозможной полноценную работу компании либо устраивать препятствия для других учредителей и работников. То есть при корпоративном конфликте исключение участника – это крайняя мера и такие споры должен решать суд. Конкретику оценки таких критериев для исключения статьи закона не приводят, но ее можно найти в Информационном письме Президиума ВАС РФ от 24.05.2012 № 151, а также п. 35 Постановления Пленума Верховного Суда РФ от 23.06.2015 № 25.

Уклонение от выполнения обязанностей

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

Однако в уставе может быть предусмотрено выполнение конкретным участником общества дополнительных обязанностей, об этом должно быть вынесено решение на общем собрании участников. Решение должно приниматься минимум 2/3 голосов членов общества, включая самого участника, на которого возлагаются дополнительные обязанности.

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

Намеренное причинение вреда

Чтобы исключить участника из ООО, остальным соучредителям надо доказать факт намеренного причинения вреда работе компании:

  • Подделку протокола о назначении генерального директора, который впоследствии совершил сделку с недвижимостью компании без согласия остальных участников;
  • Введение контрагентов в заблуждение и сообщения им информации о ликвидации компании, при этом заключая аналогичные договоры с их конкурентами;
  • Продажу недвижимости ООО по заниженной цене в качестве руководителя компании;
  • Отказ от участия в общих собраниях, из-за чего общество не могло принять решения, влияющие на деятельность юридического лица;
  • Заключение невыгодных сделок, которые в итоге привели фирму к разорению, в качестве ее руководителя либо по доверенности от имени компании даже в том случае, если действия по заключению сделок осуществлялись в рамках полномочий.  

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

Инициирование проверок со стороны надзорных инстанций

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

Смерть участника

Если участник общества умер, его доля становится наследственной массой – то есть переходит наследнику в составе остального имущества, которое можно принять в течение полугода со дня смерти участника. После принятия наследства есть два варианта:

  1. Наследник получает долю, но не может принимать участие в управлении компании;
  2. Он может стать полноценным участником и голосовать на общем собрании. В данном случае доля переходит к наследнику, если соблюдается ряд условий:
    • Наследник получил долю по завещанию или по закону;
    • В уставе нет положения о согласии членов общества на переход доли наследнику умершего участника либо участники дали на это свое согласие;
    • В завещании нет условия об управлении наследственной массой, включая доли в компании, то есть не был заключен договор доверительного управления.

Наследник обычно получает долю полностью и входит в число участников. При этом в налоговую подаются:

  • Заявление по форме Р14001, в котором прописываются сведения о новом участнике;
  • Копии свидетельства о смерти и свидетельства о вступлении в наследство, заверенные у нотариуса;
  • Протокол общего собрания участников о принятии нового члена общества.

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

Если наследники не были найдены или отказались от наследства, то доля будет выморочным имуществом и переходит государству. В уставе может быть закреплено положение о передаче доли в качестве принятого наследства только с согласия остальных участников. При наличии такого условия и отказа участников от участия государства в компании действительная стоимость доли выплачивается Росимуществу как представителю Российской Федерации либо созывается собрание участников, на котором должно быть принято решение по участию государства в делах компании.

В любом случае доля не выплачивается наследнику, если компания запустила банкротство или близка к финансовой несостоятельности.

Когда исключать нельзя

Неуплата доли

Участник рискует получить долю не полностью, если на момент выбытия из общества взнос в уставной капитал был оплачен им не в полном объеме. В случае полной неуплаты доли в уставной капитал, то есть невыполнения своей основной обязанности, ООО может не выплачивать долю покинувшему участнику.

Если у участника свыше 50% акций

При наличии у участника более 50% долей ООО его нельзя исключать из общества, поскольку это приведет к прекращению деятельности компании. Одновременно с этим положением в уставе можно предусмотреть право участника покинуть компанию без согласия остальных участников и получить свою долю в действительном размере.

Можно ли исключить учредителя

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

Действительная стоимость доли при выходе участника из ООО

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

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

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

Помимо недвижимость при расчете действительной стоимости нужно учитывать:

  • Имущество, выступающее предметом иска;
  • Обременения на недвижимое имущество (ипотека, кредит).

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

Как вывести участника из состава общества без его согласия — пошаговая инструкция

Принудительное исключение участника из общества должно проходить по инициативе остальных членов, которые в совокупности владеют более 10% доли в уставном капитале либо одним из участников, у которого есть 10% доли и более. Им нужно подать исковое заявление об исключении участника ООО в арбитражный суд, который примет решение об отказе либо согласится с необходимостью вывода члена общества.

При положительном решении суда участника исключают из компании автоматически. То есть он больше не может участвовать и голосовать на общих собраниях ООО и у него прекращается исполнение других обязанностей.

Регистрация изменений в составе участников ООО

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

Что касается доли исключенного участника, то, как и при добровольном выходе, она переходит обществу, а участник получает компенсацию в виде действительной стоимости доли. Можно выплатить ее либо денежными средствами, либо в натуре – передав имущество, если участник перед этим дал согласие на выплату доли в виде недежных активов. Однако суд может наложить взыскание в виде компенсации убытков обществу, если участник исключается из компании из-за причинения существенного вреда ее работе.

В дальнейшем общество распоряжается долей в течение года:

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

Общество обязано уведомить о распределении доли налоговую путем регистрации соответствующих изменений в учредительные документы компании.

Суды, ООО

Рекомендуем почитать

пошаговая инструкция ✅ ЮГ «Делу время»

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

  • бизнес перестал приносить ожидаемый или привычный доход;
  • собственник решил заняться другим видом деятельности;
  • накопились долги перед кредиторами;
  • другие причины.

Процедура ликвидации ООО представляет собой сложный пошаговый процесс, в результате которого деятельность юридического лица будет прекращена. Фирма считается ликвидированной после внесения соответствующей записи в ЕГРЮЛ.

Личное имущество учредителей не имеет отношения к деятельности общества с ограниченной ответственностью. Поэтому в случаях, когда ООО оказывается в сложном финансовом положении, учредители не должны жертвовать свои личные материальные средства на устранение возникших трудностей.

Решение вопроса по ликвидации компании требует серьезного подхода. Ликвидатору предстоит подготовка необходимого пакета документации в соответствии с требованиями действующего российского законодательства.

Варианты ликвидации

Ликвидировать ООО можно несколькими способами:

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

Среди методов официальной ликвидации также встречаются:

  • добровольное закрытие ООО;
  • принудительное закрытие на основании судебного решения;
  • участие ООО в процессе банкротства.

При любых обстоятельствах, чтобы ликвидация фирмы прошла, как можно «безболезненнее», важно чтобы на нем не висел груз задолженности перед кредиторами.

Альтернативная ликвидация предусматривает смену учредительного состава, а также освобождение от занимаемой должности директора компании. Этот подход популярен в современной практике закрытия обществ с ограниченной ответственностью. Чтобы ликвидировать фирму — ее реорганизовывают, присоединяют к юридическому лицу в другом регионе страны, или продают.

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

Если говорить о минусах существующих способов закрытия необходимо упомянуть о том, что бывшее руководство ответственно за свое прошлое, которое прошло в руководящем кресле. Также не следует исключать и сложности, возникающие у потенциальных ответственных лиц с законами РФ.

Учредители собирают собрание и выносят на повестку дня рассмотрение одного важного ключевого вопроса – принятие решения о ликвидации компании. Данному решению может предшествовать ряд причин.

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

Потенциальные кредиторы должны быть заранее уведомлены о грядущей ликвидации ООО. Оповещение проводится на страницах газеты «Вестник государственной регистрации». Также о закрытии уведомляют кредиторов заказным или ценным письмом.

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

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

Необходимые документы

При любом способе закрытия в ФНС подаются:

  • решение и протокол собрания, на котором решался вопрос о закрытии ООО;
  • копии документов, подтверждающих личность руководящего лица;
  • сведения об уставе организации;
  • копии свидетельств ИНН и ОГРН;
  • квитанции об оплате госпошлины
  • документ, подтверждающий назначение руководящего лица;
  • печать предприятия.

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

Часть документов компании должна отправляться в архив.

Ликвидация без выездной проверки

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

Однако на практике встречаются случаи, когда проверка только назначается, но инспекторы не торопятся ее проводить. Все зависит от руководителя ИФНС. В этот период большинство предприятий активно возвращают свои долги в ФНС. С 2017 года законодательство позволило налоговикам принимать решение о целесообразности выездных налоговых проверок в случаях, когда у инспекции возникли подозрения относительно недобросовестности в работе контролирующих лиц ФНС.

Если вы не совершали сделок с подозрительными контрагентами, не делали разрывов по НДС, ваши выплаты соответствуют действующим нормам налоговой нагрузки, не скрываете доходы и не стремитесь в спешке возместить налоговые платежи за последние три месяца, потому что регулярно платили взносы и т.д. — высокий процент того, что в отношении вашего ООО выездная проверка совершаться не будет.

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

Закрытие ликвидатором

Помните смешное высказывание о том, что «тратить деньги в доме должен кто-то «ОДНА». Так и здесь, заниматься последовательным процессом закрытия фирмы должен кто-то один, который обладает достаточной компетенцией и сможет грамотно осуществить все этапы сложной процедуры. Если в компании такого кандидата не нашлось, его привлекают извне.

Если ликвидацией занимаются юристы, они делают это в максимально короткие сроки, благодаря имеющемуся опыту и знаниям действующих законов.

Стоимость ликвидации

Стоимость ликвидации компании складывается из разных факторов. Мы уже рассматривали подробно данный вопрос в этой статье.

Можно ли закрыть ООО самостоятельно и бесплатно?

Напомним, что вы можете самостоятельно закрыть ООО, если знаете, как это сделать. Однако сделать это совершенно бесплатно не получится, так как вам придется все же оплачивать госпошлины, а также привлекать нотариуса для заверения копий документов и подписей. И даже удаленная подача документов через МФЦ потребует определенных вложений и суеты.

Риски, отказы а также причины отказов

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

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

Если на балансе предприятия достаточно средств для возмещения задолженности кредиторам, в ликвидации будет отказано до того момента, пока все долги предприятия не будут возвращены. Также это касается и вопроса погашения задолженности по заработной плате.

Юристы Делу Время помогут ликвидировать ваше ООО даже при наличии задолженности. Чтобы обсудить условия сотрудничества, стоимость и нюансы процедуры позвоните по номерам, указанным на нашем официальном ресурсе.

x86 — загружает и сохраняет единственные инструкции, которые меняются?

Выполнение вне очереди сохраняет иллюзию выполнения программы в порядке для одного потока / ядра . Это похоже на правило оптимизации C / C ++ как если бы: делайте все, что хотите, внутри, пока видимые эффекты одинаковы.

Отдельные потоки могут взаимодействовать друг с другом только через память, поэтому глобальный порядок операций с памятью (загрузка / сохранение) является единственным видимым извне побочным эффектом выполнения 1 .

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


Простой пример: две цепочки зависимостей ALU могут перекрываться

(связанный: http: // blog.stuffedcow.net/2013/05/measuring-rob-capacity/, чтобы узнать больше о том, насколько велико окно для поиска параллелизма на уровне инструкций, например если вы увеличите это значение до раз 200 , вы увидите только ограниченное перекрытие. Также по теме: этот ответ от новичка до среднего уровня, я писал о том, как процессор OoO, такой как Haswell или Skylake, находит и использует ILP.)

Для более глубокого анализа влияния lfence здесь см. Понимание влияния lfence на цикл с двумя длинными цепочками зависимостей для увеличения длины

  глобальный _start
_Начните:
    mov ecx, 10000000
.петля:
    раз 25 imul eax, eax; расширяется до imul eax, eax / imul eax, eax / ...
 ; ограда
    раз 25 imul edx, edx
 ; ограда
    dec ecx
    jnz .loop

    xor edi, edi
    mov eax, 231
    системный вызов; sys_exit_group (0)
  

nasm + ld ) в статический исполняемый файл на x86-64 Linux, это запускается (на Skylake) с ожидаемыми 750 млн тактов для каждой цепочки из 25 * 10 млн инструкций imul , умноженных на 3 задержки цикла.

Комментирование одной из цепочек imul не меняет время, необходимое для выполнения: все еще 750 миллионов циклов.

Это явное доказательство неупорядоченного выполнения, в противном случае чередование двух цепочек зависимостей. (Пропускная способность imul составляет 1 на такт, задержка 3 такта. Http://agner.org/optimize/. Таким образом, можно добавить третью цепочку зависимостей без особого замедления).

Фактические числа из набора задач -c 3 ocperf.py stat --no-big-num -etask-clock, context-Switches, cpu-migrations, page-faults, циклы: u, ветки: u, инструкции: u, uops_issued .any: u, uops_executed.thread: u, uops_retired.retire_slots: u -r3 ./imul :

  • с обеими цепями imul: 750566384 + - 0,1%
  • только с цепочкой EAX: 750704275 + - 0,0%
  • с одним умножить на 50 imul eax, цепочка eax : 1501010762 + - 0,0% (почти ровно в два раза медленнее, чем ожидалось).
  • с lfence предотвращает перекрытие между каждым блоком по 25 imul : 1688869394 + - 0,0% , хуже чем вдвое медленнее. uops_issued_any и uops_retired_retire_slots имеют 63M вместо 51M, в то время как uops_executed_thread по-прежнему 51M ( lfence не использует никаких портов выполнения, но, очевидно, две инструкции lfence стоят 6 мопов слияния домена каждая.Agner Fog измерил только 2.)

( lfence сериализует выполнение инструкции , но не сохраняет память). Если вы не используете загрузку NT из памяти WC (что не произойдет случайно), это не действие, кроме остановки выполнения последующих инструкций до тех пор, пока предыдущие инструкции не будут «завершены локально». то есть до тех пор, пока не удалили из вышедшего из строя ядра. Вероятно, поэтому он более чем удваивает общее время: ему нужно дождаться последнего imul в блоке, чтобы пройти больше этапов конвейера.)

lfence на Intel всегда так, но на AMD это только частичная сериализация с включенной защитой от Spectre.


Сноска 1 : Существуют также побочные каналы синхронизации, когда два логических потока совместно используют один физический поток (гиперпоточность или другой SMT). например выполнение последовательности независимых инструкций imul будет выполняться с частотой 1 за такт на недавнем процессоре Intel, если другой гиперпоток ни для чего не нуждается в порте 1. Таким образом, вы можете измерить давление порта 0, рассчитав цикл, связанный с ALU, на одном логическом ядре.

Другие побочные каналы микроархитектуры, такие как доступ к кэшу, более надежны. Например, Spectre / Meltdown проще всего использовать с побочным каналом чтения из кеша, а не с ALU.

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


MFENCE на Skylake — это барьер OoO exec, такой как LFENCE

mfence на Skylake неожиданно блокирует неупорядоченное выполнение imul , например lfence , хотя это не задокументировано, чтобы иметь такой эффект.(Подробнее см. Обсуждение перемещенных в чат).

xchg [rdi], ebx (неявный префикс lock ) вообще не блокирует выполнение инструкций ALU вне очереди. Общее время по-прежнему составляет 750 млн циклов при замене lfence на xchg или на команду lock ed в приведенном выше тесте.

Но с mfence стоимость увеличивается до 1500M циклов + время для 2 mfence инструкций. Чтобы провести управляемый эксперимент, я оставил количество инструкций таким же, но переместил инструкции mfence рядом друг с другом, чтобы цепочки imul могли переупорядочиваться друг с другом, и время сократилось до 750M + время для 2 mfence инструкция.

Такое поведение Skylake, скорее всего, является результатом обновления микрокода для исправления ошибки SKL079, MOVNTDQA из памяти WC может пройти более ранние инструкции MFENCE . Наличие ошибки показывает, что раньше можно было выполнить более поздние инструкции до завершения mfence , поэтому, вероятно, они сделали исправление грубой силы, добавив lfence uops к микрокоду для mfence .

Это еще один фактор в пользу использования xchg для хранения seq-cst, или даже lock добавить к некоторой стековой памяти в качестве автономного барьера. Linux уже делает обе эти вещи, но компиляторы по-прежнему используют mfence для барьеров. См. Почему в хранилище std :: atomic с последовательной согласованностью используется XCHG?

(См. Также обсуждение выбора барьеров Linux в этой ветке групп Google, со ссылками на 3 отдельные рекомендации по использованию lock addl $ 0, -4 (% esp / rsp) вместо mfence в качестве автономного барьера.

Оптимизация планирования инструкций за счет комбинированного упорядоченного и незаполненного выполнения в процессорах SMT

Характер совместного использования ресурсов процессоров одновременной многопоточности (SMT) и наличие инструкций с большой задержкой от параллельных потоков создают окно планирования инструкций (IW), которое является основной общий компонент среди ключевых конвейерных структур в SMT, узкое место производительности.Из-за жестких ограничений на его физический размер IW сталкивается с более серьезным давлением, требующим обработки инструкций от различных потоков, пытаясь избежать монополизации ресурсов некоторыми потоками с низким уровнем ILP. Особенно сложно оптимизировать эффективность и справедливость использования IW, чтобы обеспечить доступную производительность SMT под тенью инструкций с длительной задержкой. Большинство существующих схем оптимизации в процессорах SMT полагаются на политику выборки для управления инструкциями, которым разрешено вводить конвейер, в то время как прикладываются незначительные усилия для управления инструкциями с длительной задержкой, которые уже находятся в IW.В этой статье мы предлагаем оптимизировать буферы для обработки инструкций с длительной задержкой, которые уже поступили в конвейер и засоряют IW, в то время как политикам управления выборки требуется время для реакции. Каждый буфер Streamline извлекает из IW и содержит цепочку инструкций из потока, которые останавливаются из-за зависимости от нагрузки с длительной задержкой. Когда значение нагрузки возвращается, буфер линии потока затем обслуживает эти инструкции непосредственно для выполнения по порядку, избегая любого повторного воспроизведения инструкций. Это делается в дополнение к обычному IW, которое параллельно обслуживает другие инструкции для выполнения вне очереди (o-o-o).Анализ целочисленных тестов SPEC2000 и тестов FP показывает, что инструкции, зависящие от нагрузок с большой задержкой, обычно имеют готовый первый исходный операнд в пределах 5–15 процентов от их общего времени ожидания в IW. Наша схема может использовать эту асимметрию во времени готовности исходных операндов для достижения эффективного проектирования сложности. По сравнению с базовой архитектурой SMT, наш дизайн при работе в сочетании с более ранним предложением: — d Политика выборки ICOUNT.2.8 для 4 потоков эффективно снижает полную скорость IW на 9.4 процента (11 процентов для 2-х потоков), улучшает средний IPC для СМЕШАННЫХ рабочих нагрузок на 9,6 процента (8 процентов для рабочих нагрузок MEM и 4,4 процента для рабочих нагрузок ЦП), а справедливость — на 7,56 процента (7,24 процента для 2 потоков). Подобные улучшения наблюдаются при запуске в сочетании с политикой выборки RR.2.8. Кроме того, наша схема в сочетании с DCRA улучшает производительность в среднем на 21,7 процента, в то время как DCRA улучшается на 16,3 процента при работе в одиночку.

[PDF] Микроархитектура FIFOrder: готовое планирование инструкций для процессоров OoO

ПОКАЗЫВАЕТ 1–10 ИЗ 17 ССЫЛОК

СОРТИРОВАТЬ ПО УМЕНИЮ массивы монолитной адресуемой памяти (CAM), к которым осуществляется доступ во время пробуждения инструкции, и вводится механизм предположения о последнем теге, который устраняет все оставшиеся компараторы тегов, кроме тех, которые используются для последнего поступившего входного операнда.Развернуть

  • Просмотр 1 отрывок, справочная информация

Логика планирования инструкций без выбора

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

Суперскалярные процессоры, эффективные по сложности

Предлагается и обсуждается микроархитектура, которая упрощает логику пробуждения и выбора, что поможет свести к минимуму снижение производительности из-за медленных обходов в будущих машинах с широким спросом.Развернуть
  • Просмотреть 4 выдержки, справочная информация

Изучение пределов производительности внеочередной фиксации

Эта работа направлена ​​на демонстрацию возможности выборочной, спекулятивной неупорядоченной фиксации с использованием реализации оракула без спекулятивных затрат на откат, и узнает, что существует значительный неиспользованный потенциал для агрессивных вариантов фиксации вне очереди. Развернуть
  • Просмотр 1 отрывок, справочная информация

Микроархитектура Load Slice Core

Load Slice Core расширяет эффективное упорядоченное ядро ​​с остановкой при использовании вторым упорядоченным конвейером, который обеспечивает доступ к памяти и генерацию адресов инструкции для обхода зависших инструкций в основном конвейере, обеспечивая тем самым альтернативное направление для будущих многоядерных процессоров.Развернуть
  • Просмотреть 2 выдержки, справочная информация

McPAT: интегрированная структура моделирования мощности, площади и времени для многоядерных и многоядерных архитектур

Объединение результатов McPAT по мощности, площади и времени с моделированием производительности тестов PARSEC по 22-нм технологии node для обычных многоядерных схем в порядке и вне очереди показывает, что, когда не учитывается стоимость кристалла, объединение 8 ядер вместе дает лучший продукт задержки энергии, тогда как когда учитывается стоимость, настройка кластеров с 4 ядрами дает лучшие EDA2P и EDAP.Развернуть
  • Просмотреть 2 выдержки, ссылки на методы и справочную информацию

Внешняя архитектура выполнения для высокой энергоэффективности

Результаты оценки показывают, что FXA может выполнять более 50% инструкций с использованием IXU, что позволяет сократить потребление энергии. OXU без снижения производительности и обеспечивает как высокую производительность, так и низкое энергопотребление. Развернуть
  • Просмотреть 7 выдержек, ссылки на результаты, справочную информацию и методы

Оптимизирующий алгоритм уменьшения остановки конвейера для повышения мощности и производительности многоядерных процессоров | Информатика и информатика, ориентированные на человека

Длина конвейера влияет на производительность микропроцессора.Два архитектурных параметра, которые могут повлиять на оптимальную длину конвейера, — это степень параллелизма на уровне команд и задержки конвейера [3]. Во время остановки конвейера выполняются инструкции NOP, которые аналогичны инструкциям тестирования. TIS тестирует различные части процессора и обнаруживает постоянные неисправности [4,5].

Широкая одиночная инструкция, многопоточная архитектура часто требует статического распределения групп потоков, выполняемого синхронно. Приложения, требующие сложного потока управления, часто приводят к низкой эффективности процессора из-за длины и количества путей управления.Алгоритмы глобального рендеринга являются примером. Для улучшения использования процессора представлена ​​архитектура SIMT, которая позволяет динамически создавать потоки во время выполнения [6].

Расхождение ветвей оказывает значительное влияние на производительность программ графического процессора. Текущие графические процессоры оснащены мультипроцессорами с архитектурой SIMT, которые создают, планируют и исполняют потоки в группах (так называемые оболочки). Потоки в обертке выполняют один и тот же путь кода синхронно, что потенциально может привести к большому количеству потраченных впустую циклов для расходящегося потока управления.В [7] были предложены методы устранения ненужных циклов, вызванных расхождением ветвей и окончаний. Две новые программные оптимизации, называемые итеративной задержкой и распределением ветвей, были предложены в [8] с целью уменьшения дивергенции ветвей.

Важным фактором для обеспечения согласованности и производительности масштабируемых мультипроцессоров является согласованность кэш-памяти. Утверждается, что аппаратные протоколы в настоящее время лучше, чем программные, но их реализация обходится дороже.Благодаря усовершенствованиям в технологиях компиляции, теперь основное внимание уделяется разработке эффективных программных протоколов [9]. По этой причине в [10] был предложен алгоритм управления буферным кешем с предварительной выборкой. Буферный кеш содержит два блока, а именно, основной блок кэш-памяти и блок предварительной выборки; и блоки выбираются согласно принципу упреждающей выборки одного блока. Время цикла процессора в настоящее время намного меньше, чем время цикла памяти, и наблюдается тенденция к увеличению этого разрыва с течением времени.В [11,12] были представлены новые типы кэша предсказаний, которые сочетают в себе функции упреждающей выборки и кэширования жертв. В [13] была предложена оценка производительности всей системы с использованием нескольких различных конфигураций кэша, чувствительных к мощности / производительности.

В [14,15] был предложен алгоритм управления дисковым буфером на основе предварительной выборки (так называемый W2R). В [16] была представлена ​​буферизация команд как метод энергосбережения для приложений обработки сигналов и мультимедиа. В [17] другой метод управления буфером, называемый динамическим масштабированием напряжения, был представлен как один из наиболее эффективных способов снижения энергопотребления из-за его квадратичного эффекта.По сути, динамическое масштабирование напряжения на основе микроархитектуры определяет программные области, в которых ЦП может быть замедлен с незначительной потерей производительности. В [18] поведение во время выполнения, демонстрируемое обычными приложениями с активными периодами, чередующимися с периодами остановки из-за промахов в кэше, было использовано для уменьшения динамической составляющей энергопотребления с использованием методики выборочного масштабирования напряжения.

В [19] была предложена методика прогнозирования ветвлений для увеличения количества команд за цикл.Действительно, большой объем ненужной работы обычно происходит из-за выбора инструкций неверного пути, поступающих в конвейер из-за неправильного предсказания ветвления. Аппаратный механизм, называемый пропускной способностью конвейера, используется для управления безудержной спекуляцией в конвейере. На основе расширения Шеннона можно разделить данную схему на две подсхемы таким образом, чтобы количество различных выходов обеих подсхем уменьшилось, а затем закодировать выход обеих подсхем, чтобы минимизировать расстояние Хэмминга для переходы с высокой вероятностью переключения [20].

В [21] предварительная выборка файлов использовалась как эффективный метод повышения производительности доступа к файлам. В [22] была представлена ​​комплексная структура, которая одновременно оценивает компромисс между расходами энергии программного и аппаратного обеспечения, таких как кэш-память и основная память. В качестве продолжения в [23] была представлена ​​архитектура и прототип реализации одного чипа, полностью программируемого блока обработки лучей (RPU).

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

Техас Программа отказа от реанимации вне больницы

Программа «Не реанимировать вне больницы» позволяет людям решить, что они не хотят реанимации. Программа позволяет людям заявить, что определенные реанимационные мероприятия к ним применяться не будут. К реанимационным мероприятиям, специально перечисленным в законодательстве OOH DNR, относятся сердечно-легочная реанимация (СЛР), расширенное управление проходимостью дыхательных путей, дефибрилляция, искусственная вентиляция легких и чрескожная кардиостимуляция.


Быстрое меню


Форма для отказа в реанимации вне больницы

Распечатать форму OOH-DNR

Требования к форме OOH DNR :.

  • Форма заказа OOH DNR напечатана на бумаге стандартного формата Letter, 8 1/2 дюймов на 11 дюймов.

  • Бланк можно копировать и использовать как оригинал.

  • Форма должна быть напечатана с формой заказа OOH DNR на лицевой стороне и инструкциями на обратной стороне листа.

  • Копии выполненного стандартного приказа DSHS OOH DNR могут быть сделаны и являются юридическими, обязательными документами.

Часто задаваемые вопросы о OOH DNR
Preguntas frecuentes sobre la Orden de no resucitar (DNR)


Заказ устройств OOH-DNR

После заполнения формы заказа Texas OOH DNR, пациент может получить за свой счет дополнительные средства идентификации. Устройство OOH DNR ID можно получить только ПОСЛЕ полного выполнения формы заказа Texas OOH DNR.Недавняя поправка к 25 TAC 157.25 дает потребителям больший выбор устройств идентификации DNR OOH в Техасе, позволяя большему количеству предприятий предлагать устройства идентификации. Теперь для внесения поправки требуется:

(1) Неповрежденный, неизмененный, легко идентифицируемый пластиковый идентификационный браслет OOH DNR со словом «Техас» (или изображением географической формы Техаса и словом «STOP», нанесенным на форму) и словами «Не делайте этого». Resuscitate », должны быть отмечены квалифицированным персоналом EMS вместо оригинальной формы приказа OOH DNR.

ИЛИ

(2) Неповрежденный, неизмененный, легко идентифицируемый металлический браслет или ожерелье с надписью «Texas Do Not Resuscitate — OOH» должны быть отмечены квалифицированным персоналом EMS вместо формы приказа OOH DNR.

Одобренные производители виниловых браслетов

Техасская медицинская ассоциация
ATTN: DNR form
401 W. 15th Street
Austin, Texas 78701
Строка заказа:
(800) 880-1300

Утвержденные производители металлических устройств

American Medical Identifications, Inc.
Suite 100
949 Wakefield
Houston, Texas 77018
(800) 363-5985
www.americanmedical-id.com

MedicAlert Foundation, Inc.
101 Lander Ave
Turlock, California 95380
(800) 432-5378
www.medicalert.org

Заботливые адвокаты
2730 Argonauta St
Carlsbad, California 92009
(800) 647-3223
http://caringadvocates.org/store/index.php?main_page=index&cPath=2

StickyJ Medical ID
10801 Endeavour Way #B
Seminole FL 33777
(866) 497-6265
Электронная почта: CustomerService @ StickyJ.com
https://www.stickyj.com/category/dnr-jewelry-bracelets

Цены могут различаться в зависимости от продавца. За информацией обращайтесь к поставщикам.
Внешние ссылки на другие сайты предназначены для информационных целей и не получили одобрения Министерства здравоохранения Техаса. Эти сайты также могут быть недоступны для людей с ограниченными возможностями


OOH DNR Информация и ссылки

Форма заказа OOH DNR должна быть правильно оформлена в соответствии с инструкциями на противоположной стороне, чтобы персонал службы неотложной медицинской помощи считал ее действительной.


Заявитель


Медицинские работники

Если вы раздаете пустые формы OOH DNR для заполнения пациентами, семьей и врачами, пустая форма ДОЛЖНА включать форму OOH DNR на одной стороне и инструкции на другой стороне. В инструкциях содержится некоторая требуемая по закону информация, которая должна быть доступна пациенту, семье, свидетелям и врачам до подписания формы.

Персонал службы экстренной медицинской помощи может соблюдать форму OOH DNR, которая выглядит правильно оформленной, даже если инструкции не на противоположной стороне.

ДИРЕКТИВА ПОЧЕСТИ НЕ ЯВЛЯЕТСЯ ПРЕСТУПКОЙ ПОМОЩИ САМОУБИЙСТВУ. Лицо не совершает правонарушения в соответствии с разделом 22.08 Уголовного кодекса, отказывая квалифицированному пациенту в поддерживающем его лечении или прекращая его в соответствии с данным подразделом. (Кодекс здоровья и безопасности 166.047).

Ссылки на дополнительные директивы


Законодательство о запрете реанимации вне больницы

Свяжитесь с нами

По вопросам, касающимся программы «Не реанимировать вне больницы», позвоните нам по телефону 512-834-6700 или напишите по электронной почте EMSInfo @ dshs.texas.gov.

% PDF-1.6 % 1 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 2 0 obj > эндобдж 3 0 obj > эндобдж 4 0 obj > эндобдж 6 0 obj >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 7 0 объект > эндобдж 8 0 объект > эндобдж 10 0 obj >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 11 0 объект / Тип / OCG >> эндобдж 12 0 объект > эндобдж 13 0 объект > эндобдж 14 0 объект > эндобдж 15 0 объект > эндобдж 17 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 18 0 объект > эндобдж 19 0 объект > эндобдж 20 0 объект > эндобдж 21 0 объект > эндобдж 22 0 объект > эндобдж 23 0 объект > эндобдж 24 0 объект > эндобдж 25 0 объект / Тип / OCG >> эндобдж 26 0 объект > эндобдж 28 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 29 0 объект > эндобдж 30 0 объект > эндобдж 31 0 объект > эндобдж 32 0 объект > эндобдж 33 0 объект > эндобдж 34 0 объект > эндобдж 35 0 объект > эндобдж 36 0 объект > эндобдж 37 0 объект > эндобдж 38 0 объект > эндобдж 39 0 объект / Тип / OCG >> эндобдж 40 0 объект > эндобдж 42 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 43 0 объект > эндобдж 44 0 объект > эндобдж 45 0 объект > эндобдж 46 0 объект > эндобдж 47 0 объект > эндобдж 48 0 объект > эндобдж 49 0 объект > эндобдж 50 0 объект > эндобдж 51 0 объект / Тип / OCG >> эндобдж 53 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 54 0 объект > эндобдж 55 0 объект > эндобдж 56 0 объект > эндобдж 57 0 объект > эндобдж 58 0 объект > эндобдж 59 0 объект > эндобдж 60 0 объект > эндобдж 61 0 объект > эндобдж 62 0 объект / Тип / OCG >> эндобдж 63 0 объект > эндобдж 65 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 66 0 объект > эндобдж 67 0 объект > эндобдж 68 0 объект > эндобдж 69 0 объект > эндобдж 70 0 объект > эндобдж 72 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 73 0 объект > эндобдж 74 0 объект > эндобдж 75 0 объект > эндобдж 76 0 объект > эндобдж 77 0 объект > эндобдж 79 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 80 0 объект > эндобдж 81 0 объект > эндобдж 82 0 объект > эндобдж 83 0 объект > эндобдж 84 0 объект > эндобдж 85 0 объект > эндобдж 86 0 объект > эндобдж 88 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 89 0 объект > эндобдж 90 0 объект > эндобдж 91 0 объект > эндобдж 92 0 объект > эндобдж 93 0 объект > эндобдж 94 0 объект > эндобдж 95 0 объект > эндобдж 97 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 98 0 объект > эндобдж 99 0 объект > эндобдж 100 0 объект > эндобдж 101 0 объект > эндобдж 102 0 объект > эндобдж 103 0 объект > эндобдж 104 0 объект > эндобдж 105 0 объект > эндобдж 107 0 объект >] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 108 0 объект > эндобдж 109 0 объект > эндобдж 111 0 объект > >> / VP [>] / Тип / Измерение / D [>] /Р ( ) / Подтип / RL / X [>] >> >>] >> эндобдж 112 0 объект > эндобдж 113 0 объект > эндобдж 114 0 объект > эндобдж 115 0 объект > транслировать xˮ%)) IV P: rJ (u4BǼDdkcpj4- Dx j / styo yzO c ۗ g 睞 p> ܿ ͵8; r | _ | O ryJYhiӾ_h78liL / {Q ߻7 wtYR / YYCkIR

A Journey Through конвейер ЦП — Общее и игровое программирование — Учебники

Программистам полезно понимать, что происходит внутри процессора.Процессор лежит в основе нашей карьеры.

Что происходит внутри ЦП? Сколько времени нужно для выполнения одной инструкции? Что это значит, когда новый ЦП имеет 12-ступенчатый конвейер, или 18-ступенчатый конвейер, или даже «глубокий» 31-ступенчатый конвейер?

Программы обычно рассматривают ЦП как черный ящик. Инструкции помещаются в коробку по порядку, инструкции выходят из коробки по порядку, а внутри происходит некоторая магия обработки.

Программисту полезно узнать, что происходит внутри коробки.Это особенно актуально, если вы будете работать над такими задачами, как оптимизация программы. Если вы не знаете, что происходит внутри ЦП, как вы можете оптимизировать это?

Эта статья о том, что происходит внутри глубокого конвейера процессора x86.

Материал, который вы уже должны знать

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

Во-вторых, эта статья — упрощение сложной темы. Если вы считаете, что я упустил важные детали, добавьте их в комментарии в конце.

В-третьих, я сосредотачиваюсь на процессорах Intel и семействе x86. Я знаю, что существует много разных семейств процессоров, кроме x86. Я знаю, что AMD представила много полезных функций в семействе x86, а Intel включила их.Это архитектура Intel и набор инструкций Intel, и Intel представила наиболее важную из рассматриваемых функций, поэтому для простоты и единообразия я просто остановлюсь на их процессорах.

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

Основы конвейера

С очень широкой точки зрения, семейство процессоров x86 не сильно изменилось за свою 35-летнюю историю. Было внесено много дополнений, но оригинальный дизайн (и почти весь исходный набор команд) в основном не поврежден и виден в современном процессоре.

Исходный процессор 8086 имеет 14 регистров ЦП, которые используются до сих пор. Четыре регистра общего назначения — AX, BX, CX и DX. Четыре — это сегментные регистры, которые используются для работы с указателями: сегмент кода (CS), сегмент данных (DS), дополнительный сегмент (ES) и сегмент стека (SS).Четыре индексных регистра указывают на различные ячейки памяти: исходный индекс (SI), целевой индекс (DI), базовый указатель (BP) и указатель стека (SP). Один регистр содержит битовые флаги. И, наконец, самый важный регистр для этой статьи: указатель инструкции (IP).

Задача указателя инструкции — указать на следующую инструкцию, которая должна быть запущена. Обычно он обновляется внутренним процессором каждый тик.

Все процессоры семейства x86 работают по одной схеме.Сначала они следуют за указателем инструкции и декодируют следующую инструкцию ЦП в этом месте. После декодирования следует этап выполнения, на котором выполняется инструкция. Некоторые инструкции читают из памяти или записывают в нее, другие выполняют вычисления или сравнения или выполняют другую работу. Когда работа сделана, инструкция проходит стадию вывода из эксплуатации, и указатель инструкции изменяется, чтобы указывать на следующую инструкцию.

Этот шаблон конвейера декодирования, выполнения и вывода из эксплуатации применяется как к исходному процессору 8086, так и к последнему процессору Core i7.С годами добавлялись дополнительные этапы трубопровода, но закономерность сохраняется.

Что изменилось за 35 лет

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

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

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

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

В 1989 году i486 перешел на пятиступенчатый конвейер. Вместо одной инструкции внутри ЦП, на каждом этапе конвейера может быть инструкция. Это добавление более чем удвоило производительность процессора 386 с той же тактовой частотой.Этап выборки извлек инструкцию из кеша. (Кэш инструкций в то время обычно составлял 8 килобайт.) Второй этап декодировал инструкцию. На третьем этапе будут транслироваться адреса памяти и смещения, необходимые для инструкции. Четвертый этап выполнит инструкцию. Пятый этап удалял инструкцию, записывая результаты обратно в регистры и память по мере необходимости. Разрешив одновременно несколько инструкций в процессоре, программы могут работать намного быстрее.

В 1993 году появился процессор Pentium. В результате судебного процесса семейство процессоров сменилось с номеров на названия — поэтому это Pentium вместо 586. Чип Pentium изменил конвейер даже больше, чем i486. Архитектура Pentium добавила второй отдельный суперскалярный конвейер. Основной конвейер работал так же, как конвейер i486, но второй конвейер выполнял некоторые более простые инструкции, такие как прямая целочисленная математика, параллельно и намного быстрее.

В 1995 году Intel выпустила процессор Pentium Pro.Это был кардинально другой дизайн процессора. Этот чип имел несколько функций, включая ядро ​​обработки вне очереди (OOO ядро) и спекулятивное исполнение. Конвейер был расширен до 12 этапов и включал в себя нечто, называемое «суперпайплайн», где можно было обрабатывать множество инструкций одновременно. Это ООО ядро ​​будет подробно рассмотрено позже в статье.

Между 1995 годом, когда было введено ядро ​​ООО, и 2002 годом, когда появится наша следующая дата, произошло много серьезных изменений.Добавлены дополнительные регистры. Были введены инструкции, обрабатывающие несколько значений одновременно (Single Instruction Multiple Data или SIMD). Были введены кеши и расширены существующие кеши. Этапы конвейера иногда разделялись, а иногда объединялись, чтобы их можно было лучше использовать в реальных ситуациях. Эти и другие изменения были важны для общей производительности, но на самом деле они не имеют большого значения, когда речь идет о потоке данных через чип.

В 2002 году процессор Pentium 4 представил технологию под названием Hyper-Threading.Ядро OOO было настолько успешным в улучшении потока обработки, что могло обрабатывать инструкции быстрее, чем они могли быть отправлены в ядро. Для большинства пользователей ООО ядро ​​ЦП большую часть времени фактически простаивало, даже под нагрузкой. Чтобы обеспечить стабильный поток инструкций к ядру ООО, они подключили второй интерфейс. Операционная система увидит два процессора, а не один. Было два набора регистров x86. Было два декодера инструкций, которые смотрели на два набора указателей инструкций и обрабатывали оба набора результатов.Результаты обрабатывались одним общим ядром ООО, но это было невидимо для программ. Затем результаты были удалены, как и раньше, и инструкции были отправлены обратно двум виртуальным процессорам, от которых они исходили.

В 2006 году Intel выпустила микроархитектуру «Core». В целях брендинга он назывался «Core 2» (потому что все знают, что два лучше, чем один). Несколько неожиданным шагом стало снижение тактовой частоты процессора и удаление Hyper-Threading. Замедляя часы, они могли расширить все стадии конвейера.Расширено ядро ​​ООО. Кеши и буферы были увеличены. Процессоры были переработаны с упором на двухъядерные и четырехъядерные чипы с общими кешами.

В 2008 году Intel использовала схему именования Core i3, Core i5 и Core i7. Эти процессоры вновь представили Hyper-Threading с общим ООО ядром. Три разных процессора различались в основном размером внутренних кешей. Будущие процессоры: следующее обновление микроархитектуры в настоящее время называется Haswell, и по слухам, оно будет выпущено в конце 2013 года.

На данный момент опубликованные документы предполагают, что это 14-этапный конвейер с ООО ядром, поэтому вполне вероятно, что поток данных будет по-прежнему соответствовать базовой конструкции Pentium Pro. Так что же это за конвейер, что такое ядро ​​ООО и как оно помогает скорости обработки?

Конвейеры команд ЦП

В наиболее простой форме, описанной выше, одна инструкция входит, обрабатывается и выходит с другой стороны. Это довольно интуитивно понятно для большинства программистов.

i486 имеет 5-ступенчатый конвейер.Этапы следующие: Fetch, D1 (основное декодирование), D2 (вторичное декодирование, также называемое преобразованием), EX (выполнение), WB (обратная запись в регистры и память). На каждом этапе конвейера может быть одна инструкция.

У такого конвейера ЦП есть серьезный недостаток. Представьте себе код ниже. Еще до конвейеров ЦП следующие три строки были обычным способом заменить две переменные на место.

XOR a, b
XOR b, a
XOR a, b

Чипы, начиная с 8086 и заканчивая 386, не имели внутреннего конвейера.Они обрабатывали только одну инструкцию за раз, независимо и полностью. Три последовательных команды XOR не являются проблемой в этой архитектуре.

Рассмотрим, что происходит в i486, поскольку это был первый чип x86 с внутренним конвейером. Наблюдать за движением многих объектов одновременно может немного сбить с толку, поэтому вы можете вернуться к диаграмме выше.

Первая инструкция переходит в этап выборки, и мы закончили с этим этапом. На следующем этапе первая инструкция переходит на этап D1 (основное декодирование), а вторая инструкция переводится на этап выборки.На третьем шаге первая инструкция перемещается в D2, а вторая инструкция перемещается в D1, и выбирается другая. На следующем этапе что-то идет не так. Первая инструкция перемещается в EX … но другие инструкции не продвигаются. Декодер останавливается, потому что вторая инструкция XOR требует результатов первой инструкции. Предполагается, что переменная (a) будет использоваться второй инструкцией, но она не будет записана до тех пор, пока не будет выполнена первая инструкция. Таким образом, инструкции в конвейере ждут, пока первая инструкция не пройдет этапы EX и WB.Только после того, как первая инструкция будет завершена, вторая инструкция сможет пройти через конвейер. Третья инструкция точно так же застрянет, ожидая завершения второй инструкции.

Это называется срывом трубопровода или пузырем трубопровода.

Еще одна проблема с конвейерами — некоторые инструкции могут выполняться очень быстро, а другие — очень медленно. Это стало более заметным благодаря двухканальной системе Pentium.

Pentium Pro представил 12-ступенчатый конвейер.Когда это число было впервые объявлено, программисты вздохнули, понимая, как работает суперскалярный конвейер. Если бы Intel следовала той же схеме с 12-ступенчатым суперскалярным конвейером, то остановка конвейера или медленная инструкция серьезно повредили бы скорости выполнения. В то же время они объявили о радикально ином внутреннем конвейере, назвав его Out Of Order (ООО) ядром. Это было сложно понять из документации, но Intel заверила разработчиков, что они будут в восторге от результатов.

Давайте посмотрим на этот ООО основной конвейер более подробно.

Неупорядоченный основной конвейер

ООО «Основной конвейер» — это случай, когда картинка стоит тысячи слов. Итак, давайте сделаем несколько снимков.

Схемы конвейеров ЦП

i486 имел 5-ступенчатый конвейер, который работал хорошо. Эта идея была очень распространена в других семействах процессоров и хорошо работает в реальном мире.

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

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

Ядро OOO сильно отличается от предыдущих конструкций микросхем с их линейными путями. Это добавило сложности и ввело нелинейные пути:

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

Этап декодирования был немного изменен по сравнению с более ранними чипами. Вместо того, чтобы просто обрабатывать одну инструкцию в указателе инструкции, процессор Pentium Pro мог декодировать до трех инструкций за цикл. Современные (примерно 2008-2013 гг.) Процессоры могут одновременно декодировать до четырех инструкций. Декодирование производит небольшие фрагменты операций, называемые микрооперациями или u-ops.

Далее идет этап (или набор этапов), называемый трансляцией микроопераций, за которым следует сглаживание регистров. Многие операции выполняются одновременно, и мы потенциально будем выполнять работу не по порядку, поэтому инструкция может считываться в регистр одновременно с записью в него другой инструкции. Запись в регистр потенциально может привести к значению, которое требуется другой инструкции. Внутри процессора исходные регистры (такие как AX, BX, CX, DX и т. Д.) Транслируются (или имеют псевдонимы) во внутренние регистры, которые скрыты от программиста.Регистры и адреса памяти должны иметь свои значения, отображаемые во временное значение для обработки. В настоящее время в каждом цикле могут выполняться переводы 4 микроопераций.

После завершения трансляции микроопераций все микрооперации инструкции попадают в буфер переупорядочения, или ROB. ROB в настоящее время поддерживает до 128 микроопераций. На процессоре с Hyper-Threading ROB также может координировать записи от нескольких виртуальных процессоров. Оба виртуальных процессора объединяются в единое ООО ядро ​​на этапе ROB.

Эти микрооперации теперь готовы к обработке. Они помещаются на Станцию ​​бронирования (РС). В настоящее время RS может одновременно выполнять 36 микроопераций.

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

Исходное ядро ​​Pentium Pro OOO имело шесть исполнительных блоков: два целочисленных процессора, один процессор с плавающей запятой, блок загрузки, блок адреса хранилища и блок данных хранилища. Два целочисленных процессора были специализированными; один мог обрабатывать сложные целочисленные операции, другой мог решать до двух простых операций одновременно. В идеальной ситуации исполнительные блоки Pentium Pro OOO Core могут обрабатывать семь микроопераций за один такт.

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

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

Если вы внимательно следовали, то, возможно, заметили одну очень важную проблему в том, как она был только что описан.Что произойдет, если место выполнения изменится? Например, что происходит, когда код встречается с оператором if или switch? На старых процессорах это означало отказ от работы в суперскалярном конвейере и ожидание начала обработки новой ветвью.

Конвейерная остановка, когда ЦП содержит сотню или более инструкций — это крайняя потеря производительности.Каждая инструкция должна ждать, пока инструкции в новом месте будут загружены и конвейер перезапустится.В этой ситуации ядру ООО необходимо отменить незавершенную работу, вернуться к более раннему состоянию, дождаться, пока все микрооперации будут удалены, отбросить их и их результаты, а затем продолжить работу в новом месте. Это была очень сложная проблема, и она часто возникала при проектировании. Выполнение этой ситуации было неприемлемо для инженеров. Вот тут-то и появляется другая важная особенность ядра ООО. Их ответом было спекулятивное исполнение.

Спекулятивное выполнение означает, что при обнаружении условного оператора (такого как блок if) ядро ​​ООО просто декодирует и выполнит все ветви кода.Как только ядро ​​определит, какая ветвь правильная, результаты неиспользуемых ветвей будут отброшены. Это предотвращает остановку из-за небольших затрат на запуск кода внутри неправильной ветки. Разработчики ЦП также включили кеш прогнозирования ветвлений, который еще больше улучшил результаты, когда он был вынужден угадывать несколько местоположений ветвей. У нас все еще есть зависания процессора из-за этой проблемы, но существующие решения снизили ее до такой степени, что это редкое исключение, а не обычное состояние.

Наконец, процессоры с включенной Hyper-Threading будут предоставлять два виртуальных процессора для одного общего ООО ядра. Они совместно используют буфер переупорядочения и ядро ​​ООО, выступая в операционной системе как два отдельных процессора. Это выглядит так:

Процессор с Hyper-Threading предоставляет два виртуальных процессора, которые, в свою очередь, передают больше данных в ООО ядро. Это дает повышение производительности при общих рабочих нагрузках. Несколько ресурсоемких рабочих процессов, написанных для использования преимуществ каждого процессора, могут перегрузить ООО ядро.В таких ситуациях Hyper-Threading может немного снизить общую производительность. Эти рабочие процессы относительно редки; Hyper-Threading обычно обеспечивает потребителям примерно вдвое большую скорость, которую они могли бы увидеть при выполнении своих повседневных компьютерных задач.

Пример

Все это может показаться немного запутанным. Надеюсь, пример все прояснит.

С точки зрения приложения, мы все еще работаем в том же конвейере инструкций, что и старый 8086. Есть черный ящик.Инструкция, на которую указывает указатель инструкции, обрабатывается черным ящиком, и когда она выходит, результаты отражаются в памяти.

С точки зрения инструкции, однако, этот черный ящик — настоящая поездка.

Вот сегодняшняя (примерно 2008-2013 гг.) Поездка процессора, как видно из инструкции:

Во-первых, вы — программная инструкция. Ваша программа запущена.

Вы терпеливо ждете, пока указатель инструкции укажет на вас, чтобы вас можно было обработать.Когда указатель инструкции удаляется от вас примерно на 4 килобайта — примерно на 1500 инструкций — вы попадаете в кеш инструкций. Загрузка в кеш занимает некоторое время, но вам еще далеко до запуска. Эта предварительная выборка является частью первого этапа конвейера.

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

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

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

Ваши четыре микрооперации переходят к таблице псевдонимов регистров.Вы объявляете, из какого адреса памяти вы читаете (это бывает fs: [eax + 18h] ), и микросхема преобразует его во временные адреса для ваших микроопераций. Ваши микрооперации попадают в буфер переупорядочения, или ROB. При первой же возможности они переходят на Станцию ​​бронирования.

Станция резервирования содержит инструкции, готовые к выполнению. Ваша третья микрооперация немедленно подхватывается Execution Port 5. Вы не знаете, почему она была выбрана первой, но ее больше нет. Через несколько циклов ваша первая микрооперация устремляется к порту 2, исполнительному устройству адреса загрузки.Остальные микрооперации ждут, пока разные порты соберут другие микрооперации. Они ждут, пока порт 2 загрузит данные из кеша памяти и поместит их во временные слоты памяти.

Они ждут долго …

Очень долго …

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

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

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

Через дверь с надписью «Retirement» проходит короткая очередь. Вы встаете в очередь и обнаруживаете, что стоите рядом с теми же инструкциями, с которыми пришли.Вы даже стоите в таком же порядке. Оказывается, это вышедшее из строя ядро ​​действительно знает свое дело.

Вы и ваши соседние инструкции все вместе выходите из ЦП в том же порядке, на который указывает указатель инструкции.

Заключение

Надеюсь, эта небольшая лекция пролила свет на то, что происходит внутри ЦП. Это не только магия, дым и зеркала.

Возвращаясь к первоначальным вопросам, теперь у нас есть хорошие ответы.

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

Сколько времени требуется для выполнения одной инструкции? Хотя в мире без конвейеров на этот вопрос был хороший ответ, в современных процессорах время, которое требуется, зависит от того, какие инструкции находятся поблизости, а также от размера и содержимого соседних кешей.На прохождение процессора требуется минимальное количество времени, но оно примерно постоянно. Хороший программист и оптимизирующий компилятор могут заставить многие инструкции выполняться примерно за нулевое время. При амортизированном нулевом времени медленной является не стоимость инструкции; вместо этого это означает, что требуется время для работы через ядро ​​OOO и время для ожидания загрузки и выгрузки кэш-памяти.

Что это значит, когда новый ЦП имеет 12-ступенчатый конвейер, или 18-ступенчатый, или даже «глубокий» 31-ступенчатый конвейер? Это означает, что на вечеринку сразу же приглашается больше инструкций.Очень глубокий конвейер может означать, что сразу несколько сотен инструкций могут быть помечены как «выполняющиеся». Когда все идет хорошо, ООО ядро ​​остается очень загруженным, а процессор получает впечатляющую пропускную способность инструкций. К сожалению, это также означает, что остановка конвейера превращается из легкого раздражения, как это было в первые дни, в кошмар производительности, поскольку сотни инструкций должны ждать, пока конвейер очистится.

Как я могу применить это к своим программам? Хорошая новость заключается в том, что процессоры могут предугадывать наиболее распространенные закономерности, а компиляторы оптимизируют работу под ООО ядро ​​в течение почти двух десятилетий.ЦП работает лучше всего, когда все инструкции и данные в порядке. Всегда делайте свой код простым. Простой и понятный код поможет оптимизатору компилятора определить и ускорить результаты. Не прыгайте, если можете, и если вам нужно прыгать, старайтесь каждый раз прыгать точно так же. Сложные конструкции, такие как таблицы динамических переходов, являются причудливыми и могут многое сделать, но ни компилятор, ни ЦП не могут предсказать, что будет происходить, поэтому сложный код, скорее всего, приведет к остановкам и ошибочным предсказаниям.С другой стороны, данные должны быть простыми. Храните данные в порядке, рядом и последовательно, чтобы не допустить сбоев в работе. Выбор правильных структур данных и макетов данных может во многом способствовать хорошей производительности.

Опубликовано в категории: Разное

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *