какие виды процессоров бывают на компьютере
Как выбрать центральный процессор
Содержание
Содержание
Ключевым преимуществом персонального компьютера как платформы была и остается универсальность. Именно благодаря возможности решать совершенно разные задачи на одном устройстве, привычные нам настольные компьютеры уже десятилетиями без малейших потерь переживают появления новых и «революционных» платформ, грозящихся стать им заменой.
Однако, чтобы быть в полной мере универсальным инструментом, компьютеру необходима соответствующая производительность. И, если в играх она определяется в первую очередь видеокартой, то для рабочих задач чаще всего важны возможности центрального процессора (хотя, разумеется, оперативная память и дисковая подсистема также имеют значение).
В этом гайде будут даны ответы на основные вопросы, возникающие при выборе ЦПУ, а параметры самих процессоров — разделены на важные и те, что не имеют определяющего значения при выборе.
На что НИКОГДА не нужно обращать внимание
У каждого из двух производителей центральных процессоров есть полностью сформированные линейки продуктов, рассчитанных на разные сегменты рынка: от HEDT до встраиваемых систем. И вполне логично, что процессор для мощной рабочей станции и процессор для неттопа просто не могут обладать одними и теми же качествами.
Более того, разные модели процессоров даже в одном семействе могут заметно отличаться по характеристикам. А потому говорить, что условный Core i3 — это ровно то же самое, что условный Core i9, только чуть медленнее — значит просто-напросто манипулировать. Причем манипулировать даже не фактами, а эмоциями потенциального покупателя.
Поэтому, выбирая центральный процессор, четко усвойте: вы покупаете конкретное устройство, имеющее конкретные характеристики. А именно: производительность в важных для вас задачах, совокупная стоимость платформы, возможности дальнейшего апгрейда, энергопотребление, требования к системе охлаждения и т.д. Эти характеристики могут вам подойти или показаться несоответствующими стоимости процессора, но это будут реальные параметры, относящиеся именно к обсуждаемому продукту.
А вот такие мифические критерии, как «репутация бренда», «сырость архитектуры», «билет в клуб владельцев» и прочие «проценты раскрытия» — прямой и короткий путь к покупке наихудшего из возможных вариантов.
Часто задаваемые вопросы
Q: У меня материнская плата под название_сокета >. Могу ли я поставить в нее процессор под название_сокета_плюс_одна_цифра >?
Сокет материнской платы — ни что иное как ответная часть для контактных выводов процессора. Проще говоря — для ножек или площадок, которые каждый может увидеть, перевернув процессор крышкой (или кристаллом) вниз.
Для каждой платформы расположение этих контактов уникально, причем зачастую отличаются не только количество и расположение контактов, но и габариты сокета. В результате процессор чисто физически нельзя установить в чуждый ему разъем, а если вам это и удастся — скорее всего, процессор и материнская плата в результате получат необратимые повреждения. Как, собственно, и ваш кошелек — ведь придется покупать еще два новых девайса на замену.
Более того, иногда даже конструктивно схожие платформы несовместимы между собой. К примеру, процессор под сокет LGA 1151 не будет работать в материнской плате с сокетом LGA 1151_v2, а процессор под сокет LGA 1151_v2, соответственно, не заведется в плате под LGA 1151.
Если у вас уже есть материнская плата, просто ознакомьтесь со списком совместимых с ней процессоров, который всегда есть на сайте производителя материнки. Дело буквально пары минут, зато сэкономите вы гораздо больше. Причем и времени, и денег.
Q: А вот я купил процессор под название_сокета > и материнскую плату с тем же название_сокета >, а система все равно не запускается, черный экран и только вентиляторы крутятся. Что это значит?
A: Два возможных варианта.
Возможна такая ситуация абсолютно на всех платформах — вспомним хотя бы процессоры Intel Kaby Lake (серия 7000) и материнские платы на чипсетах серии 100… ну, или Coffee Lake Refresh (серия 9000) и материнские платы на чипсетах серии 300, выпущенные раньше самих ЦПУ. В любом случае, это не является недостатком самой платформы. Если плата была выпущена раньше, чем процессор, она попросту не может знать, как с ним работать. Здесь можно провести аналогию с автомобилями: если какая-то опция начала устанавливаться на заводе только в 2019 году, то на машине, выпущенной в 2017 году она никак не может оказаться — если, конечно, вы ее не докупите и не установите.
Если вы только собираетесь покупать материнскую плату, и сомневаетесь, поддерживает ли она процессор — проверьте номер заводской прошивки. Сделать это совершенно не сложно, и покупать плату и нести ее домой для этого не нужно:
Если же ЦПУ покупается под апгрейд, и у вас уже есть работающая система с другим процессором — обновиться можно самостоятельно, причем для этого есть штатный инструментарий.
В конце концов, для обновления BIOS материнской платы можно обратиться и в сервис-центр. Услуга прошивки есть в СЦ компании ДНС, но никто не запретит обратиться в любую другую фирму, занимающуюся ремонтом и обслуживанием ПК.
Q: А вот у меня блок питания мощностью в 450 ватт, хочу заменить процессор на « название модели ». Хватит ли моего блока, или его тоже нужно будет поменять?
A: Зависит от реальных характеристик вашего БП и мощности, потребляемой всей системой вкупе.
Предположим, что ваш блок питания качественный, современный и реально выдает заявленную мощность, причем большую ее часть — по линии в 12 вольт, да еще и не просаживает напряжение при пиковой нагрузке. Тогда к нему нет претензий, и вам остается узнать, насколько мощность БП соответствует аппетитам системы.
Кроме процессора, электричество под 3D-нагрузкой активно потребляет видеокарта, поэтому стоит изучить ее реальные характеристики. Потребление материнской платы, оперативной памяти, жестких дисков и плат расширения не столь существенно, но, в зависимости от количества обозначенных выше устройств, добавьте к потребляемой видеокартой мощности еще ватт 50–70.
Как определить потребление процессора и видеокарты под нагрузкой? Проще всего воспользоваться готовыми тестами от авторитетных источников, использующих адекватные методики измерений.
Менее точный способ — замерить самостоятельно. Если вы уверены в качестве и техническом состоянии своих комплектующих — запустите утилиту для мониторинга параметров системы HWinfo64, а затем измерьте энергопотребление процессора и видеокарты под стресс-тестами. FurMark или MSI Kombustor для видеокарты, OCCT Linpack или Prime95 для процессора. Затем сложите полученные данные, добавьте означенные выше 50–70 ватт на остальные комплектующие, и узнаете, сколько потребляет ваша система в пиковой нагрузке.
Соответственно, если эта цифра существенно меньше заявленной мощности вашего БП — можно апгрейдиться. Если же нынешняя конфигурация потребляет практически максимальную для блока мощность — БП определенно стоит заменить.
Однако помните, что любые стресс-тесты вы проводите исключительно на свой страх и риск. Если ваша система имеет проблемы с охлаждением, либо БП переживает не лучшие времена и не может обеспечить качественное питание, возможен выход из строя одного или нескольких комплектующих. Впрочем, в таком случае и замена процессора может привести к аналогичному результату…
Q: А вот кулера на 95 ватт хватит для охлаждения « название_процессора »? Менять еще и кулер возможности нет…
A: А вот это зависит уже от реального энергопотребления процессора.
В характеристиках ЦПУ всегда приводится такое значение, как TDP, расшифровывается она как Thermal Design Power, и представляет собой требования к тепловой мощности, которую способен рассеивать кулер. Однако эти требования указываются зачастую только для штатного режима работы ЦПУ. Причем под штатным режимом здесь понимается базовая частота процессора, а не та частота, на которой он реально работает благодаря штатному динамическому разгону. К примеру, тот же Core i9-9900K при заявленном TDP в 95 ватт действительно может потреблять не более 95 ватт в пиковой нагрузке, но, лишь в том случае, если он работает на базовых 3600 МГц при соответствующем напряжении. В реальности, за счет технологии MCE, процессор работает на 4700 МГц даже при полной загрузке всех его ядер. И энергопотребление, а значит, и тепловыделение, в таком случае, оказываются «несколько» больше:
Однако, верно и обратное. Если процессор имеет программный лимит на 90 ватт потребляемой мощности, то выделять 130, 150, 200 или 250 ватт тепловой энергии он не может чисто физически: будь это так, мы говорили бы о революции в области бытовых нагревателей, выдающих мощность больше потребляемой. А уж там и до межпланетных перелетов было бы недалеко.
Но шутки в сторону: в реальности 90–100 ватт энергопотребления означают лишь то, что охладить процессор будет гораздо проще, чем об этом принято думать:
В отношении кулеров, кстати, ориентироваться на TDP тоже стоит с большой оглядкой. Каждый производитель использует разную методику замеров, в результате чего кулеры с TDP, заявленным на отметке в 130 ватт, могут иметь совершенно разную конструкцию и совершенно разную эффективность. Но, тем не менее, если для кулера заявлено 130 ватт рассеиваемой мощности, то, скорее всего, с процессором с энергопотреблением в 70–80 ватт он справится.
Q: А может, просто взять процессор в коробке? Там и кулер комплектный будет ведь!
A: На самом деле — далеко не факт, что он там будет.
К примеру, процессоры Intel с разблокированным множителем поставляются без штатного кулера, то же касается и нескольких моделей AMD Ryzen серии 1000, и процессоров Ryzen 3000 с суффиксом XT. Производитель в данном случае полагает, что продукт заведомо будет использоваться с более качественной и эффективной системой охлаждения, нежели «боксовый» кулер.
Брать ли процессор в BOX или OEM-комплектации — личный выбор каждого. Но не стоит выбирать BOX только ради кулера: далеко не всегда он будет отличаться высокой эффективностью при комфортном уровне шума. А чаще всего на разницу в цене между BOX и OEM можно приобрести кулер намного лучше штатного.
Q: Нужен ли мне разгон процессора?
A: Личное дело каждого.
Если вы приобретаете процессор на длительный срок — лучше рассматривать вариант с разблокированным множителем. Разгон вам может не требоваться в момент покупки, но потребуется в будущем, когда вырастут требования игр и рабочего софта. Запас, как говорится, карман не тянет. Хотя и цена процессора с разблокированным множителем и материнской платы с возможностью разгона может оказаться намного выше платформы без разгона.
Впрочем, это справедливо только для десктопной платформы Intel, где есть разделение на разгоняемые и неразгоняемые комплектующие.
На десктопной платформе AMD socket AM4 разгон доступен для всех моделей ЦПУ и APU. Отсутствуют возможности разгона процессора только у плат на младших чипсетах A320 и A520. Впрочем, эти платы предназначены для офисного сегмента, так что тут все логично.
Q: Я вот выбрал процессор, но посмотрел характеристики — а там написано, что у процессора есть встроенная графика. Но у меня уже есть видеокарта — зачем переплачивать за то, чем я не буду пользоваться?
A: А переплачивать ли?
Как ни парадоксально, но даже если в вашем компьютере есть мощная дискретная видеокарта, встроенная графика — это полезный бонус, который в некоторых ситуациях может наоборот, сэкономить вам деньги, время и нервы. Любая видеокарта, какой бы надежной она ни была, со временем может выйти из строя и отправиться в сервис-центр. Любая видеокарта со временем может потребовать апгрейда, и вовсе не факт, что вы продадите старую и купите новую в один и тот же день.
Да можно придумать и другие причины, когда вы временно остаетесь без видеокарты. Что в этом случае придется делать, если встроенного видео у вас нет? Правильно, сидеть без компьютера или идти на местную барахолку и покупать дешевую б/у карту на время.
А что нужно сделать, если у вас есть встроенная графика? Подключить монитор к ней и пользоваться дальше. В тяжелые игры, конечно, не поиграешь, но можно серфить в Интернете и играть в любимые хиты прошлых лет. Без трат времени на поездки и походы по рынкам.
Q: Как раз по поводу видеокарт. Вот я хочу купить название_видеокарты >, какой процессор к ней подойдет?
A: У процессора нет характеристик, которые запрещали бы ему работать с теми или иными видеокартами. Как правило, если видеокарта использует интерфейс PCI-e и поддерживается в установленной на компьютере ОС — это все, что от нее требуется.
Иначе говоря, если вы собираете ПК на новой платформе, но денег не хватает на то, чтобы одновременно обновить и видеокарту — можно использовать ГПУ, оставшийся от предыдущей системы, или бюджетное решение старого поколения, купленное на вторичном рынке.
Но и обратное тоже верно: в компьютеры, собранные на не самых новых платформах, можно устанавливать видеокарты актуальных поколений, если вам не хватает производительности графической части, или бюджет позволяет заменить только видеокарту.
Встроенный бенчмарк игры Assassin’s Creed: Odyssey утверждает, что тестовая система объединяет процессор Intel Core i7-4930K, выпущенный в 2013 году для уже давно устаревшей платформы LGA 2011, и видеокарту GeForce RTX 2080 Ti, выпущенную в конце 2018 года, и актуальную до сих пор.
Есть и более характерные примеры, причем из того же бенчмарка:
Процессор AMD FX-8300, представленный в конце 2012 года под уже тогда довольно возрастную, и отнюдь не передовую платформу socket AM3+, работает в паре с GeForce GTX 1060, представленной в июле 2016 года и актуальной вплоть до выхода семейства Turing в 2019 году.
Безусловно, бывают случаи индивидуальной несовместимости, когда видеокарта напрочь отказывается инициализироваться и работать, хотя сама она гарантированно исправна. Но, во-первых, в современных реалиях это большая редкость, а во-вторых, вопросы в данном случае следует адресовать материнской плате, а не процессору.
Q: Но вот говорят, что название_процессора > мою карту только на 73% раскроет, а если поставить название_другого_процессора >, то будет не меньше 92%?
A: Явление и персонажи, известные нам как «раскрывашки», возникло как раз с тем и затем, чтобы стимулировать продажи процессоров новых поколений. И сводится оно в общих чертах к тому, что более новый и более дорогой процессор более старшей модели всегда и везде обеспечит большую производительность. Но вот чего вам раскрывашки никогда не скажут, так это того, что зависимость от процессора никогда не бывает линейной.
Total War: Three Kingdoms. Игра, довольно требовательная к ресурсам центрального процессора и к тому же использующая преимущества многопотока. Слева — Intel Core i9-9900KF. Справа — Intel Core i7-9700KF. Оба процессора разогнаны до 5000 МГц, частота кольцевой шины поднята до 4700 МГц, видеокарта RTX 2080 Ti работает в штатном для нее режиме, все прочие условия идентичны. При этом, в случае с Core i7-9700KF фпс в бенчмарке оказывается… выше! Как же так? Ведь по всем утверждениям интернет-знатоков, старшая модель просто обязана «раскрыть» видеокарту в более полной мере, а по факту — с младшим ЦПУ производительность выше! Да, это исключительно частный случай, связанный с тем, что технология Hyper Threading, отличающая Core i9 от Core i7, в играх далеко не всегда работает корректно, но важен в данном случае сам факт.
Встроенный бенчмарк игры WarThunder, являющейся уже диаметрально противоположным примером, так как движок игры по сей день активно использует не более 2-х ядер. Слева снова представлен Core i9-9900KF, но на сей раз — в номинальном для него режиме. 4700 МГц по всем ядрам за счет технологии MCE, 4300 МГц на кольцевой шине. Справа — уже Core i5-9600KF, разогнанный ровно до тех же параметров. Все прочие характеристики системы идентичны, в качестве видеокарты опять используется RTX 2080 Ti. Разница в фпс, опять же, в комментариях не нуждается. И снова — дело не в «раскрытии», а в том, что в данном случае Core i9 в принципе не может иметь никаких преимуществ над Core i5 — игра попросту не использует «лишние» ядра. А технология Hyper Threading здесь опять ведет себя не лучшим образом, что и позволяет Core i5-9600KF выдавать немного больше кадров в секунду.
Можно рассмотреть и обратный пример:
Те же условия, те же Core i9 и Core i5, но Assassin’s Creed: Odyssey, использующий преимущества многопотока. Производительность с Core i5-9600KF здесь уже ниже, но — ниже на 10–15 кадров, то есть ни о каком превращении RTX 2080 Ti в RTX 2060 речи тут не идет, да и идти не может. Почему не может? Да потому, что вот это — RTX 2060:
А разница между 100–110 и 75 кадрами в секунду на одинаковых настройках графики уже сама по себе выглядит вполне красноречиво. И, кстати, процессор в данном случае тоже более мощный, чем Core i5 9600KF, однако он не превращает RTX 2060 в RTX 2080 Ti.
Почему же так происходит?
Дело в том, что линейная зависимость между ценой процессора и производительностью возможна только в том случае, если поставленная перед процессором задача задействует все его вычислительные ресурсы. Так, при рендеринге 3D-модели или конвертации видеоролика Core i9-9900KF всегда будет быстрее Core i5-9600KF. Но уже при пакетной обработке фото в редакторе, не способном задействовать более 4-х процессорных ядер, разница между этими процессорами будет определяться уже исключительно тактовыми частотами. Просто потому, что преимущества «многоядерной» старшей модели здесь не используются, и никак не могут повлиять на производительность. И современные игры на деле оказываются гораздо ближе именно ко второму примеру.
Снова Total War: Three Kingdoms. Все та же RTX 2080 Ti, частота оперативной памяти фиксирована на 3800 МГц, процессоры разогнаны до 4400 МГц. Слева — Ryzen 9 3900X. В центре — Ryzen 7 3700X, справа — Ryzen 5 3600X.
Как можно видеть, несмотря на явное расхождение в количестве ядер, производительность в игре на равной частоте практически идентична. Следовательно, разговоры о том, что для «раскрытия» RTX 2080 Ti нужна обязательно старшая модель процессора, — как минимум стоит поставить под сомнение.
У каждой игры свои требования к характеристикам ЦПУ. Так, где-то используется максимально доступное количество ядер — и, например, старые процессоры под ту же платформу LGA 2011 могут не только эффективно справляться с игрой, выпущенной на 7 лет позже них самих, но и обеспечить более комфортный геймплей, чем намного более современные четырехъядерные модели под LGA 1151_v2 и LGA 1200. В других играх — наоборот, количество ядер не имеет значения, важна только тактовая частота и производительность в однопоточной нагрузке. Какие-то игры в силу особенностей движка в принципе мало зависимы от процессора и более требовательны к видеокарте. Да и сама «зависимость» от характеристик процессора в одной и той же игре может меняться со сменой разрешения экрана и настроек графики: чем они выше, тем выше влияние видеокарты, и тем меньше заметна разница между более и менее быстрыми ЦПУ.
Кроме того, все сказанное выше опирается на пример GeForce RTX 2080 Ti, самой быстрой одночиповой видеокарты в предыдущем поколении. С более медленными видеокартами разницы между процессорами вы рискуете не увидеть вовсе: общий уровень производительности будет ниже, а следовательно и дельта между теми же Core i9 и Core i5 будет составлять отнюдь не 10 кадров.
Критерии и варианты выбора
Для офисных ПК подойдут двухъядерные процессоры AMD Athlon, Intel Celeron и Pentium.
Для более серьезных задач — четырехъядерные и/или восьмипоточные Core i3, либо на APU семейств Ryzen 3 и Ryzen 5.
Для домашнего мультимедийного ПК — представители линеек Ryzen 3 и Ryzen 5.
Под будущий апгрейд — четырехъядерные Ryzen 3 и Core i3 без встроенной графики.
Для бюджетного игрового ПК — шестиядерные процессоры AMD Ryzen 5 без поддержки виртуальных потоков и аналогичные модели Core i5.
Оптимальный выбор для домашнего игрового ПК — шестиядерные 12-поточные процессоры AMD Ryzen 5 и Intel Core i5. Производительности вполне хватает, чтобы играть в любые современные игры, вести трансляции и даже работать на дому.
Для топовых игровых ПК или рабочих станций подойдут процессоры AMD Ryzen 7 и Intel Core i7. Относясь к мейнстримовым платформам, эти процессоры все еще относительно доступны и не требуют дорогостоящих материнских плат, блоков питания и кулеров.
Для рабочих станций начального уровня — процессоры из линеек Ryzen 9 и Core i9. Их преимуществом в данном случае будет сравнительно низкая цена платформы.
Для высокопроизводительных рабочих станций предназначены AMD Ryzen Threadripper под сокеты TR4 и TR4X, и топовые модели процессоров Intel под сокет LGA 2066, имеющие по 10, 12 и более физических ядер.
Помимо этого, процессоры предлагают четырехканальный контроллер памяти, что важно для ряда профессиональных задач, и гораздо большее количество линий PCI-express, позволяющих подключать много периферии без потерь в скорости обмена данными.
Собственная платформа. Часть 0.1 Теория. Немного о процессорах
Здравствуй, мир! Сегодня у нас серия статьей для людей со средними знаниями о работе процессора в которой мы будем разбираться с процессорными архитектурами (у меня спелл чекер ругается на слово Архитектурами/Архитектур, надеюсь я пишу слово правильно), создавать собственную архитектуру процессора и многое другое.
Принимаются любые замечания!
Немного про архитектуру процессора
Исторически сложилось, что существуют много процессоров и много архитектур. Но многие архитектуры имеют схожести. Специально для этого появились «Группы» архитектур типа 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
OISC (URISC)?
One Instruction Set Computer — Архитектура с единственной инструкцией. Например SUBLEQ. Такие архитектуры часто имеют вид: Сделать действие и в зависимости от результата сделать прыжок или продолжить исполнение. Зачастую ее реализация достаточно простая, производительность маленькая, при этом снова ограничение шиной данных.
Яркие примеры: BitBitJump, ByteByteJump, SUBLEQ тысячи их!
CISC — Complex Instruction Set Computer — ее особенность в увеличенных количествах действий за инструкцию. Таким образом можно было теоретически увеличить производительность программ за счет увеличения сложности компилятора. Но по факту у CISC плохо были реализованы некоторые инструкции т.к. они редко использовались, и повышение производительности не было достигнуто. Особенностью этой группы является еще ОГРОМНАЯ Разница между архитектурами. И несмотря на названия были архитектуры с маленьким количеством инструкций.
Яркие примеры: x86, M68K
Адресация памяти
Архитектура фон Неймана
Особенностью таких архитектур была общая шина данных и инструкций. Большинство современных архитектур это программный фон Нейман, однако никто не запрещает делать аппаратный Гарвард. У данной архитектуры большим недостатком является большое зависимости производительности процессора от шины. (Что ограничивает общую производительность процессора).
Архитектура гарварда
Особенность этой архитектуры является отдельная шина данных и инструкций. Дает большую производительность чем фон Нейман за счет возможности за один такт использовать обе шины (читать из шины инструкций и одновременно записывать в шинну данных), но осложняет архитектуру и имеет некоторые ограничения. В основном используется в микроконтроллерах.
Особенности процессоров
Конвейеры
Что такое конвейеры? Если сказать очень глупым языком это несколько параллельных действий за один такт. Это очень грубо, но при этом отображает суть. Конвейеры за счет усложнения архитектуры позволяют поднять производительность. Например конвейер позволяет прочитать инструкцию, исполнить предыдущую и записать в шину данных одновременно.
На картинке более понятно, не правда?
IF — получение инструкции,
ID — расшифровка инструкции,
EX — выполнение,
MEM — доступ к памяти,
WB — запись в регистр.
Вроде все просто? А вот и нет! Проблема в том что например прыжок (jmp/branch/etc) заставляют конвейер начать исполнение (получение след. инструкции) заново таким образом вызывая задержку в 2-4 такта перед исполнение следующей инструкции.
Расширение существующих архитектур
Достаточно популярной техникой является добавление в уже существующую архитектуру больше инструкций через расширения. Ярким примером является SSE под x86. Этим же грешит ARM и MIPS и практически все. Почему? Потому что нельзя создать унивирсальную архитектуру.
Другим вариантом является использование других архитектур для уменьшения размера инструкций.
Яркий пример: ARM со своим Thumb, MIPS с MIPS16.
Техники применяемые в GPU
В видеокартах часто встречается много ядер и из-за этой особенности появилась потребность в дополнительных решениях. Если конвейеры можно встретить даже в микроконтроллерах то решения используемых в GPU встречаются редко. Например Masked Execution (Встречается в инструкциях ARM, но не в Thumb-I/II). Еще есть другие особенность: это уклон в сторону Floating Number (Числа с плавающей запятой), Уменьшение производительности в противовес большего количества ядер и т.д.
Masked Execution
Данный режим отличается от классических тем, что инструкции исполняются последовательно без использования прыжков. В инструкции хранится некоторое количество информации о том при каких условия эта инструкция будет исполнена и если условие не соблюдено то инструкция пропускается.
Ответ прост! Что бы не нагружать шину инструкций. Например в видеокартах можно загрузить тысячи ядер одной инструкцией. А если бы использовалась система прыжков то пришлось бы для каждого ядра ждать инструкцию из медленной памяти. Кеш частично решает проблему, но все еще не решает проблему полностью.
Прочее
Здесь мы будем описывать несколько техник используемых в центральный процессорах и микроконтроллерах.
Прерывания
Прерывания это техника при которой исполняемый в данный момент код приостанавливается для выполнения какой-то другой задачи при каких-то условиях. Например при доступе в несуществующий участок памяти вызывается HardFault или MemoryFault прерывания или исключения. Или например если таймер отсчитал до нуля. Это позволяет не бездействовать пока нужно ждать какое-то событие.
Какие недостатки? Вызов прерывания это несколько тактов простоя и несколько при возврате из прерывания. Так же несколько инструкций в начале кода будет занято инструкциями для Таблицы прерываний.
Exception (исключения)
Но кроме прерываний еще существуют исключений которые возникают например при деления на ноль. Зачастую его совмещают с прерываниями и системными вызовами, как например в MIPS. Исключения не всегда присутствуют в процессоре например как в AVR или младших PIC
Системные вызовы
Системные вызовы используется в Операционных системах для того, чтобы программы могли общаться с операционной системой например просить ОС прочитать файл. Очень похоже на прерывания. Аналогично исключениям не всегда присутствуют в процессоре
Контроллеры доступа в память и прочие методы сдерживания программ
Здесь описываются методы запрета доступа приложений к аппаратуре напрямую.
Привилегированный режим
Это режим в котором стартует процессор. В таком режиме программа или ОС имеют полный доступ к памяти в обход MMU/MPU. Все программы запускаются в непривилегированном режиме во избежания прямого доступа к аппаратным подсистемам программ для этого не предназначенных. Например вредоносным программам. В Windows ее часто называют Ring-0, а в *nix — системным. Не стоит путать Привелигированный пользователь и Привилегированный режим ибо в руте вы все еще не можете иметь прямой доступ к аппаратуре (можно загрузить системный модуль который позволит это сделать, но об этом чуть позже 🙂
MPU и MMU
MPU и MMU используется в современных системах чтобы изолировать несколько приложений. НО если MMU позволяет «передвинуть» память то MPU позволяет только блокировать доступ к памяти/запуск кода в памяти.
PIC (PIE)
Что такое PIE? (PIC не использую для избежания путаницы с МК PIC). PIE это техника благодаря которой компилятор генерирует код который будет работать в любом месте в памяти. Эта техника в совмещении с MPU позволяет компилировать высокие языки программирования которые будут работать и с MPU.
Популярная техника SIMD используется для того, что бы за один такт выполнять несколько действий над несколькими регистрами. Иногда бывают в качестве дополнений к основной архитектуре, например, как в MIPS, ARM со своими NEON/VFP/etc, x86 со своим SSE2.
Reposition for Optimization
Это техника Используется для оптимизации кода, генерируемого компилятором, с помощью пересортировки инструкций, увеличивая производительность процессора. Это позволяет использовать конвейер на полную.
Status register
Что такое регистр статуса? Это регистр который хранит состояние процессора. Например находится ли процессор в привилегированном режиме, чем закончилась операция последнего сравнения.
Используется в связке с Masked Execution. Некоторые разработчики специально исключают регистр статуса ибо он может являться узким местом как поступили в MIPS.
В MIPS нет отдельной инструкции загрузки константы в память, но есть инструкция addi и ori которая позволяет в связке с нулевым регистром ($0) эмулировать работу загрузки константы в регистр. В других архитектурах она присутствует. Я затронул эту тему, потому что она пригодиться нам в статьях с практикой.
Rd, Rs vs Rd, rs, rt
Идут множество споров насчет того сколько должно быть операндов в арифметических инструкциях. Например в MIPS используется вариант с 3-мя регистрами. 2 операнда, 1 регистр записи. С другой стороны, использование двух операндов позволяет сократить код за счет уменьшения размера инструкции. Пример совмещения является MIPS16 в MIPS и Thumb-I в ARM. В плане производительности они практически идентичны (Если исключать размер инструкции как фактор).
Endianness
Порядок байт. Возможно вам знакомы Выражения Big-Endian и Little-Endian. Они описывают порядок байт в инструкциях/в регистрах/в памяти/etc. Здесь думаю все просто :). Есть процессоры которые совмещают режимы, как MIPS, или которые используют одну систему команд, но имеют разный порядок байт, например ARM.
Битность процессора
Итак, что такое битность процессора? Многие считают, что это битность шины данных, но это не так. Почему? В ранние переоды микроконтроллеров и микропроцессоров шина могла быть, например, 4-х битной, но передавала пакетами по 8 бит. Для программы казалось, что это 8-и битный режим, но это была иллюзия, как и сейчас. Например, в ARM SoC-ах часто применяют 128-и битную шину данных или инструкций.
Сопроцессоры
Что такое сопроцессоры? Сопроцессоры являются элементами процессора или внешней микросхемой. Они позволяют исполнять инструкции, которые слишком громоздки для основной части процессора. Как яркий пример, сопроцессоры в MIPS для деления и умножения. Или например 387 для 80386, который добавлял поддержку чисел с плавающей запятой. А в MIPS сопроцессоров было много и они выполняли свои роли: контролировали прерывания, исключения и системные вызовы. Часто сопроцессоры имеют собственные инструкции и на системах, где этих инструкций нет, (пример ARM) эмулируют ее через Trap-ы (ловушки?). Несмотря на костыльность и маленькую производительность, они часто являются единственным выбором в микроконтроллерах.
Атомарность операций
Атомартность операций обеспечивает потоко-независимое исполнение за счет инструкций, которые выполняют несколько действий за один псевдотакт.
Вариант другого решения атомарность переферии. Например для установки ножки в STM32 в высокое и низкое состояние используется разные регистры, что позволяет иметь атомарность на уровне переферии.
Вы, навярняка, слышали о L1, L2, L3 и регистрах. Если коротко, процессор анализирует часть кода, чтобы предугадать прыжки и доступ в память и зараннее просит кеш получить эти данные из памяти. Кеш зачастую бывает прозрачным для программы, но бывают и исключения из этого правила. Например, в программных ядрах в ПЛИС используется програмный кеш.
И вы кончено слышали о такой вещи, как Cache Miss или промах по кешу. Это операция которая не была предусмотрена процессорам или процессор не успел закешировать эту часть памяти. Что достаточно часто является проблемой замедления доступа к памяти. Промах проходит незаметно для программы, но не останутся незаметными просадки в производительности.Так же переключения контекстов например при прерываниях тоже заставляет страдать кеш ибо небольшой код сбивает конвейер и кеш для собственных нужд.
Shadow Registers
В современных процессорах часто используется техника теневых регистров. Они позволяют переключаться между прерываниями и пользовательским кодом практически без задержек связанных с сохранением регистров.
Stack
Спросите тогда что такое куча (Heap)? Куча это память размером намного больше чем стек (Стек обычно
1MB). В хипе храниться все глобальное. Например все указатели полученные с помощю Malloc указывают на часть куча. А указатели хранятся в стеке или в регистрах. С помощью инструкций загрузки данных относительно регистра можно ускорить работу стека и других доступов к памяти по типу стека, поскольку не нужно постоянно использовать операции PUSH/POP, INC/DEC или ADDI, SUBI (добавить константу), чтобы получить данные глубже по стеку, а можно просто использовать доступ относительно стека с отрицательным смещением.
Регистры
Не буду описывать регистры слишком подробно. Это мы затронем в практической статье.
В x86 регистров достаточно мало. В MIPS используется увеличенное количество регистров, а именно 31 ($0 имеет значение всегда равное нулю). В процессоре университета Беркли использовались регистровые окна, которые жестки ограничивали вложенность функций, при этом имея лучшую производительность. В других же, таких как AVR, ограничили использование регистров. Для примера: три 16-битных можно трактовать как шесть восьмибитных, где первые 16ть недоступны при некоторых операциях. Я считаю, что лучший метод был выбран MIPS-ом. Это мое сугубо личное мнение.
Выравнивание
Что такое выравнивание? Оставлю-ка я этот вопрос вам 🙂
Конец
Это конец первой главы нулевой части. Вся серия будет крутиться вокруг темы создания собственного процессора. Собственной операционной системы. Собственного ассемблера. Собственного компилятора и много чего другого.