Разное

Х86 или х64 разница как определить: В чём разница между x86 и x64 и что это значит?

Содержание

как узнать разрядность системы и процессора, какая лучше и в чем между ними разница, что такое х86 и как установить нужную Windows 7

Автор admin На чтение 8 мин. Опубликовано

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

В чём разница между 32- и 64-битной разрядностью

Разрядность системы, также иногда называемая «битностью», вовсе не обязательно должна соответствовать разрядности процессора и на современных компьютерах имеет всего два основных вида: 32 и 64.

Разница между архитектурой и разрядностью

Несмотря на внешнюю схожесть значений 86 и 32, разница между ними большая.

86 — это архитектура процессора, которая правильно пишется как x86 и определяет набор микрокоманд процессора. Число 32 — это разрядность процессора, которую правильно писать как «32-битная». Она определяет ширину регистра процессора.

Как правило, архитектура x86 ориентирована на 32-битную разрядность, а архитектура x64 — на 64-битную. Однако это утверждение не всегда верно. Например, существуют 64-битные процессоры, основанные архитектуре x86 и 32-битные, основанные на третьей, совершенно иной архитектуре. Но всё же эти случаи являются большой редкостью и для себя можно запомнить, что x86 соответствует 32 бит, а x64 ориентирована на 64 бит.

Разница между x86 и x64

Как уже было сказано выше, архитектура процессора в основном определяет его разрядность, а разрядность определяет ширину регистра. От ширины регистра зависит количество данных, подлежащих единовременной обработке, и объём оперативной памяти, которую компьютер способен использовать. 32-битный регистр способен одновременно взаимодействовать с 232 адресами (покрывает 232 бита информационного потока, что равно 4 гигабайтам), а 64-битный — с 264 (покрывает предыдущий информационный поток в квадрате, который невозможно реализовать даже на самых мощных компьютерах).

Чтобы было понятней: ширина регистра — как пропускная способность перекрёстка, оперативная память — как количество машин, а процессор — регулировщик. Процессор с архитектурой x86 способен без проблем контролировать перекрёсток с пропускной способностью в 4 гигабайта — столько машин по нему можно запустить. Процессор с архитектурой x64 теоретически способен контролировать запредельно большой перекрёсток. На компьютерном же языке это значит, что такой процессор может обеспечивать корректную работу компьютеров не только своего, но и будущего поколения.

При установке Windows есть возможность выбора между x86 и x64

Таким образом, установка свыше 4 гигабайт оперативной памяти на компьютер с процессором x86 не приведёт к её практическому расширению.

Несмотря на крайне большую и невостребованную ширину регистра для 64-разрядных процессоров, создавать промежуточный этап между 32-битной и 64-битной разрядностью процессора практически бессмысленно. В общем-то между архитектурами x86 и x64 нет особой разницы в сложности реализации. Просто при разработке 32-битного реестра, до сих пор используемого большинством программ, объёмы оперативной памяти сверх 4 гигабайт казались невозможными, какими сейчас кажутся 264.

Как выбрать разрядность системы

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

Все процессоры с архитектурой x64 поддерживают 32-разрядную операционную систему, как и 64-разрядную, но процессоры с архитектурой x86 поддерживают только 32-разрядные системы.

В случае если у вас процессор с архитектурой x86, то выбора вы лишены. Если же у вас архитектура x64, стоит ставить 64-разрядную систему, даже если у вас нет 4 гигабайт оперативной памяти. Причина такого выбора проста: большинство новых программ и расширений выпускается исключительно под 64-битные системы, а 32-зарядные невольно вытесняются с рынка.

Фактически из существенных плюсов у 64-разрядных систем есть только два: поддержка сверх 4 гигабайт оперативной памяти и поддержка 64-разрядного операционного обеспечения. Все 32-разрядные программы также поддерживаются без каких-либо трудностей.

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

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

Видео: различия между 32-битной и 64-битной системами Windows

Как узнать разрядность системы

Многие пользователи даже не подозревают, что уже давно пользуются 64-разрядной системой вместо 32-х. Проверяется это очень просто.

Проверка через «Свойства» компьютера

  1. Нажмите правой кнопкой мыши на иконке вашего компьютера, например, через меню «Пуск», и выберите «Свойства».Нажмите правой кнопкой мыши на иконке вашего компьютера и выберите «Свойства»
  2. В открывшемся окне вы увидите разрядность своей операционной системы.В окне сведений о компьютере можно увидеть разрядность системы

Проверка через корневой каталог

  1. Зайдите в корневой каталог. Для этого нажмите на «Компьютер» левой кнопкой мыши.Зайдите в корневой каталог через «Компьютер»
  2. Откройте диск с системой. По умолчанию это «Локальный диск (С:)».В окне «Компьютер» откройте диск с системой
  3. Всего одна папка Program Files — значит, система 32-разрядная; если же есть ещё и Program Files (x86), то 64-разрядная.По количеству папок Program Fiels можно определить разрядность системы

Проверка через командную строку

  1. Откройте меню «Пуск», введите cmd в строке поиска и откройте найденную программу.Введите cmd в строке поиска и откройте найденную программу
  2. Введите команду systeminfo и нажмите Enter.Введите systeminfo в командную строку и нажмите Enter
  3. Пролистайте вверх и найдите ваш тип системы.В командной строке пролистайте вверх и найдите свой тип системы
Видео: как узнать разрядность системы Windows

Как узнать разрядность процессора

Перед тем как ставить 64-разрядную версию, стоит убедиться, что её установка возможна, и узнать архитектуру вашего процессора.

Разрядность процессора в командной строке

  1. Откройте меню «Пуск», введите cmd в строке поиска и откройте найденную программу.Введите cmd в строке поиска и откройте командную строку
  2. Введите SET PRO и нажмите Enter.В командную строку введите SET PRO и нажмите Enter
  3. Введите PROCESSOR_ARCHTECTURE, чтобы узнать архитектуру вашего процессора.С помощью команды PROCESSOR_ARCHTECTURE можно узнать архитектуру своего процессора

Узнать разрядность через BIOS

  1. В самом начале включения компьютера нажмите кнопку входа в BIOS. Чаще всего это Del или F8: о том, какая кнопка нужна, можно узнать из информации во время загрузки. При запуске системы можно увидеть кнопку, которую нужно нажать для входа в BIOS
  2. Когда откроется BIOS, ничего нажимать не надо. В строке Processor Type можно увидеть архитектуру процессора.

    В BIOS можно посмотреть архитектуру своего процессора

Узнать разрядность через интернет

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

Сайт bit-processor может автоматически определить разрядность вашего процессора

Видео: как узнать разрядность процессора

Как установить 64-разрядную систему

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

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

Выбор разрядности в самом начале установки значения не имеет

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

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

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

Выбор архитектуры системы в конце установки определит разрядность устанавливаемой системы

Вот этот выбор и решит, какая версия будет установлена. Несмотря на то, что разница представлена в выборе между архитектурой, на самом деле выбирается разрядность системы. Выбираете x86 — устанавливается 32-разрядная система, выбираете x64 — устанавливается 64-разрядная.

Если выбрать версию вам не удаётся или выбор просто отсутствует, возможны только две причины: вы скачали образ установщика только с одной версией разрядности или у вас архитектура x86 и компьютер не поддерживает 64-разрядные системы.

Видео: как установить 64-битную систему на Windows 7

В последнее время 64-разрядные системы всё сильнее вытесняют своих конкурентов, а процессоры с архитектурой x86 преходят на мобильные устройства. Это очередной шаг навстречу к прогрессу и не стоит ему сопротивляться.

Оцените статью: Поделитесь с друзьями!

Как определить разрядность Вашей операционной системы, x32 или x64?

Теория – 32 против 64

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

Знать, 32 (она же называется еще х86) или 64-битная ОС Windows установлена нужно только в случае инсталляции программ, предлагающих подобный выбор.

Как определить разрядность операционной системы

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

В Windows XP, Vista, 7 и 8 информация о разрядности находится в одном и том же месте. Делаем клик правой кнопкой мыши на значке «Мой компьютер», выбираем «Свойства». В открывшемся окошке есть вкладка «Общие» или «Система», обычно она будет показана по умолчанию. Ищем пункт «Тип системы» и смотрим нужные данные. То же самое можно увидеть, найдя в панели управления значок «Система» – Пуск, Панель управления, Система.

Строчка с информацией о разрядности будет выглядеть примерно так — «Тип системы: 64-битная операционная система».

Для Windows XP есть один нюанс: если разрядность явным образом не указана, то система 32-битная. А если определена как 64-битная, ответ очевиден.

В чем практическое различие

Главное различие между 32 и 64-битными системами состоит в объеме оперативной памяти. Для разрядности 32 бита есть ограничение в 4 Гб, которое на деле дает скромный результат в пределах 3.3-3.5 Гб. Если поставить больше памяти, все равно работать будет только чуть больше трех гигабайт. Обойти это ограничение невозможно.

64-битные системы поддерживают значительно больший объем. Максимальный предел задан числом 192 Гб на примере Windows 7. Понятное дело, даже приблизиться к лимиту практически невозможно, не говоря о том, чтобы его превзойти.

Скептики утверждают, что программы для 64-битных систем занимают чувствительно больше места на диске и в оперативной памяти, но это не столь важно. Больше всего места при постоянном хранении съедают музыкальные и видео файлы, а установленная 64-битная система по определению располагает более богатым объемом «оперативки», чем х86 версия.

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

Напоследок стоит заметить: устаревшие программы отлично работают на 64-разрядной системе, но обязательно следует позаботиться об актуальных версиях драйверов. Драйвера для х86 систем не могут быть установлены на 64-битную систему. Если нужного драйвера для вашего устройства (качественная, но пожилая звуковая карта, ТВ-тюнер, разнообразные платы захвата) нет – придется или отказаться от модернизации операционной системы, или искать замену для устройства.

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

Как узнать какая винда 64 или 86. X86 или x64: Что это значит

Простой пользователь компьютера может долгое время работать с установленной операционной системой Windows и даже не задумываться о том, какая у нее разрядность. Однако пройдет время, и ему потребуется установить на компьютер программу, которая способна работать только с 64-битной версией Windows, и здесь возникнут проблемы, если действующая операционная система обладает разрядностью x32 или x86. В связи с этим может возникнуть вопрос: как узнать разрядность Windows? Давайте на него ответим и более подробно разберемся в отличиях между 32- и 64- битными версиями операционной системы.

Базовые версии операционной системы Windows разрабатывались давно, и с релизом новых вариантов программного обеспечения от компании Microsoft, они лишь дорабатывались. По сути 32-битный (32-разрядные) операционные системы уже отошли в прошлое, и они используются редко, только в тех случаях, когда «железо» компьютера не поддерживает 64-битный Windows.

Сами по себе биты в отношении операционной системы Windows – это способ обработки информации центральным процессором компьютера. В качестве обрабатываемой информации используется оперативная память, и 32-битный Windows способен работать не более чем с 3,5 Гб оперативной памяти, тогда как на 64-битном данный лимит находится на уровне около 200 Гб. С развитием мощности программ и их требовательности к оперативной памяти, компьютеры начали повально переходить на 64-разрядную операционную систему.

Главным минусом 64-разрядной системы является ее требовательность к центральному процессору компьютера. Если в PC установлен 32-разрядный центральный процессор, он никоим образом не сможет работать с 64-разрядной версией операционной системы, то есть им не предусмотрена поддержка более чем 3,5 Гб оперативной памяти.

Многих пользователей компьютера, которые выбирают при установке Windows разрядность операционной системы, вводит в заблуждение отсутствие версии на 32 бита. Связано это с тем, что 32-битная версия Windows для 64-битного процессора обозначается как x86, а не x32. Разобраться, с чем это связано, можно только в том случае, если изучить процессы взаимодействия операционной системы с компьютерным «железом». Пользователю же надо просто запомнить, что 32-битная и 86-битная операционные системы практически ничем не отличаются, и с объемом оперативной памяти более 3,5 Гб справляется только 64-разрядная версия ПО.

Если центральный процесс компьютера поддерживает 64-разрядную версию Windows, то при установке необходимо выбрать именно ее. Следует по

Чем отличается x64 бит Windows от 86-bit (x32), Какая система Виндоус лучше

Отличия х32 от 64 битной системы Windows.

В этой небольшой статье мы как можно проще постараемся объяснить вам в чём основные отличия между Windows 32 битной системы и Windows 64 бита. Ну и естественно поможем выбрать между 64-х и 86-х.

Итак как правильно выбрать разрядность ОС — операционной системы?

Для начала вот вам некоторые сведения:

  • x86 – это архитектура соответствующая 32-битной разрядности.
  • x64 – это архитектура соответствующая 64-битной разрядности.
На разницу архитектуры операционной системы влияют два основных факта:
  1. Разрядность процессора
  2. Размер оперативной памяти

Разрядность процессора – это величина, которая определяет размер машинного слова, то есть количество информации, которой процессор обменивается с оперативной памятью (ОЗУ) компьютера.

Первым пункт можно не рассматривать, — почти все современные процессоры могут одинаково работать, как в 32-х, так и в 64-х битном режиме. Более подробно про разрядность оборудования PC читайте: Информация о x86 и x64

Что касается оперативной памяти, то стоит знать, что каждая ячейка (8 бит = 1 байт) ОЗУ имеет адрес и в 32-х битной системе он записывается в виде двоичного кода длиной в 32 символа. 64= 18446744073709551616. И это открывает большие границы для размеров вашей памяти.

Давайте теперь уточним какая ОС лучше.

В чем разница между операционными системами WINDOWS X32 и Windows x86?
В том, что почти во всех случаях ключевым фактором является размер ОЗУ:

  • меньше 4 ГБ — стоит выбрать 32-разрядную,
  • больше или равно 4 ГБ – 64-разрядную.

Что работает быстрее Windows x64 или Windows x86?

Очень многие говорят, что х64 работает гораздо быстрее чем х86. Вряд ли этому стоит верить.
Это скорее миф, чем правда. Увеличение скорости будет видно только в оптимизированных под x64 программах. Насколько? Да всего где-то на 3-5%. Многие этого даже не почувствуют.

Но если для вас эти 5% очень дороги, то не забывайте, что есть большая вероятность, что некоторые 32-битные приложения просто не запустятся на вашей Windows x64. И всякий раз когда вы будете искать ту или иную программку, вам стоит искать её 64 битную версию и если её нет, то искать ей замену.

На этом всё. Статья написана с помощью программиста от Vienna.
Желаем вам удачной работы с любой разрядностью в вашей операционной системы.

В чем разница между двумя архитектурами процессоров? / Блог компании Droider.Ru / Хабр

Вы наверняка знаете, что мир процессоров разбит на два лагеря. Если вы смотрите это видео со смартфона, то для вас работает процессор на архитектуре ARM, а если с ноутбука, для вас трудится чип на архитектуре x86.

А теперь еще и Apple объявила, что переводит свои Mac на собственные процессоры Apple Silicon на архитектуре ARM. Мы уже рассказывали, почему так происходит. А сегодня давайте подробно разберемся, в чем принципиальные отличия x86 и ARM. И зачем Apple в это все вписалась?

Итак, большинство мобильных устройств, iPhone и Android’ы работают на ARM’е. Qualcomm, HUAWEI Kirin, Samsung Exynos и Apple A13/A14 Bionic — это все ARM-процессоры.

А вот на компьютере не так — там доминирует x86 под крылом Intel и AMD. Именно поэтому на телефоне мы не можем запустить Word с компьютера.


x86 — так называется по последним цифрам семейства классических процессоров Intel 70-80х годов.

Чем же они отличаются?

Есть два ключевых отличия.

Первое — это набор инструкций, то есть язык который понимает процессор

x86 процессоры используют сложный набор инструкций, который называется CISC — Complex Instruction Set Computing.

ARM процессоры наоборот используют упрощенный набор инструкций — RISC — Reduced Instruction Set Computing.

Кстати ARM расшифровывается как Продвинутые RICS машины — Advanced RISC Machines.

Наборы инструкций ещё принято назвать архитектурой или ISA — Instruction Set Architecture.

Второе отличие — это микроархитектура. Что это такое?

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

  • x86 — CISC
  • ARM — RISC

Итак, запомнили. Говорим x86 — подразумеваем архитектуру CISC, ARM — это RISC.

Но как так произошло, что процессоры стали говорить на разных языках?

История CISC

Памятка программиста, 1960-е годы. Цифровой (машинный) код «Минск-22».

Всё началось в 1960-х. Поначалу программисты работали с машинным кодом, то есть реально писали нолики и единички. Это быстро всех достало и появился Assembler. Низкоуровневый язык программирования, который позволял писать простые команды типа сложить, скопировать и прочее. Но программировать на Assembler’е тоже было несладко. Потому как приходилось буквально “за ручку” поэтапно описывать процессору каждое его действие.

Поэтому, если бы вы ужинали с процессором, и попросили передать его вам соль, это выглядело бы так:

  • Эй процессор, посмотри в центр стола.
  • Видишь соль? Возьми её.
  • Теперь посмотри на меня.
  • Отдай мне соль. — Ага, спасибо!
  • А теперь снова возьми у меня соль.
  • Поставь её откуда взял
  • Спасибо большое! Продолжай свои дела.
  • Кхм… Процессор, видишь перец?
  • И так далее….

В какой-то момент это всё задолбало программистов. И они решили: Хей, а почему бы нам просто не не написать инструкцию «Передай мне соль»? Так и сделали. Набор таких комплексных инструкций назвали CISC.

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

Недостатки CISC

Но был ли такой подход оптимальным??? С точки зрения разработчиков — да. Но вот микроархитектура страдала.

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

С другой стороны, он бы не щадил бюджет. Диван для одного человека, пуф для другого, кушетка для третьего, трон из Игры Престолов для вашей Дейенерис. В этом случае площадь комнаты бы очень быстро закончилась. Чтобы разместить всех вам бы пришлось увеличивать бюджет и расширять зал. Это не рационально. Но самое главное, CISC-архитектура существует очень давно и те инструкции, которые были написаны в 60-х годах сейчас уже вообще не актуальны. Поэтому часть мебели, а точнее исполнительных блоков, просто не будут использоваться. Но многие из них там остаются. Поэтому появился RISC…

Преимущества RISC

С одной стороны писать на Assembler’е под RISC процессоры не очень-то удобно. Если в лоб сравнивать код, написанный под CISC и RISC процессоры, очевидно преимущество первого.

Так выглядит код одной и той же операции для x86 и ARM.

x86

  • MOV AX, 15; AH = 00, AL = 0Fh
  • AAA; AH = 01, AL = 05
  • RET

ARM

  • MOV R3, #10
  • AND R2, R0, #0xF
  • CMP R2, R3
  • IT LT
  • BLT elsebranch
  • ADD R2. #6
  • ADD R1. #1
  • elsebranch:
  • END

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

Представьте, что вы проектируете процессор. Расположение блоков на х86 выглядело бы так.

Каждый цветной квадрат — это отдельные команды. Их много и они разные. Как вы поняли, здесь мы уже говорим про микроархитектуру, которая вытекает из набора команд. А вот ARM-процессор скорее выглядит так.

Ему не нужны блоки, созданные для функций, написанных 50 лет назад.

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

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

  • проще работа с памятью,
  • более богатая регистровая архитектура,
  • легче делать 32/64/128 разряды,
  • легче оптимизировать,
  • меньше энергопотребление,
  • проще масштабировать и делать отладку.

Для примера вот два процессора одного поколения. ARM1 и Intel 386. При схожей производительности ARM вдвое меньше по площади. А транзисторов на нем в 10 раз меньше: 25 тысяч против 275 тысяч. Энергопотребление тоже отличается на порядок: 0.1 Ватт против 2 Ватт у Intel. Шок.

Поэтому наши смартфоны, которые работают на ARM процессорах с архитектурой RISC, долго живут, не требуют активного охлаждения и такие быстрые.

Лицензирование

Но это все отличия технические. Есть отличия и организационные. Вы не задумывались почему для смартфонов так много производителей процессоров, а в мире ПК на x86 только AMD и Intel? Все просто — ARM это компания которая занимается лицензированием, а не производством.

Даже Apple приложила руку к развитию ARM. Вместе с Acorn Computers и VLSI Technology. Apple присоединился к альянсу из-за их грядущего устройства — Newton. Устройства, главной функцией которого было распознавание текста.

Даже вы можете начать производить свои процессоры, купив лицензию. А вот производить процессоры на x86 не может никто кроме синей и красной компании. А это значит что? Правильно, меньше конкуренции, медленнее развитие. Как же так произошло?

Ну окей. Допустим ARM прекрасно справляется со смартфонами и планшетами, но как насчет компьютеров и серверов, где вся поляна исторически поделена? И зачем Apple вообще ломанулась туда со своим Apple Silicon.

Что сейчас?

Допустим мы решили, что архитектура ARM более эффективная и универсальная. Что теперь? x86 похоронен?

На самом деле, в Intel и AMD не дураки сидят. И сейчас под капотом современные CISC-процессоры очень похожи на RISC. Постепенно разработчики CISC-процессоров все-таки пришли к этому и начали делать гибридные процессоры, но старый хвост так просто нельзя сбросить.

Но уже достаточно давно процессоры Intel и AMD разбивают входные инструкции на более мелкие микро инструкции (micro-ops), которые в дальнейшем — сейчас вы удивитесь — исполняются RISC ядром.

Да-да, ребята! Те самые 4-8 ядер в вашем ПК — это тоже RISC-ядра!

Надеюсь, тут вы окончательно запутались. Но суть в том, что разница между RISC и CISC-дизайнами уже сейчас минимальна.

А что остается важным — так это микроархитектура. То есть то, насколько эффективно все организовано на самом камне.

Ну вы уже наверное знаете, что Современные iPad практически не уступают 15-дюймовым MacBook Pro с процессорами Core i7 и Core i9.

А что с компьютерами?

Недавно компания Ampere представила свой 80-ядерный ARM процессор. По заявлению производителя в тестах процессор Ampere показывает результат на 4% лучше, чем самый быстрый процессор EPYC от AMD и потребляет на 14% меньше энергии.

Компания Ampere, лезет в сегменты Cloud и Workstation, и показывает там отличные цифры. Самый быстрый суперкомпьютер в мире сегодня работает на ARM ISA. С обратной стороны, Intel пытается все таки влезть в сегмент low power и для этого выпускает новый интересный процессор на микроархитектуре lakefield.

Пока у ноутбуков и процессоров от Intel есть одно неоспоримое достоинство — (охлаждение и) единство архитектуры. Пока на рынке ARM-процессоров существуют Qualcomm, Samsung, MediaTek, в мире x86 творится монополия и разработчикам сильно легче делать софт и игры под “взрослые” процессоры.

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

И если бы Intel лицензировал x86 за деньги другим людям, то вероятно Apple просто адаптировали свою текущую микроархитектуру под x86. Но так как они не могут этого сделать, они решили просто перейти на ARM. Проблема для нас с микроархитектурой в том, что она коммерческая тайна. И мы про нее ничего не знаем.

Итоги

Спрос на ARM в итоге вырастет. Для индустрии это не просто важный шаг, а архиважный. Линус Торвальдс говорил, что пока рабочие станции не станут работать на ARM — на рынке серверов будут использовать x86.

И вот это случилось — в перспективе это миллионы долларов, вложенных в серверные решения. Что, конечно, хорошо и для потребителей. Нас ждет светлое будущее и Apple, действительно, совершила революцию!

Редактор материала: Антон Евстратенко. Этот материал помогли подготовить наши зрители Никита Куликов и Григорий Чирков. Спасибо ребята!

Как узнать разрядность системы на Windows XP/7/8/8.1/10 (x32 или x64)

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

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

Как узнать разрядность системы на Windows XP

Самый простой и самый правильный вариант – заглянуть в окно со свойствами системы:

1. Кликаем по значку “Мой компьютер”, как и полагается, ПКМ. В появившемся выпадающем меню нажимаем “Свойства”;

2. Открывается окно, где Вы должны перейти на вкладку “Общие”;

3. Если там нет информации о разрядности системы, значит, используется 32-хбитная версия (x86).

4. В обратном же случае, если Вы видите другую картинку и там написано, к примеру, “Professional x64 Edition”, то система является 64-хбитной.

Проверка разрядности системы на Windows 7/8/8.1

Здесь всё ещё значительно проще, нужно:

1. Также само правой кнопкой кликнуть по значку “Компьютер” и в выпавшем контекстном меню нажать на “Свойства”;

2. Далее на экране Вашего монитора появится окно с подробными характеристиками компьютера, среди которых есть: объём оперативной памяти, информация о процессоре и разрядность ОС.

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

Можно ли узнать разрядность системы в Windows 10

Конечно же, можно. И при том по-прежнему не нужно использовать сторонний софт. Способ практически такой же, но есть своя особенность. Например, на большинстве версий ОС значок “Компьютер” является ярлыком, поэтому нажав на него ПКМ и выбрав “Свойства” мы получим совершенно другую информацию.

Поэтому давайте рассмотрим наш собственный вариант. Он прост и универсален. Кстати, в случае с Win 7-8 он также подействует:



1. Однократно нажимаем комбинацию клавиш Windows + S. Да-да, наконец-то Вы воспользовались клавишей не во время ведения напряжённого боя в онлайн-шутере. Открывается строка поиска, встроенная во все последние версии ОС;

2. Вводим в неё кодовое слово “Компьютер”;

3. Кликаем по первому приложению правой кнопкой мыши, в контекстном меню нажимаем “Свойства”;

4. После чего открывается окно отдалённо напоминающее таковое в Windows 8.1, где написана основная информация о Вашем компьютере или ноутбуке, в том числе и разрядность системы. В данном случае это: 6 ГБ оперативной памяти, процессор Intel Core i7 и 64-разрядная операционная система.

Определяем разрядность операционной системы через программу AIDA64

Почему мы выбрали именно её? Всё просто, с помощью AIDA64 Вы можете получить всю необходимую информацию о своём компьютере и даже больше.

1. Открываем программу со значка на рабочем столе – перед нами главное окно;

2. Кликаем по пункту “Операционная Система”;

3. Далее нажимаем на подпункт с аналогичным названием;

4. Доступной становится вся необходимая информация по версии ОС и её разрядности, на скриншоте нужную нам строку мы выделили курсором.

На этом всё. Вы великолепны!

CS107 Руководство по x86-64

Совместное усилие сотрудников CS107 (Эрик, Джули, Нейт)

x86-64 (также известный как x64 и / или AMD64) — это 64-разрядная версия набора инструкций x86 / IA32. Ниже представлен наш обзор его функций, относящихся к CS107. Эти темы более подробно освещены в главе 3 учебника B&O. См. Также нашу таблицу x86-64 для компактной одностраничной справки.

Регистры

В таблице ниже перечислены наиболее часто используемые регистры (шестнадцать универсальных и два специальных).Каждый регистр имеет ширину 64 бита; нижние 32-, 16- и 8-битные части выбираются по имени псевдорегистратора. Некоторые регистры предназначены для определенной цели, например, % rsp используется в качестве указателя стека или % rax для значения, возвращаемого функцией. Другие регистры являются универсальными, но имеют обычное использование в зависимости от того, сохранен ли вызывающий или вызывающий -сохраненный. Если функция binky вызывает winky , мы называем binky вызывающим абонентом и winky как вызывающим абонентом .Например, все регистры, используемые для первых 6 аргументов и возвращаемого значения, сохраняются вызывающим. Вызываемый может свободно использовать эти регистры, перезаписывая существующие значения без каких-либо мер предосторожности. Если % rax содержит значение, которое вызывающий абонент хочет сохранить, вызывающий должен скопировать это значение в «безопасное» место перед выполнением вызова. Регистры, сохраненные вызывающим абонентом, идеальны для временного / временного использования вызываемым пользователем. Напротив, если вызываемый объект намеревается использовать регистр, сохраненный вызываемым, он должен сначала сохранить его значение и восстановить его перед завершением вызова.Регистры, сохраненные вызываемым пользователем, используются для локального состояния вызывающего, которое необходимо сохранить при последующих вызовах функций.

Регистр Обычное использование Младший 32-битный Младшие 16 бит Младшие 8 бит
% rax Возвращаемое значение, сохраненное вызывающим абонентом % eax % ах % и
9000 9% РДИ 1-й аргумент, сохраненный абонентом % edi % di % разр.
9000 9% RSI 2-й аргумент, сохраненный вызывающим абонентом % ESI % si 9000 9% сил
% при показателе 3-й аргумент, сохраненный вызывающим % EDX % dx % дл
9000 9% ОКХ 4-й аргумент, сохраненный вызывающим абонентом % ЭКХ % сх % класс
9000 9% r8 5-й аргумент, сохраненный вызывающим абонентом % r8d % r8w % r8b
9000 9% r9 6-й аргумент, сохранен вызывающим абонентом % r9d % r9w % r9b
9000 9% r10 Царапины / временные, сохранены вызывающим абонентом % r10d % r10w % r10b
9000 9% r11 Царапины / временные, сохранены вызывающим абонентом % r11d % r11w % Р11Б
% ОСП Указатель стека, сохраненный вызываемым абонентом % особ % зп % spl
9000 9% rbx Локальная переменная, сохраненная вызываемым пользователем % EBX % bx % бл
9000 9% руб. Локальная переменная, сохраненная вызываемым пользователем % эбп % п.п. % бпл
9000 9% r12 Локальная переменная, сохраненная вызываемым пользователем % r12d % r12w % r12b
9000 9% r13 Локальная переменная, сохраненная вызываемым пользователем % r13d % r13w % r13b
9000 9% r14 Локальная переменная, сохраненная вызываемым пользователем % r14d % r14w % r14b
9000 9% r15 Локальная переменная, сохраненная вызываемым пользователем % r15d % r15w % r15b
9000 9% разрыв Указатель команд
9000 9% rflags Биты кода состояния / условия

Режимы адресации

Верный своей природе CISC, x86-64 поддерживает множество режимов адресации.Режим адресации — это выражение, которое вычисляет адрес в памяти для чтения / записи. Эти выражения используются в качестве источника или назначения для инструкции mov и других инструкций, обращающихся к памяти. В приведенном ниже коде показано, как записать немедленное значение 0 в различные ячейки памяти на примере каждого из доступных режимов адресации:

  movl $ 0, 0x604892 # direct (адрес - постоянное значение)
movl $ 0, (% rax) # косвенный (адрес находится в регистре% rax)

movl $ 0, -24 (% rbp) # косвенный со смещением (адрес = базовый% rbp + смещение -24)

movl $ 0, 0xc (% rsp,% rdi, 4) # косвенный со смещением и масштабированным индексом
                              (адрес = базовый% rsp + смещение 0xc + индекс% rdi * масштаб 4)

movl $ 0, (% rax,% rcx, 8) # (особый случай масштабированного индекса, смещение предполагается равным 0)

movl $ 0, 4 (% rax,% rcx,) # (особый случай масштабированного индекса, масштаб принят 1)
  

Общие инструкции

Примечание о суффиксах команд : многие инструкции имеют суффикс ( b , w , l или q ), который указывает разрядность операции (1, 2, 4 или 8 байтов, соответственно).Суффикс часто опускают, когда битовую ширину можно определить по операндам. Например, если регистр назначения — % eax , он должен быть 4 байта, если % ax должен быть 2 байта, а % al будет 1 байтом. Некоторые инструкции, такие как movs и movz , имеют два суффикса: первый для исходного операнда, второй для целевого. Например, movzbl перемещает 1-байтовое исходное значение в 4-байтовое место назначения.

Двиг и ле

Наиболее частая инструкция, с которой вы столкнетесь, — это mov в одном из его многогранных вариантов.Mov копирует значение из источника в место назначения. Источником может быть непосредственное значение, регистр или ячейка памяти (выраженная с помощью одного из приведенных выше выражений режима адресации). Назначение — это регистр или ячейка памяти. Память может быть не более одного источника или назначения. Суффикс mov (b, w, l или q) указывает, сколько байтов копируется (1, 2, 4 или 8 соответственно). Для инструкции lea (загрузка действующего адреса) операнд источника является ячейкой памяти (с использованием режима адресации сверху), и он копирует вычисленный адрес источника в пункт назначения.Обратите внимание, что lea не разыменовывает исходный адрес, а просто вычисляет его местоположение. Это означает, что lea — не что иное, как арифметическая операция и обычно используется для вычисления значений простых линейных комбинаций, которые не имеют ничего общего с ячейками памяти!

  mov src, dst # общая форма инструкции dst = src
mov $ 0,% eax # регистр% eax = 0
movb% al, 0x409892 # запись в память по адресу 0x409892 = младший байт из регистра% eax
mov 8 (% rsp),% eax # регистр% eax = значение, прочитанное из адреса памяти% rsp + 8

lea 0x20 (% rsp),% rdi # регистр% rdi =% rsp + 0x20 (адрес, без разыменования!)
lea (% rdi,% rdi, 1),% rax # register% rax =% rdi +% rdi (подозрительно выглядит как lea, используемая для обычной математики)
  

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

  movsbl% al,% edx # копирование младшего байта из регистра% eax, расширение знака до 4 байтов в% edx
movzbl% al,% edx # копирование младшего байта из регистра% eax, расширение нулями до 4 байтов в% edx
  

Особый случай, который следует отметить, заключается в том, что mov для записи 32-битного значения в регистр также по умолчанию обнуляет старшие 32 бита регистра, т.е.e выполняет неявное расширение нуля до разрядности q. Это объясняет использование таких инструкций, как mov% ebx,% ebx , которые выглядят странно / избыточно, но на самом деле используются для расширения нулями от 32 до 64. При таком поведении по умолчанию нет необходимости в явном movzlq инструкция. Чтобы вместо знакового расширения с 32-битной на 64-битную, существует инструкция movslq .

Инструкция cltq — это специализированная команда movs , которая работает на % rax .Эта инструкция без операндов выполняет расширение знака на месте на % rax ; разрядность источника равна l, разрядность назначения равна q.

  cltq # работает с% rax, знаковое расширение 4-байтового src до 8-байтового dst, сокращение для movslq% eax,% rax.
  

Арифметические и побитовые операции

Двоичные операции обычно выражаются в форме с двумя операндами, где второй операнд является одновременно источником операции и местом назначения.Источником может быть непосредственная константа, регистр или ячейка памяти. Адресатом должен быть регистр или память. Память может быть не более одного источника или назначения. Унарные операции имеют один операнд, который является одновременно источником и получателем, который может быть либо регистром, либо памятью. Многие из арифметических инструкций используются как для знаковых, так и для беззнаковых типов, то есть не существует знакового добавления и беззнакового сложения, для обоих используется одна и та же инструкция. При необходимости коды условий, установленные операцией, могут использоваться для обнаружения различных видов переполнения.= src
not dst # dst = ~ dst (побитовая инверсия)

shl count, dst # dst << = count (сдвиг влево dst на количество позиций), синоним sal sar count, dst # dst >> = count (арифметический сдвиг вправо dst на количество позиций)
shr count, dst # dst >> = count (логический сдвиг вправо dst на количество позиций)

# у некоторых инструкций есть особые варианты с разным количеством операндов
imul src # одиночный операнд imul принимает другой операнд в% rax, вычисляет 128-битный результат и сохраняет
# старшие 64 бита в% rdx, младшие 64 бита в% rax
shl dst # dst << = 1 (нет счетчика => принять 1, то же самое для sar, shr, sal)

Инструкции по разветвлению

В специальном регистре % flags хранится набор логических флагов, называемых кодами состояния .Большинство арифметических операций обновляют эти коды. При условном переходе считываются коды условий, чтобы определить, переходить ли переходить или нет. Коды условий включают в себя ZF (нулевой флаг), SF (знаковый флаг), OF (флаг переполнения, со знаком) и CF (флаг переноса, без знака). Например, если результат был нулевым, устанавливается ZF, если операция переполнена (в знаковый бит), устанавливается OF.

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

  cmpl op2, op1 # вычисляет результат = op1 - op2, отбрасывает результат, устанавливает коды условий
test op2, op1 # вычисляет result = op1 & op2, отбрасывает результат, устанавливает коды условий

jmp target # безусловный переход
je target # равный прыжок, синоним jz прыжок ноль (ZF = 1)
jne target # jump не равно, синоним jnz jump ненулевой (ZF = 0)
jl target # прыжок меньше, синоним jnge прыжок не больше (SF! = OF)
jle target # прыжок меньше или равно, синоним jng jump не больше или равно (ZF = 1 или SF! = OF)
jg target # прыжок больше чем, синоним jnle jump не меньше или равно (ZF = 0 и SF = OF)
jge target # прыжок больше или равно, синоним jnl прыжок не меньше (SF = OF)
ja target # прыжок выше, синоним jnbe jump не ниже или равно (CF = 0 и ZF = 0)
jb target # прыжок ниже, синоним jnae jump не выше или равно (CF = 1)
js target # прыжок подписан (SF = 1)
jns target # переход без подписи (SF = 0)
  

Стек вызовов функций

Регистр % rsp используется как «указатель стека»; push и pop используются для добавления / удаления значений из стека.Команда push принимает один операнд: непосредственный, регистр или ячейку памяти. Push уменьшает % rsp и копирует операнд для размещения в стеке. Команда pop принимает один операнд, регистр назначения. Pop копирует самое верхнее значение в место назначения и увеличивает % rsp . Также можно напрямую настроить % rsp для добавления / удаления всего массива или набора переменных за одну операцию. Обратите внимание, стек растет вниз (в сторону младших адресов).

  push% rbx # поместить значение% rbx в стек
pushq $ 0x3 # сразу поместить значение 3 в стек
sub $ 0x10,% rsp # настроить указатель стека, чтобы выделить еще 16 байтов

pop% rax # извлечь самое верхнее значение из стека в регистр% rax
добавить $ 0x10,% rsp # настроить точку стека, чтобы удалить верхние 16 байтов
  

Вызов / возврат используются для передачи управления между функциями. Инструкция callq принимает один операнд — адрес вызываемой функции.Он помещает адрес возврата (текущее значение % rip ) в стек, а затем переходит к этому адресу. Команда retq выталкивает адрес возврата из стека в место назначения % rip , таким образом возобновляя работу с сохраненным адресом возврата.

Для настройки вызова вызывающий помещает первые шесть аргументов в регистры % rdi , % rsi , % rdx , % rcx , % r8 и % r9 (любые дополнительные аргументы помещаются в стек), а затем выполняет команду call .

  mov $ 0x3,% rdi # первый аргумент передается в% rdi
mov $ 0x7,% rsi # второй аргумент передается в% rsi
callq Binky # передает управление функции Binky
  

Когда вызываемый абонент завершает работу, он записывает возвращаемое значение (если есть) в % rax , очищает стек и использует инструкцию retq для возврата управления вызывающему.

  mov $ 0x0,% eax # записать возвращаемое значение в% rax
добавить $ 0x10,% rsp # освободить кадр стека
retq # возврат из текущей выполняющейся функции, возобновление вызывающего
  

Целью инструкции перехода или вызова обычно является абсолютный адрес, который был определен во время компиляции.Однако бывают случаи, когда цель неизвестна до времени выполнения, например, оператор switch , скомпилированный в таблицу переходов или при вызове указателя функции. Для них целевой адрес вычисляется и сохраняется в регистре, а вариант перехода / вызова используется je *% rax или callq *% rax для чтения целевого адреса из указанного регистра.

Сборка и ГДБ

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

  (gdb) p $ rsp
(gdb) информация reg
  

Команда disassemble распечатает дизассемблированную функцию по имени. Команда x поддерживает формат i , который интерпретирует содержимое адреса памяти как закодированную инструкцию.

  (gdb) disassemble main // дизассемблировать и распечатать все инструкции main
(gdb) x / 8i main // разбираем и распечатываем первые 8 инструкций main
  

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

  (gdb) b * 0x08048375
(gdb) b * main + 7 // разбить на инструкции 7 байтов на main
  

Вы можете продвигаться по инструкции (вместо исходной строки) с помощью команд stepi и nexti .

  (gdb) степи
(GDB) Nexti
  

Определение разрядности (x86 или x64) DLL

привет ребята и девчонки!

В этой статье мы рассмотрим довольно неприятный сценарий: убедиться, что все ваши сборки .NET или даже собственные библиотеки DLL ориентированы на одну и ту же архитектуру. на момент написания приложения, как правило, были ориентированы на архитектуры x86 или x64, либо на обе архитектуры. Однако,

смешивание dll или исполняемых файлов, скомпилированных для разных архитектур, может привести к катастрофе

.такая катастрофа, по сути:

, это исключение плохого изображения, говорящее:


необработанное исключение типа «система».

плохое изображение

‘Произошло в microsoft.visualstudio.hostingprocess.utilities.dll

дополнительная информация: не удалось загрузить файл или сборку «библиотека классов, версия = 1.0.0.0, культура = нейтральный, publickeytoken = null» или одну из их зависимостей.

была сделана попытка загрузить программу с неверным форматом.

вот почему это происходит:

это очень и очень глупый поступок, ведь консольное приложение x64 зависит от библиотеки классов x86 (или dll). помнить:

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

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

Давайте начнем с сборок .net.

если рассматриваемая dll является сборкой .net, вы можете

используйте утилиту corflags

узнать горечь

. corflags является частью инструментов разработчика Visual Studio, поэтому сначала вам нужно запустить командную строку разработчика Visual Studio (см.

этот поток stackoverflow

или поисковые окна для

corflags.исполняемый

на случай, если вы не можете найти его в меню «Пуск»).

После того, как вы найдете файл corflags.exe или получите командную строку разработчика Visual Studio, запустите

corflags.exe

с полным путем к DLL, которую вы хотите проверить, и проверьте

32 бит

настройка на выходе:

теперь corflags.exe отлично работает, чтобы узнать архитектуру сборки .net, но не может сказать вам архитектуру собственной dll. вот что произойдет, если вы попытаетесь использовать его с sdl2.dll, например:


для неуправляемых / собственных dll мы можем вместо этого

использовать свалку


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

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


эта статья была изначально опубликована

Вот

на ранчо программистов 28 сентября 2014 года.

Как узнать, является ли ваш Mac 64-разрядной

Вам интересно, имеет ли ваш Mac 64-битную архитектуру или 32-битную архитектуру? Ну, может, ты не один.Хорошая новость заключается в том, что определить, какую архитектуру процессора использует ваш Mac, довольно легко.

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

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

Если вы не уверены, является ли ваш Mac 64-разрядной версией или нет, самый простой способ проверить — это выяснить, какой процессор в вашем Mac, и самый простой способ сделать это — сделать следующее:

Как определить, является ли Mac 64-разрядным или 32-разрядным

  • Раскройте меню Apple  и нажмите «Об этом Mac»
  • Теперь посмотрите на то, что указано рядом с «Процессором», и используйте следующие данные в качестве руководства:
    • Intel Core Solo — 32-разрядная версия
    • Intel Core Duo — 32 бит
    • Intel Core 2 Duo — 64-разрядная версия
    • Intel Quad-Core Xeon — 64 бит
    • Intel Core i5 — 64-разрядная версия
    • Intel Core i7 — 64-разрядная версия

По сути, все, что новее, чем процессоры Intel Core Duo и Intel Core Solo, будет иметь 64-битную архитектуру.

В чем разница между 32-битной и 64-битной?

32-битная и 64-битная архитектуры совершенно разные, причем 64-битная архитектура является гораздо более современной архитектурой, которая использует различные улучшения памяти и обработки. Для более технического объяснения Википедия объясняет разницу следующим образом:

Переход с 32-битной на 64-битную архитектуру является фундаментальным изменением, так как большинство операционных систем должны быть существенно изменены, чтобы воспользоваться преимуществами новой архитектуры, поскольку это программное обеспечение должно управлять фактическим аппаратным обеспечением адресации памяти.Другое программное обеспечение также должно быть перенесено для использования новых возможностей; более старое 32-разрядное программное обеспечение может поддерживаться либо на основании того, что 64-разрядный набор инструкций является надмножеством 32-разрядного набора инструкций, так что процессоры, поддерживающие 64-разрядный набор инструкций, также могут выполнять код для 32-разрядной инструкции. установленным, либо посредством программной эмуляции, либо путем фактической реализации 32-разрядного процессорного ядра в 64-разрядном процессоре, как в некоторых процессорах Itanium от Intel, которые включают в себя процессорное ядро ​​IA-32 для запуска 32-разрядных приложений x86.Операционные системы для этих 64-битных архитектур обычно поддерживают как 32-битные, так и 64-битные приложения.

Есть ли у вас другое объяснение 64-битной и 32-битной версий? Или, возможно, другой способ определить, какая у вас архитектура Mac? Дайте нам знать об этом в комментариях!

Связанные

КВМ — ArchWiki

KVM , Виртуальная машина на основе ядра, представляет собой гипервизор, встроенный в ядро ​​Linux. Он похож на Xen по назначению, но намного проще запустить.В отличие от собственного QEMU, который использует эмуляцию, KVM — это специальный режим работы QEMU, который использует расширения ЦП (HVM) для виртуализации через модуль ядра.

Используя KVM, можно запускать несколько виртуальных машин под управлением немодифицированной GNU / Linux, Windows или любой другой операционной системы. (Для получения дополнительной информации см. Состояние гостевой поддержки.) Каждая виртуальная машина имеет частное виртуализированное оборудование: сетевая карта, диск, видеокарта и т. Д.

Различия между KVM и Xen, VMware или QEMU можно найти в FAQ по KVM.

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

Проверка поддержки KVM

Поддержка оборудования

KVM требует, чтобы процессор хоста виртуальной машины имел поддержку виртуализации (с именем VT-x для процессоров Intel и AMD-V для процессоров AMD). Вы можете проверить, поддерживает ли ваш процессор аппаратную виртуализацию, с помощью следующей команды:

 $ LC_ALL = C lscpu | grep Виртуализация
 

Альтернативно:

 $ grep -E --color = auto 'vmx | svm | 0xc0f' / proc / cpuinfo
 

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

Примечание: Возможно, вам потребуется включить поддержку виртуализации в BIOS. Все процессоры x86_64, произведенные AMD и Intel за последние 10 лет, поддерживают виртуализацию. Если похоже, что ваш процессор не поддерживает виртуализацию, он почти наверняка отключен в BIOS.

Поддержка ядра

Ядра

Arch Linux предоставляют необходимые модули ядра для поддержки KVM.

  • Проверить, доступны ли в ядре необходимые модули, kvm и kvm_amd или kvm_intel , можно с помощью следующей команды:
 $ zgrep CONFIG_KVM / proc / config.gz
 

Модуль доступен, только если он установлен на y или m .

  • Затем убедитесь, что модули ядра загружаются автоматически с помощью команды:
 $ lsmod | grep kvm 
 kvm_intel 245760 0
kvmgt 28672 0
mdev 20480 2 kvmgt, vfio_mdev
vfio 32768 3 kvmgt, vfio_mdev, vfio_iommu_type1
квм 737280 2 квмгт, квм_интел
irqbypass 16384 1 квм
 

Если команда ничего не возвращает, модуль необходимо загрузить вручную, см. Модули ядра # Ручная обработка модулей.

Совет: Если modprobing kvm_intel или kvm_amd не работает, но modprobing kvm завершается успешно, а lscpu утверждает, что аппаратное ускорение поддерживается, проверьте настройки BIOS. Некоторые поставщики, особенно производители портативных компьютеров, по умолчанию отключают эти расширения процессора. Чтобы определить, нет ли аппаратной поддержки или отключены ли расширения в BIOS, сообщит вывод dmesg после неудачной попытки modprobe.

Паравиртуализация с Virtio

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

Все устройства Virtio состоят из двух частей: хост-устройства и гостевого драйвера.

Поддержка ядра

Используйте следующую команду, чтобы проверить, доступны ли модули VIRTIO в ядре внутри виртуальной машины :

 $ zgrep ВИРТИО / proc / config.gz
 

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

 $ lsmod | grep virtio
 

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

Список паравиртуализированных устройств

  • сетевое устройство (virtio-net)
  • блочное устройство (virtio-blk)
  • контроллер устройства (virtio-scsi)
  • последовательное устройство (virtio-serial)
  • баллончик (virtio-баллон)

Как использовать KVM

См. Основную статью: QEMU.

Советы и хитрости

Вложенная виртуализация

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

На хосте включите вложенную функцию для kvm_intel :

Примечание: то же самое можно сделать для AMD, просто замените intel на amd , где необходимо

 # modprobe -r kvm_intel
# modprobe kvm_intel nested = 1
 

Чтобы сделать его постоянным (см. Модули ядра # Настройка параметров модуля):

 / и т. Д. / Modprobe.d / kvm_intel.conf 
 параметров kvm_intel nested = 1 

Убедитесь, что функция активирована:

 $ systool -m kvm_intel -v | grep вложенный 
 nested = "Y" 

Включите режим «сквозной передачи» для перенаправления всех функций ЦП гостевой системе:

  1. При использовании QEMU запустите гостевую виртуальную машину с помощью следующей команды: qemu-system-x86_64 -enable-kvm -cpu host .
  2. Если используется виртуальный менеджер , измените модель ЦП на host-passthrough (его не будет в списке, просто укажите его в поле).
  3. При использовании virsh используйте virsh, отредактируйте vm-name и измените строку ЦП на

Загрузите виртуальную машину и проверьте, если vmx флаг присутствует:

 $ grep -E --color = auto 'vmx | svm' / proc / cpuinfo
 

Включение больших страниц

Эта статья или раздел является кандидатом на слияние с QEMU.

Примечания: qemu-kvm больше не существует, так как все его функции были объединены в qemu.После устранения указанной выше проблемы я предлагаю объединить этот раздел с QEMU. (Обсудить в Обсуждении: KVM #)

Вы также можете включить огромные страницы, чтобы повысить производительность вашей виртуальной машины.
С обновленным Arch Linux и работающим KVM у вас, вероятно, уже есть все, что вам нужно. Проверьте, есть ли у вас каталог / dev / hugepages . Если нет, создайте его.
Теперь нам нужны права на использование этого каталога. Разрешение по умолчанию — это uid и gid root с 0755, но мы хотим, чтобы любой член группы kvm имел доступ к огромным страницам.

Добавьте в свой / etc / fstab :

 hugetlbfs / dev / hugepages режим hugetlbfs = 01770, gid = 78 0 0
 

Конечно, гид должен соответствовать группе квм . Режим 1770 позволяет любому члену группы создавать файлы, но не отменяет связи или переименовывает файлы друг друга. Убедитесь, что / dev / hugepages правильно смонтирован:

 # umount / dev / hugepages
# mount / dev / hugepages
$ mount | grep огромный 
 hugetlbfs на / dev / hugepages типа hugetlbfs (rw, relatime, mode = 1770, gid = 78) 

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

 $ grep Hugepagesize / proc / meminfo
 

Обычно это 2048 КБ ≙ 2 МБ. Допустим, вы хотите запустить свою виртуальную машину с 1024 МБ. 1024/2 = 512. Добавьте несколько дополнительных, чтобы мы могли округлить это до 550. Теперь скажите вашей машине, сколько огромных страниц вы хотите:

 # эхо 550> / proc / sys / vm / nr_hugepages
 

Если у вас достаточно свободной памяти, вы должны увидеть:

 $ grep HugePages_Total / proc / meminfo 
 Huges, Всего страниц: 550
 

Если число меньше, закройте некоторые приложения или запустите виртуальную машину с меньшим объемом памяти (число_страниц x 2):

 $ qemu-system-x86_64 -enable-kvm -m 1024 -mem-path / dev / hugepages -hda <образ_диска> [...]
 

Обратите внимание на параметр -mem-path . Это будет использовать огромные страницы.

Теперь вы можете во время работы виртуальной машины проверить, сколько страниц используется:

 $ grep HugePages / proc / meminfo 
 HugePages_Total: 550
HugePages_Free: 48
HugePages_Rsvd: 6
HugePages_Surp: 0
 

Теперь, когда все вроде работает, вы можете включить огромные страницы по умолчанию, если хотите. Добавьте в свой /etc/sysctl.d/40-hugepage.conf :

 vm.nr_hugepages = 550
 

См. Также:

См. Также

.

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

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