Какой жизненный цикл процессора
Сегодняшняя тема навеяна новостью, которую растиражировали многие издания, в Qualcomm решили не создавать драйверы для графического процессора в чипсете Qualcomm 800/801, то есть отказались от поддержки Vulkan API. Напомню, что благодаря Vulkan API игры на Android 7 должны стать повеселее и побыстрее. Чипсет Qualcomm 800 появился осенью 2013 года и стал одним из первых в этой серии, затем вышло обновление 801, которое до сих пор с точки зрения производительности остается очень привлекательным для моделей среднего сегмента. В Qualcomm успешно продавали и продают этот чипсет, а отказ от поддержки Android 7 обусловлен во многом маркетинговыми причинами, а не невозможностью включить поддержку этого API. И эти действия Qualcomm вполне логичны с точки зрения производителя чипсетов, более того, другие компании поступают ровно так же, а подчас и того хуже. Но почему они отказываются поддерживать успешные решения, которые имеют потенциал на рынке? Очевидный ответ – если поддерживать старые чипсеты неограниченно долгое время, то это негативно скажется на продажах новых чипсетов, маржа на которых выше. Давайте попробуем разобраться в этой бизнес-модели и посмотреть, что нам продают под видом новых процессоров, как быстро одно поколение сменяет другое.
Пожалуй, лидером по перелицовке старых чипсетов в «новые» является компания MediaTek, которая ежегодно запускает новую линейку чипсетов для моделей разных ценовых групп. Если топовые чипсеты призваны продемонстрировать технологическое лидерство, уровень инженерных решений, но при этом они продаются в небольших количествах и постоянно изменяются, то в среднем ценовом сегменте компания придерживается совсем иной философии. Давайте взглянем на процессор MediaTek MT6735, который был анонсирован в конце 2014 года, а в продуктах массово стал появляться летом 2015 года. Это четырехъядерный чипсет с 4G, поддержкой камер разрешением до 13 мегапикселей. Из-за стоимости этот чипсет в разных вариациях (6735P как один из вариантов), стал одним из самых популярных в нише смартфонов по 45-55 долларов (оптовая цена в Китае).
Изначально все драйверы этого чипсета написаны для Android 5.x, никаких попыток создать поддержку для новых версий Android не предпринималось. С появлением 6-ой версии в MediaTek очень неспешно начали адаптировать драйверы для этого чипсета, одновременно предлагая другие решения для обновленного Android. Фактически MediaTek предложили косметически обновленный 6735 с другим номером и полной совместимостью на аппаратном уровне с предыдущим чипсетом, что позволяло заменять процессоры на плате без каких-либо проблем. Для производителей телефонов это означало следующую штуку – если вы хотите выпустить аппарат на новой версии Android, то будьте добры раскошелиться на новый чипсет, который стоит дороже. Вполне рыночные отношения, так как новый чипсет чуточку быстрее, иногда самую малость, но зато поддерживает новую версию Android, а значит, конечный продукт будет в теории привлекательнее в глазах потребителя.
А что со старым продуктом? Ровным счетом ничего, небольшие производители просто не в состоянии самостоятельно переписать драйверы и проделать работу создателя чипсетов, как результат, их «старые» модели не получают никаких обновлений. Обратите внимание, что на рынке сегодня появляется достаточное количество устройств на Android 5.1, это происходит во второй половине 2016 года, и они не воспринимаются анахронизмом, имеют заметные продажи. И все прекрасно знают, что никаких обновлений Android в них не будет.
Для MediaTek, Qualcomm и других компаний, играющих в этой области, уменьшение жизненного цикла чипсетов – жестокая необходимость, им нужно, чтобы покупали новые продукты. В отсутствие новых версий Android убедить партнеров в том, что им нужно сменить чипсет А на почти такой же Б, практически невозможно, все считают деньги. И невольно появление новых версий Android создает для производителей чипсетов пространство для маневра, когда создание драйверов обусловливает возможность использовать то или иное решение с новой версией ОС.
В чем отличие стратегии Qualcomm от MediaTek? Например, в Qualcomm цикл поддержки топовых чипсетов составляет 2.5-3 года, в то время как в MediaTek это 1-1.5 года. В этом нет ничего плохого или предосудительного, каждая компания ориентируется на своего потребителя, а те уже понимают, что они получают и какие ограничения будут в будущем у чипсетов. С точки зрения R&D поддержка старых чипсетов не так уж сложна, к тому же она стоит немного, основные деньги на разработку уже потрачены. Но это означает, что их нужно продавать с заметным дисконтом, что не всегда выгодно.
Из этого небольшого описания подхода к рынку производителей чипсетов следует одна непреложная истина, в экосистеме Android никогда новейшая версия платформы не будет занимать значимой доли. Посмотрите на доли разных версий Android ниже.
Из этой таблицы следует, что Android 6.0 занимает всего 15% рынка, в то время как Android 5.x – 35.5%. Причина в том, что до сих пор выходят смартфоны на этой версии системы, а их производители даже не планируют обновление до последующих версий. Более того, покупатели таких смартфонов осознают, что они приобретают устройство без каких-либо обновлений в будущем. На рынке Android-смартфонов обновления дают только крупные компании, так называемые А-бренды. Причем вначале обновления появляются для флагманов, затем для флагманов предыдущего сезона и потом уже для других моделей. Для некоторых Б-брендов обновления флагманов крупных компаний дает возможность также представить свои обновления, они без угрызений совести заимствуют чужие наработки, но быть первыми на этом поле они не могут. Энтузиасты зачастую портируют новые версии Android на старые телефоны, но в этом случае надо смириться с тем, что не будет работать множество функций, а стабильность устройства окажется под вопросом.
Ни у Google, ни у производителей железа нет никаких рычагов воздействия на производителей чипсетов, чтобы заставить их выпускать драйверы для старых разработок, хотя технически это возможно и выгодно. Теоретически рынок мог пойти по пути развития, когда не наращивается железная составляющая, а оптимизируются софт и драйвера. Тот же Qualcomm де-факто идет по этому пути в старших моделях, выпуская ревизии успешных чипсетов, которые исправляют как аппаратные, так и программные ошибки. Но и тут есть временной предел, больше трех лет компания этого не делает никогда, если, конечно, мы говорим об устройствах для массового рынка. Специализированные чипсеты для военного применения имеют принципиально иной жизненный цикл, который составляет от пяти лет и зачастую достигает 10-15 лет. За срок жизни таких процессоров они получают ежегодно обновления драйверов и софта, что в конечном итоге повышает их энергоэффективность, скорость работы, из железа выжимают все возможное. Это полная противоположность тому, что творится на обычном, массовом рынке.
Оглянитесь вокруг, модель, которую применяют на практике производители чипсетов, с искусственным ограничением функциональности уже выпущенных процессоров, используют и многие другие компании. Например, вы покупаете флагман, в котором есть какая-то программная фишка, проходит полгода-год, и появляется новый флагман, в котором функциональность этой фишки расширяется, но на старые модели такое обновление не приходит. Тот же режим экрана Always On на смартфонах Samsung возможен на большинстве старых флагманов, но его оставили только для новых моделей, чтобы показать их отличия от тех, что были ранее. Это также искусственное ограничение, которое должно увеличивать спрос на новые модели.
Никто из производителей не заинтересован в том, чтобы до бесконечности поддерживать старые устройства, тот же Apple с трехлетним циклом обновления создает видимость обновлений, так как на старых моделях новые версии iOS приводят к заметному ухудшению производительности, медленной работе. Но формально вы получаете новый софт. Фактически тормозящий iPhone – это повод обновить его до новой модели и наслаждаться пару лет быстрой работой, пока не появится новая версия iOS, которая де-факто обязательна к установке и она снижает производительность устройства.
Идеального рецепта в этой области нет. Покупатели, причем как частные лица, покупающие электронику, так и производители, закупающие компоненты, очень похожи по поведению, они хотят, чтобы все обновлялось до бесконечности и бесплатно. Но так не бывает в реальной жизни, и поэтому возникают искусственные барьеры. Для каждой компании вопрос в том, как найти золотую середину. С одной стороны, нужно добиться того, чтобы новые фишки были привлекательны и воспринимались как реальное изменение, с другой стороны, пользователи «старых» версий не роптали. Балансирование между возможным и желаемым. К сожалению, создание искусственных барьеров и осознанное старение продуктов с точки зрения софта давно стало нормой для всех без исключения массовых рынков. И с этим точно стоит смириться, ничего иного в ближайшие годы нас не ждет, парадигма не изменится.
Здравствуй, мир! Сегодня у нас серия статьей для людей со средними знаниями о работе процессора в которой мы будем разбираться с процессорными архитектурами (у меня спелл чекер ругается на слово Архитектурами/Архитектур, надеюсь я пишу слово правильно), создавать собственную архитектуру процессора и многое другое.
Принимаются любые замечания!
Исторически сложилось, что существуют много процессоров и много архитектур. Но многие архитектуры имеют схожести. Специально для этого появились "Группы" архитектур типа RISC, CISC, MISC, OISC (URISC). Кроме того они могут иметь разные архитектуры адресации памяти (фон Неймана, Гарвард). У каждого процессора есть своя архитектура. Например большинство современных архитектур это RISC (ARM, MIPS, OpenRISC, RISC-V, AVR, PIC** и т.д.), но есть архитектуры которые выиграли просто за счет других факторов (Например удобство/цена/популярность/etc) Среди которых x86, x86-64 (Стоит отметить, что x86-64 и x86 в последних процессорах используют микрокод и внутри них стоит RISC ядро), M68K. В чем же их отличие?
Reduced Instruction Set Computer — Архитектура с уменьшенным временем выполнения инструкций (из расшифровка RISC можно подумать, что это уменьшенное количество инструкций, но это не так). Данное направления развилось в итоге после того, как оказалось, что большинство компиляторов того времени не использовали все инструкции и разработчики процессоров решили получить больше производительности использую Конвейеры. В целом RISC является золотой серединой между всеми архитектурами.
Яркие примеры данной архитектуры: ARM, MIPS, OpenRISC, RISC-V
Что такое TTA? ТТА это Архитектура на основе всего одной инструкции перемещения из одного адреса памяти в другую. Данный вариант усложняет работу компилятора зато дает большую производительность. У данной архитектуры есть единственный недостаток: Сильная зависимость от шины данных. Именно это и стало причиной ее меньшей популярности. Надо отметить что TTA является разновидностью OISC.
Яркие примеры: MOVE Project
Конвейеры
Что такое конвейеры? Если сказать очень глупым языком это несколько параллельных действий за один такт. Это очень грубо, но при этом отображает суть. Конвейеры за счет усложнения архитектуры позволяют поднять производительность. Например конвейер позволяет прочитать инструкцию, исполнить предыдущую и записать в шину данных одновременно.
На картинке более понятно, не правда?
IF — получение инструкции,
ID — расшифровка инструкции,
EX — выполнение,
MEM — доступ к памяти,
WB — запись в регистр.
Вроде все просто? А вот и нет! Проблема в том что например прыжок (jmp/branch/etc) заставляют конвейер начать исполнение (получение след. инструкции) заново таким образом вызывая задержку в 2-4 такта перед исполнение следующей инструкции.
5- Техническое обслуживание
Техническое обслуживание компьютера происходит одновременно с этапом эксплуатации. Машина нуждается в периодических обзорах аппаратные средства и программное обеспечение. Обучение пользователей также должно быть принято во внимание.
7- Снятие
Все компьютеры удалены из срока полезного использования. Согласно исследованию, проведенному компанией Redemtech Inc., средний срок службы ноутбука составляет три года, а настольного компьютера - четыре года..
Этап вывода включает в себя демонтаж компьютера и принятие мер по отказу от аппаратные средства.
Последнее может быть сделано через продажу или переработку. Другой вариант - сохранить машину для дальнейшего использования запасных частей..
Важно помнить, чтобы очистить компьютер от всех важных данных, прежде чем избавляться от его частей.
Это определение можно сравнить с выражением, что жизнь есть ни что иное, чем продолжительный путь по дороге к смерти. В то время как некоторые с точки зрения философии могли бы найти эту аналогию довольно уместной, с технической точки зрения, такое высказывание является самым ужасным вариантом при моделировании жизненного цикла процессора. Давайте рассмотрим это подробнее: качество кремния часто определяется за счет способности процессора достигать и поддерживать желаемую стабильную частоту переключения на протяжении всей «жизни», при этом значение максимального номинального напряжения не должно превышать указанное в спецификации (плюс допуск). Так почему, если остаточный срок эксплуатации процессора зависит от напряжения, необходимого для достижения этих скоростей, каждый процессор приходит с одинаковым сроком гарантии — три года?
Ответ на этот вопрос довольно прост. Каждый процессор, вне зависимости от качества кремния, может длительно и безошибочно работать при соблюдении указанных допустимых окружающих условий (температуры, напряжения и т.д.) в течение периода не меньшего, чем гарантированный срок эксплуатации, при условии, что от него не потребуется большей производительности, чем может позволить его номинальная частота. Другими словами, получается, что вместо того, чтобы ограничить срок эксплуатации каждого процессора и предоставить соответствующие гарантийные обязательства, процессоры сортируют в зависимости от самой высокой достигаемой ими частоты при условии, что подаваемое напряжение не превышает максимально допустимого рабочего напряжения. Когда мы пытаемся понять этот факт, мы подходим к самой идее разгона – работы процессора в условиях, выходящих за номинальные пределы, установленные спецификациями вне зависимости от принципов надежности.
Как только вы признаете, что разгон по определению уменьшает срок эксплуатации любого процессора, становится легче оправдывать его более экстремальное использование. И в этом случае требуется время, чтобы понять, почему Intel придерживается жесткой политики «против разгонов», когда речь заходит о сохранении гарантии на их продукт. Слишком большое количество людей считает, что разгон «безопасен» до тех пор, пока они не увеличивают напряжение ядра их процессора – что является неверным. Повышение частоты работы процессора ведет к повышению температуры при нагрузках, что снижает срок эксплуатации. В свою очередь, лучшее охлаждение может стать хорошим вариантом сохранения работоспособности процессора для тех, кто стремится достичь его более длительной и безотказной работы, т.к. это позволит увеличить допустимый предел срока его эксплуатации на длительный период времени.
На графике представлены три кривые. Средняя кривая отображает минимальное требуемое напряжение, необходимое процессору для бесперебойной работы при 100%-й загрузке в течение периода времени, указанного по оси Х. В течение этого времени процессор подвергается воздействию максимального номинального напряжения ядра и при этом не разгоняется. К тому же имеют место все самые неблагоприятные факторы, и наш процессор E8500 работает на абсолютном максимуме выдерживаемой температуры в условиях неполадок, которая составляет 72.4ºC. Через три года, мы станем ожидать, что процессор «состарится» до такого состояния, что для стабильной работы потребуется подавать чуть более высокое напряжение на ядро – как указано выше, чуть меньше 1,15 В по сравнению с прежними 1,125 В.
Учитывая напряжение спада Vdroop и напряжение смещения Voffset, средний 45-нм двухъядерный процессор с идентификатором напряжения VID 1,25000 должен работать с окончательным напряжением под нагрузкой, составляющим около 1,21 В. Пунктирной зеленой линией рядом с центром графика показано фактическое напряжение питания процессора (Vcore). Следует иметь в виду, что линия тренда отображает минимальное напряжение, необходимое для непрерывной стабильной работы, поэтому до тех пор, пока она остается ниже линии фактического напряжения питания (средняя зеленая линия), процессор будет работать должным образом. Нижняя зеленая линия находится приблизительно на 5% ниже линии фактического напряжения питания и представляет собой пример смещения, которое может быть использовано для сохранения и увеличения допустимых значений напряжения.
Точка пересечения средней линии (минимальное требуемое напряжение) и средней зеленой линии (фактическое напряжение питания) предсказывает тот момент во времени, когда процессор должен «дать сбой», хотя увеличение значения напряжения питания должно обеспечить более длительную работу процессора. Также следует обратить внимание на то, как средняя линия проходит через нижнюю зеленую линию, что отображает желаемый запас стабильности в трехлетней точке вместе с моментом окончания гарантии. Красная линия показывает, какое оказывается воздействие при работе процессора в температурных условиях, превышающих указанные значения в спецификации, относительно номинального срока эксплуатации продукта – мы можем увидеть, что ускоренное старение процессора было вызвано более высокими рабочими температурами. Синяя линия является примером того, как понижение средней температуры процессора может привести к увеличению его срока службы.
Поскольку отказы в работе по истечению срока эксплуатации вызваны уменьшением запаса допустимых значений напряжения (чрезмерный износ/старение), мы можем определить очень четкую взаимосвязь между учащением/сокращением такого рода отказов и рабочей средой, в которой находится указанный процессор. Здесь мы видим, что более жесткие условия эксплуатации воздействуют на наблюдаемую интенсивность отказов согласно новой кривой интенсивности отказов в работе по истечению срока эксплуатации. При работе процессора вне установленных рабочих значений, при его приближении к окончанию гарантийного периода мы больше не можем с уверенностью приписывать любой отказ в работе какой бы то ни было неизвестной причине. К тому же поскольку Intel не в состоянии различать типы отказов, в каждом гарантийном случае подозревается отказ в работе по причине разгона процессора или его неправильного использования, таким образом, политика предприятия запрещает любой разгон системы, если пользователю важно сохранение гарантии.
Итак, что же все это значит? На сегодняшний день мы знаем, что из трех основных типов отказов, отказы в работе из-за старения (т.е. износа) в большинстве случаев напрямую зависят от того, как и в каких условиях работает процессор. Очевидно, что пользователь играет важную роль в создании и поддержании благоприятной среды для эксплуатации процессора. Здесь учитывается использование высококачественных систем охлаждения и термопаст, активное использование вентиляторов для обеспечения максимальной вентиляции корпуса, и, наконец, надлежащий контроль за состоянием воздуха в помещении. Также мы узнали, что Intel создала легкие и понятные рекомендации, касательно необходимых усилий по обеспечению более высокой продолжительности жизни ваших устройств.
Те, кто предпочитают игнорировать эти рекомендации и / или выходить за рамки значений, указанных в любой спецификации, делают это на свой страх и риск. Правда, это вовсе не означает, что подобные действия обязательно вызовут немедленный, непоправимый ущерб или приведут к отказу в работе. Речь здесь скорее идет о том, что каждое решение, принятое в ходе разгона имеет реальные и вполне измеримые «последствия». У некоторых людей этот факт может не вызвать причин для беспокойства, так как забота о сроке службы устройства не является их приоритетом. С другой стороны, возможно, ими будут приняты профилактические меры для того, чтобы сгладить воздействие более высоких напряжений, такие как использование водяного охлаждения или охлаждения за счет фазового перехода. В любом случае, основные принципы остаются теми же – разгон никогда не бывает без риска. И так же, как и в жизни, пойти на разумный риск иногда может быть единственным верным решением.
Архитектура гарварда
Особенность этой архитектуры является отдельная шина данных и инструкций. Дает большую производительность чем фон Нейман за счет возможности за один такт использовать обе шины (читать из шины инструкций и одновременно записывать в шинну данных), но осложняет архитектуру и имеет некоторые ограничения. В основном используется в микроконтроллерах.
4- Операция
Этап эксплуатации составляет большую часть срока службы компьютера. На этом этапе компьютер используется для той цели, для которой он был приобретен.
Продолжительность этого периода может быть увеличена путем осторожного и деликатного использования. Рекомендуется выполнять резервное копирование, а также установку антивируса и обновлений программное обеспечение.
6- Обновление
Обновления аппаратные средства они предполагают замену компонентов на новые. Это увеличивает срок службы компьютера или позволяет ему выполнять новые задачи.
Вы можете заменить внутренние компоненты, такие как RAM. Существует также возможность добавления периферийных элементов, таких как внешние жесткие диски..
Необходимо учитывать, что обновление аппаратные средства Это оправдано, только если стоимость меньше, чем покупка нового компьютера. Кроме того, вы должны продлить срок службы компьютера на разумный период.
Прерывания
Прерывания это техника при которой исполняемый в данный момент код приостанавливается для выполнения какой-то другой задачи при каких-то условиях. Например при доступе в несуществующий участок памяти вызывается HardFault или MemoryFault прерывания или исключения. Или например если таймер отсчитал до нуля. Это позволяет не бездействовать пока нужно ждать какое-то событие.
Какие недостатки? Вызов прерывания это несколько тактов простоя и несколько при возврате из прерывания. Так же несколько инструкций в начале кода будет занято инструкциями для Таблицы прерываний.
1- Создание
Жизнь аппаратные средства компьютера начинается на плате проекта, в офисах Lenovo, Dell или HP, среди других компаний.
Эти конструкции аппаратные средства они становятся прототипами. После завершения серии сложных испытаний они отправляются в производственную цепочку. Впоследствии они производятся и распространяются для продажи конечному потребителю..
OISC (URISC)?
One Instruction Set Computer — Архитектура с единственной инструкцией. Например SUBLEQ. Такие архитектуры часто имеют вид: Сделать действие и в зависимости от результата сделать прыжок или продолжить исполнение. Зачастую ее реализация достаточно простая, производительность маленькая, при этом снова ограничение шиной данных.
Яркие примеры: BitBitJump, ByteByteJump, SUBLEQ тысячи их!
CISC — Complex Instruction Set Computer — ее особенность в увеличенных количествах действий за инструкцию. Таким образом можно было теоретически увеличить производительность программ за счет увеличения сложности компилятора. Но по факту у CISC плохо были реализованы некоторые инструкции т.к. они редко использовались, и повышение производительности не было достигнуто. Особенностью этой группы является еще ОГРОМНАЯ Разница между архитектурами. И несмотря на названия были архитектуры с маленьким количеством инструкций.
Яркие примеры: x86, M68K
Системные вызовы
Системные вызовы используется в Операционных системах для того, чтобы программы могли общаться с операционной системой например просить ОС прочитать файл. Очень похоже на прерывания. Аналогично исключениям не всегда присутствуют в процессоре
Здесь описываются методы запрета доступа приложений к аппаратуре напрямую.
MPU и MMU
MPU и MMU используется в современных системах чтобы изолировать несколько приложений. НО если MMU позволяет "передвинуть" память то MPU позволяет только блокировать доступ к памяти/запуск кода в памяти.
7 фаз жизненного цикла компьютера
3- Реализация
Как только у вас есть новый аппаратные средства, необходимо установить его. Первые шаги - найти место, распаковать его и подключить аппаратные средства нового компьютера.
Как только это будет сделано, компьютер настроен с программное обеспечение который используется и скопировал или импортировал данные, которые необходимы.
Привилегированный режим
Это режим в котором стартует процессор. В таком режиме программа или ОС имеют полный доступ к памяти в обход MMU/MPU. Все программы запускаются в непривилегированном режиме во избежания прямого доступа к аппаратным подсистемам программ для этого не предназначенных. Например вредоносным программам. В Windows ее часто называют Ring-0, а в *nix — системным. Не стоит путать Привелигированный пользователь и Привилегированный режим ибо в руте вы все еще не можете иметь прямой доступ к аппаратуре (можно загрузить системный модуль который позволит это сделать, но об этом чуть позже :)
Exception (исключения)
Но кроме прерываний еще существуют исключений которые возникают например при деления на ноль. Зачастую его совмещают с прерываниями и системными вызовами, как например в MIPS. Исключения не всегда присутствуют в процессоре например как в AVR или младших PIC
Расширение существующих архитектур
Достаточно популярной техникой является добавление в уже существующую архитектуру больше инструкций через расширения. Ярким примером является SSE под x86. Этим же грешит ARM и MIPS и практически все. Почему? Потому что нельзя создать унивирсальную архитектуру.
Другим вариантом является использование других архитектур для уменьшения размера инструкций.
Яркий пример: ARM со своим Thumb, MIPS с MIPS16.
В видеокартах часто встречается много ядер и из-за этой особенности появилась потребность в дополнительных решениях. Если конвейеры можно встретить даже в микроконтроллерах то решения используемых в GPU встречаются редко. Например Masked Execution (Встречается в инструкциях ARM, но не в Thumb-I/II). Еще есть другие особенность: это уклон в сторону Floating Number (Числа с плавающей запятой), Уменьшение производительности в противовес большего количества ядер и т.д.
Архитектура фон Неймана
Особенностью таких архитектур была общая шина данных и инструкций. Большинство современных архитектур это программный фон Нейман, однако никто не запрещает делать аппаратный Гарвард. У данной архитектуры большим недостатком является большое зависимости производительности процессора от шины. (Что ограничивает общую производительность процессора).
2- Планирование и покупка
Приобретение компьютера начинается с этапа планирования. Пользователь определяет требования, которые ему нужны, и выбирает функции и спецификации, которые соответствуют его потребностям..
Затем начинается фаза покупки. На этом этапе обычно запрашивается минимально возможная цена.
Masked Execution
Данный режим отличается от классических тем, что инструкции исполняются последовательно без использования прыжков. В инструкции хранится некоторое количество информации о том при каких условия эта инструкция будет исполнена и если условие не соблюдено то инструкция пропускается.
Ответ прост! Что бы не нагружать шину инструкций. Например в видеокартах можно загрузить тысячи ядер одной инструкцией. А если бы использовалась система прыжков то пришлось бы для каждого ядра ждать инструкцию из медленной памяти. Кеш частично решает проблему, но все еще не решает проблему полностью.
Здесь мы будем описывать несколько техник используемых в центральный процессорах и микроконтроллерах.
PIC (PIE)
Что такое PIE? (PIC не использую для избежания путаницы с МК PIC). PIE это техника благодаря которой компилятор генерирует код который будет работать в любом месте в памяти. Эта техника в совмещении с MPU позволяет компилировать высокие языки программирования которые будут работать и с MPU.
Популярная техника SIMD используется для того, что бы за один такт выполнять несколько действий над несколькими регистрами. Иногда бывают в качестве дополнений к основной архитектуре, например, как в MIPS, ARM со своими NEON/VFP/etc, x86 со своим SSE2.
Это техника Используется для оптимизации кода, генерируемого компилятором, с помощью пересортировки инструкций, увеличивая производительность процессора. Это позволяет использовать конвейер на полную.
Что такое регистр статуса? Это регистр который хранит состояние процессора. Например находится ли процессор в привилегированном режиме, чем закончилась операция последнего сравнения.
Используется в связке с Masked Execution. Некоторые разработчики специально исключают регистр статуса ибо он может являться узким местом как поступили в MIPS.
В MIPS нет отдельной инструкции загрузки константы в память, но есть инструкция addi и ori которая позволяет в связке с нулевым регистром ($0) эмулировать работу загрузки константы в регистр. В других архитектурах она присутствует. Я затронул эту тему, потому что она пригодиться нам в статьях с практикой.
Идут множество споров насчет того сколько должно быть операндов в арифметических инструкциях. Например в MIPS используется вариант с 3-мя регистрами. 2 операнда, 1 регистр записи. С другой стороны, использование двух операндов позволяет сократить код за счет уменьшения размера инструкции. Пример совмещения является MIPS16 в MIPS и Thumb-I в ARM. В плане производительности они практически идентичны (Если исключать размер инструкции как фактор).
Порядок байт. Возможно вам знакомы Выражения Big-Endian и Little-Endian. Они описывают порядок байт в инструкциях/в регистрах/в памяти/etc. Здесь думаю все просто :). Есть процессоры которые совмещают режимы, как MIPS, или которые используют одну систему команд, но имеют разный порядок байт, например ARM.
Что такое сопроцессоры? Сопроцессоры являются элементами процессора или внешней микросхемой. Они позволяют исполнять инструкции, которые слишком громоздки для основной части процессора. Как яркий пример, сопроцессоры в MIPS для деления и умножения. Или например 387 для 80386, который добавлял поддержку чисел с плавающей запятой. А в MIPS сопроцессоров было много и они выполняли свои роли: контролировали прерывания, исключения и системные вызовы. Часто сопроцессоры имеют собственные инструкции и на системах, где этих инструкций нет, (пример ARM) эмулируют ее через Trap-ы (ловушки?). Несмотря на костыльность и маленькую производительность, они часто являются единственным выбором в микроконтроллерах.
Атомартность операций обеспечивает потоко-независимое исполнение за счет инструкций, которые выполняют несколько действий за один псевдотакт.
Вариант другого решения атомарность переферии. Например для установки ножки в STM32 в высокое и низкое состояние используется разные регистры, что позволяет иметь атомарность на уровне переферии.
Вы, навярняка, слышали о L1, L2, L3 и регистрах. Если коротко, процессор анализирует часть кода, чтобы предугадать прыжки и доступ в память и зараннее просит кеш получить эти данные из памяти. Кеш зачастую бывает прозрачным для программы, но бывают и исключения из этого правила. Например, в программных ядрах в ПЛИС используется програмный кеш.
И вы кончено слышали о такой вещи, как Cache Miss или промах по кешу. Это операция которая не была предусмотрена процессорам или процессор не успел закешировать эту часть памяти. Что достаточно часто является проблемой замедления доступа к памяти. Промах проходит незаметно для программы, но не останутся незаметными просадки в производительности.Так же переключения контекстов например при прерываниях тоже заставляет страдать кеш ибо небольшой код сбивает конвейер и кеш для собственных нужд.
В современных процессорах часто используется техника теневых регистров. Они позволяют переключаться между прерываниями и пользовательским кодом практически без задержек связанных с сохранением регистров.
Спросите тогда что такое куча (Heap)? Куча это память размером намного больше чем стек (Стек обычно ~1MB). В хипе храниться все глобальное. Например все указатели полученные с помощю Malloc указывают на часть куча. А указатели хранятся в стеке или в регистрах. С помощью инструкций загрузки данных относительно регистра можно ускорить работу стека и других доступов к памяти по типу стека, поскольку не нужно постоянно использовать операции PUSH/POP, INC/DEC или ADDI, SUBI (добавить константу), чтобы получить данные глубже по стеку, а можно просто использовать доступ относительно стека с отрицательным смещением.
Не буду описывать регистры слишком подробно. Это мы затронем в практической статье.
В x86 регистров достаточно мало. В MIPS используется увеличенное количество регистров, а именно 31 ($0 имеет значение всегда равное нулю). В процессоре университета Беркли использовались регистровые окна, которые жестки ограничивали вложенность функций, при этом имея лучшую производительность. В других же, таких как AVR, ограничили использование регистров. Для примера: три 16-битных можно трактовать как шесть восьмибитных, где первые 16ть недоступны при некоторых операциях. Я считаю, что лучший метод был выбран MIPS-ом. Это мое сугубо личное мнение.
Что такое выравнивание? Оставлю-ка я этот вопрос вам :)
Это конец первой главы нулевой части. Вся серия будет крутиться вокруг темы создания собственного процессора. Собственной операционной системы. Собственного ассемблера. Собственного компилятора и много чего другого.
Нулевые части будут посвящены теории. Я сомневаюсь что доведу всю серию до победного конца, но попытка не пытка! )
Теперь, когда мы знаем, как работают процессоры на высоком уровне, настало время углубиться в разбор процесса проектирования их внутренних компонентов. Это вторая статья из серии, посвящённой разработке процессоров. Рекомендую изучить для начала первую часть, чтобы вы понимать изложенные ниже концепции.
Часть 1: Основы архитектуры компьютеров (архитектуры наборов команд, кэширование, конвейеры, hyperthreading)
Часть 2: Процесс проектирования ЦП (электрические схемы, транзисторы, логические элементы, синхронизация)
Часть 3: Компонование и физическое производство чипа (VLSI и изготовление кремния)
Часть 4: Современные тенденции и важные будущие направления в архитектуре компьютеров (море ускорителей, трёхмерное интегрирование, FPGA, Near Memory Computing)
Как вы возможно знаете, процессоры и большинство других цифровых устройств состоят из транзисторов. Проще всего воспринимать транзистор как управляемый переключатель с тремя контактами. Когда затвор включён, электрический ток может течь по транзистору. Когда затвор отключён, ток течь не может. Затвор похож на выключатель света в комнате, только он гораздо меньше, быстрее и может управляться электрически.
Существует два основных типа транзисторов, используемых в современных процессорах: pMOS (PМОП) и nMOS (NМОП). nMOS-транзистор пропускает ток, когда затвор (gate) заряжен или имеет высокое напряжение, а pMOS-транзистор пропускает ток, когда затвор разряжен или имеет низкое напряжение. Сочетая эти типы транзисторов комплементарным образом, мы можем создавать логические элементы КМОП (CMOS). В этой статье мы не будем подробно разбирать особенности работы транзисторов, но коснёмся этого в третьей части серии.
Логический элемент — это простое устройство, получающее входные сигналы, выполняющее какую-то операцию, и выводящее результат. Например, элемент И (AND) включает свой выходной сигнал тогда и только тогда, когда включены все входы затвора. Инвертор, или элемент НЕ (NOT) включает свой выход, если вход отключён. Можно скомбинировать эти два затвора и получить элемент И-НЕ (NAND), который включает выход, тогда и только тогда, когда не включён ни один из входов. Существуют другие элементы со своей логической функциональностью, например ИЛИ (OR), ИЛИ-НЕ (NOR), исключающее ИЛИ (XOR) и исключающее ИЛИ с инверсией (XNOR).
Ниже показано, как из транзисторов собраны два простых элемента: инвертор и NAND. В инверторе pMOS-транзистор (сверху) соединён с питанием, а nMOS-транзистор (снизу) соединён с заземлением. На обозначении pMOS-транзисторов есть небольшой кружок, соединённый с затвором. Мы сказали, что pMOS-устройства пропускают ток, когда вход отключен, а nMOS-устройства пропускают ток, когда вход включен, поэтому легко заметить, что сигнал на выходе (Out) будет всегда противоположным сигналу на входе (In). Взглянув на элемент NAND, мы видим, что для него требуется четыре транзистора, и что выход всегда будет отключен, если выключен хотя бы один из входов. Соединение подобным образом транзисторов для образования простых сетей — это тот же процесс, который используется для проектирования более сложных логических элементов и других схем внутри процессоров.
Строительные блоки в виде логических элементов так просты, что трудно понять, как они превращаются в функционирующий компьютер. Процесс проектирования заключается в комбинировании нескольких элементов для создания небольшого устройства, способного выполнять простую функцию. Затем можно объединить множество таких устройств, чтобы создать нечто, выполняющее более сложную функцию. Процесс комбинирования отдельных компонентов для создания работающей структуры — это именно тот процесс, который используется сегодня для создания современных чипов. Единственное отличие заключается в том, что современный чип состоит из миллиардов транзисторов.
В качестве небольшого примера давайте возьмём простой сумматор — 1-битный полный сумматор. Он получает три входных сигнала — A, B, и Carry-In (входной сигнал переноса), и создаёт два выходных сигнала — Sum (сумма) и Carry-Out (выходной сигнал переноса). В простейшей схеме используется пять логических элементов, и их можно соединить вместе для создания сумматора любого размера. В современных схемах этот процесс усовершенствован оптимизацией части логики и сигналов переноса, но фундаментальные основы остаются теми же.
Выход Sum равен или A, или B, но никогда обоим, или есть входящий сигнал переноса, и тогда A и B или оба включены, или оба выключены. Выходной сигнал переноса немного сложнее. Он активен, когда или A и B включены одновременно, или есть Carry-in и один из A или B включен. Чтобы соединить несколько 1-битных сумматоров для создания более широкого сумматора, нам просто нужно соединить Carry-out предыдущего бита с Carry-in текущего бита. Чем сложнее становятся схемы, тем запутанней получается логика, но это самый простой способ сложения двух чисел. В современных процессорах используются более изощрённые сумматоры, но их схемы слишком сложны для подобного обзора. Кроме сумматоров процессоры также содержат устройства для деления, умножения и версий всех этих операций с плавающей точкой.
Подобное объединение последовательностей элементов для выполнения некой функции над входными сигналами называется комбинаторной логикой. Однако это не единственный тип логики, используемый в компьютерах. Не будет особой пользы, если мы не сможем хранить данные или отслеживать состояние. Для того, чтобы иметь возможность сохранять данные, нам нужна секвенциальная логика.
Секвенциальная логика строится аккуратным соединением инверторов и других логических элементов так, чтобы их выходы передавали сигналы обратной связи на вход элементов. Такие контуры обратной связи используются для хранения одного бита данных и называются статическим ОЗУ (Static RAM), или SRAM. Эта память называется статическим ОЗУ в противовес динамической (DRAM), потому что сохраняемые данные всегда напрямую соединены с положительным напряжением или заземлением.
Стандартный способ реализации одного бита SRAM — это показанная ниже схема из 6 транзисторов. Самый верхний сигнал, помеченный как WL (Word Line) — это адрес, и когда он включен, то данные, хранящиеся в этой 1-битной ячейке передаются в Bit Line, помеченную как BL. Выход BLB называется Bit Line Bar; это просто инвертированное значение Bit Line. Вы должны узнать два типа транзисторов и понять, что M3 с M1, как и M4 с M2, образуют инвертор.
SRAM используется для построения сверхбыстрых кэшей и регистров внутри процессоров. Эта память очень стабильна, но для хранения каждого бита данных требует от шести до восьми транзисторов. Поэтому по сравнению с DRAM она чрезвычайно затратна с точки зрения стоимости, сложности и площади на чипе. С другой стороны, Dynamic RAM хранит данные в крошечном конденсаторе, а не использует логические элементы. Она называется динамической, потому что напряжение на конденсаторе может значительно изменяться, так как он не подключён к питанию или заземлению. Есть только один транзистор, используемый для доступа к хранящимся в конденсаторе данным.
Поскольку DRAM требует всего по одному транзистору на бит и очень масштабируема, её можно плотно и дёшево упаковывать. Недостаток DRAM заключается в том, что заряд конденсатора так мал, что его необходимо постоянно обновлять. Именно поэтому после отключения питания компьютера все конденсаторы разряжаются и данные в ОЗУ теряются.
Такие компании, как Intel, AMD и Nvidia, не публикуют схем работы своих процессоров, поэтому невозможно показать подобных полных электрических схем для современных процессоров. Однако этот простой сумматор позволит вам получить представление о том, что даже самые сложные части процессора можно разбить на логические и запоминающие элементы, а затем и на транзисторы.
Теперь, когда мы знаем, как производятся некоторые компоненты процессора, нам нужно разобраться, как соединить всё вместе и синхронизировать. Все ключевые компоненты процессора подключены к синхронизирующему (тактовому) сигналу (clock signal). Он попеременно имеет высокое и низкое напряжение, меняя его с заданным интервалом, называемым частотой (frequency). Логика внутри процессора обычно переключает значения и выполняет вычисления, когда синхронизирующий сигнал меняет напряжение с низкого на высокое. Синхронизируя все части, мы можем гарантировать, что данные всегда поступают в правильное время, чтобы в процессоре не возникали «глюки».
Вы могли слышать, что для повышения производительности процессора можно увеличить частоту тактовых сигналов. Это повышение производительности происходит благодаря тому, что переключение транзисторов и логики внутри процессора начинает происходить чаще, чем предусмотрено. Поскольку в секунду происходит больше циклов, то можно выполнить больше работы и процессор будет иметь повышенную производительность. Однако это справедливо до определённого предела. Современные процессоры обычно работают с частотой от 3,0 ГГц до 4,5 ГГц, и эта величина почти не изменилась за последние десять лет. Точно так же, как металлическая цепь не прочнее её самого слабого звена, процессор может работать не быстрее его самой медленной части. К концу каждого тактового цикла каждый элемент процессора должен завершить свою работу. Если какие-то части ещё её не завершили, то тактовый сигнал слишком быстрый и процессор не будет работать. Проектировщики называют эту самую медленную часть критическим путём (Critical Path) и именно он определяет максимальную частоту, с которой может работать процессор. Выше определённой частоты транзисторы просто не успевают достаточно быстро переключаться и начинают глючить или выдавать неверные выходные значения.
Повысив напряжение питания процессора, мы можем ускорить переключение транзисторов, но это тоже срабатывает до определённого предела. Если подать слишком большое напряжение, то мы рискуем сжечь процессор. Когда мы повышаем частоту или напряжение процессора, он всегда начинает излучать больше тепла и потреблять бОльшую мощность. Так происходит потому, что мощность процессора прямо пропорциональна частоте и пропорциональна квадрату напряжения. Чтобы определить энергопотребление процессора, мы рассматриваем каждый транзистор как маленький конденсатор, который нужно заряжать или разряжать при изменении его значения.
Подача питания — это настолько важная часть процессора, что в некоторых случаях до половины физических контактов на чипе может использоваться только для питания или заземления. Некоторые чипы при полной нагрузке могут потреблять больше 150 амперов, и со всем этим током нужно управляться чрезвычайно аккуратно. Для сравнения: центральный процессор генерирует больше тепла на единицу площади, чем ядерный реактор.
Тактовый сигнал в современных процессорах отнимает примерно 30-40% от его общей мощности, потому что он очень сложен и должен управлять множеством различных устройств. Для сохранения энергии большинство процессоров с низким потреблением отключает части чипа, когда они не используются. Это можно реализовать отключением тактового сигнала (этот способ называется Clock Gating) или отключением питания (Power Gating).
Тактовые сигналы создают ещё одну сложность при проектировании процессора: поскольку их частоты постоянно растут, то на работу начинают влиять законы физики. Даже несмотря на чрезвычайно высокую скорость света, она недостаточно велика для высокопроизводительных процессоров. Если подключить тактовый сигнал к одному концу чипа, то ко времени, когда сигнал достигнет другого конца, он будет рассинхронизован на значительную величину. Чтобы синхронизировать все части чипа, тактовый сигнал распределяется при помощи так называемого H-Tree. Это структура, гарантирующая, что все конечные точки находятся на совершенно одинаковом расстоянии от центра.
Может показаться, что проектирование каждого отдельного транзистора, тактового сигнала и контакта питания в чипе — чрезвычайно монотонная и сложная задача, и это в самом деле так. Даже несмотря на то, что в таких компаниях, как Intel, Qualcomm и AMD, работают тысячи инженеров, они не смогли бы вручную спроектировать каждый аспект чипа. Для проектирования чипов такого масштаба они используют множество сложных инструментов, автоматически генерирующих конструкции и электрические схемы. Такие инструменты обычно получают высокоуровневое описание того, что должен делать компонент, и определяют наилучшую аппаратную конфигурацию, удовлетворяющую этим требованиям. Недавно возникло направление развития под названием High Level Synthesis, которое позволяет разработчикам указывать необходимую функциональность в коде, после чего компьютеры определяют, как оптимальнее достичь её в оборудовании.
Точно так же, как вы можете описывать компьютерные программы через код, проектировщики могут описывать кодом аппаратные устройства. Такие языки, как Verilog и VHDL позволяют проектировщикам оборудования выражать функциональность любой создаваемой ими электрической схемы. После выполнения симуляций и верификации таких проектов их можно синтезировать в конкретные транзисторы, из которых будет состоять электрическая схема. Хоть этап верификации может и не кажется таким увлекательным, как проектирование нового кэша или ядра, он значительно важнее их. На каждого нанимаемого компанией инженера-проектировщика может приходиться пять или более инженеров по верификации.
Сложно осмыслить то, что в одном чипе может быть несколько миллиардов транзисторов и понять, что все они делают. Если разбить чип на его отдельные внутренние компоненты, становится немного легче. Из транзисторов составляются логические элементы, логические элементы комбинируются в функциональные модули, выполняющие определённую задачу, а эти функциональные модули соединяются вместе, образуя архитектуру компьютера, которую мы обсуждали в первой части серии.
БОльшая часть работ по проектированию автоматизирована, но изложенное выше позволяет нам осознать, насколько сложен только что купленный нами новый ЦП.
Во второй части серии я рассказал о процессе проектирования ЦП. Мы обсудили транзисторы, логические элементы, подачу питания и синхронизирующих сигналов, синтез конструкции и верификацию. В третьей части мы узнаем, что требуется для физического производства чипа. Все компании любят хвастаться тем, насколько современен их процесс изготовления (Intel — 10-нанометровый, Apple и AMD — 7-нанометровый, и т.д.), но что же на самом деле означают эти числа? Об этом мы расскажем в следующей части.
жизненный цикл компьютера Это может быть эффективно запрограммировано, чтобы получить максимальную отдачу от инвестиций. Даже самые специализированные и высокотехнологичные машины быстро устаревают.
Старые компьютеры не только вызывают снижение производительности, но и усложняют жизнь пользователя..
Если вы понимаете ключевые этапы жизненного цикла компьютера, вы можете спланировать свое приобретение.
Кроме того, важно определить точку, в которой более нецелесообразно продолжать поддерживать старые технологии..
Читайте также: