Что такое разрядность процессора (32/64)
Разрядность процессора — один из его основных параметров, определяющих, какое количество бит информации обрабатывают регистры процессора за период одного такта.
Основной перелом в развитии процессоров произошел в 2002 году, когда компания AMD представила впервые рынку «расширенный» процессор с 64 битной архитектурой. Не на много отстав от конкурентов, в том же году компания Intel выпускает свой процессор, заменив линейку 32 разрядных процессоров 64 разрядными.
Конечно, в настоящее время маркировки и обозначения процессоров изменились, но общая суть осталась прежней. Процессоры представлены в двух вариантах архитектуры регистров 32 и 64 бита. Современные процессоры выпускаются в 64 битном варианте исполнения архитектуры, что совсем не означает невозможность запуска на них программных решений ориентированных на 32 разрядные ЦП.
Визуально определить разрядность СРП можно по нанесенной на корпус маркировке или служебному названию изделия, например х86 от AMD или ЕМ64Т, где под маркировкой х86 подразумевается поколение процессора.
Основные понятия разрядности процессора
Для оптимизации вычислительных процессов, и получения максимума производительности, необходимо устанавливать на компьютер операционную систему с разрядностью соответствующей архитектуре процессора. Установив 32 битную операционную систему на компьютер с 64 битным процессором, вы потеряете не только в быстродействии системы, но и в объеме оперативной памяти, ОС рассчитанные на сборку 32 разрядной архитектуры «не видят» оперативную память более 4 Гб. В то же время сборка из операционной системы и процессора с одинаковыми архитектурами разрядности поддерживает объем оперативной памяти уже до 16 Гб.
В целом, для рядового пользователя ПК, разница между двумя архитектурами не принципиальна, и кроме объема оперативной памяти на использование компьютера никак не влияет. Если же информация об архитектуре необходима, можно воспользоваться сторонними программными продуктами, как пример приложение CPU-Z, позволяющее в кратчайшие сроки проанализировать архитектуру системы и выдать результат в визуально удобном для пользователя виде.
Разрядность процессора — копаем в суть
Здравствуйте мои дорогие читатели, и я продолжаю цикл наших бесед, посвященных сердцу любого компьютера. Сегодня предметом обсуждения будет разрядность процессора. Возможно, некоторые из вас и не обращали внимания на данный показатель, и даже успешно пользовались компьютером без этой информации. Но раз уж вы решили повысит уровень своих знаний, то давайте разберемся, что это такое, на что она влияет.
Для того чтобы максимально приблизится к пониманию процесса я считаю необходимым вспомнить некоторые понятия.
Информация в процессоре представлена в виде цифрового двоичного кода, который в свою очередь выглядит в виде серии импульсов с определенной последовательностью сигналов (есть напряжение –«1», нет – «0»). Один импульс – это бит информации.
Сигналы, поступают на транзисторы логических схем кристалла с определенной тактовой частотой. Если чип будет считывать отдельно каждый бит, то это будет очень долго и неудобно. Гораздо проще за один такт обработать один или несколько символов, представляющий в себе вполне конкретную информацию.
Чтобы процессору было удобнее оперировать данными, в нем специально выделяют регистры для записи объема информации, обрабатываемого ЦП за один такт. В каждом из них помещаться набор из 4, 8, 16, 32 или 64–х знаков кода, называемых «машинным словом».
Постараюсь описать этот процесс простыми словами и понятной аналогией. Это как учить читать ребенка, начавшего изучать алфавит. По буквам – долго и непонятно, а вот по слогам – проще. Причем, сначала малышу предлагают слова, специально разделенные на одно- двухбуквенные слоги. А когда он освоит этот навык – можно читать что-то посложнее, складывая слоги их трех-четырех букв.
Точно так же, инженеры в течение многих лет совершенствуют микропроцессоры, продолжая «обучать» их читать более длинные «машинные слова». Но для использования в технической документации такой термин не самый лучший вариант.
Поэтому величину, означающую размер блока информации, обрабатываемую CPU за один такт, назвали разрядность процессора. Этот параметр, так же как и «слово», измеряется в битах.
Прогресс разрядности процессоров
Самым первым серийным чипом стал 4-х разрядный Intel 4004, предназначенный исключительно для калькуляторов. С помощью комбинации из 4-х нулей или единиц можно было закодировать 2^4=16 символов. И этого с головой хватало для 10 цифр и 6-и знаков основных арифметических действий.
Я не зря привел пример с расчетом, чтобы показать, что в реальности, для эффективной работы ЦП в компьютерах, необходима большая разрядность. Ведь даже 8-и битные процессоры имеют существенные ограничения.
Поэтому чипмейкеры активно работали не только над технологией обработки кварцевых кристаллов, но и над микроархитектурой, представляющей собой систему взаимодействия отдельных компонентов процессора и обрабатываемых данных.

Ее третье поколение позволило в 1985 году создать 32-бинтный процессор Intel 80386. Работающий уже на архитектуре IA-32.
Прогресс не стоит на месте
Сама система x86 с начала своего существования регулярно получала всевозможные расширения, которые добавляли все новые возможности. А потребность в этом была постоянная: объемы обрабатываемых данных и размеры используемых файлов постоянно росли. И в решении сложных задач 32-разрядные процессоры уже были бессильны (блок объемом свыше 4 Гб в регистр ЦПУ уже не помещался).
«Интел» попыталась создать новую архитектуру IA-64 с обратной совместимостью, но скорость ее работы была неудовлетворительна.
Их прямые конкуренты, компания AMD, в решении этой проблемы достигли большего успеха. Они пошли проверенным путем. И в 2003 г ввели новое расширение для 32-битной архитектуры, назвав его AMD64.
Решение, реализованное в процессорах Opteron, Athlon 64 и Turion 64 оказалось настолько удачным, что Intel приобрели лицензию на набор управляющих инструкций. На базе этого уже создали свой продукт: архитектуру EM64T. Которая на сегодня используется во всех их процессорах.
Такие инновации позволили не только ускорить работу самого процессора. Но и дали возможность использовать шину памяти для перемещения файлов практически неограниченного объема.
Зная, что 64-разрядный процессор – это более прогрессивное решение, вы наверняка захотите выяснить, является ли таковым CPU, установленный на вашем компьютере. Я подскажу вам, где посмотреть эту информацию.
На что влияет разрядность ОС и процесора
И здесь у многих часто возникает вопрос: «Проц у меня 64-х битный, а операционная система на компе 32-х битная. Это что же получается, я не эффективно использую возможности железа моего компьютера?». Однозначно я вам не отвечу. Да это так.
А вот нюансы 32х битной ОС:
64-разрядная система – отличный вариант для игр, обработки видео и прочих емких программ. Но для нее лучше иметь ОЗУ с запасом. Почему? Да потому что она потребляет больше ресурсов. Ведь КПД использования его пространства такой операционкой может оказаться ниже чем у 32 битной;
Теперь, когда вы определили свои предпочтения по ОС, вернемся к разрядности процессора. Если она 32-битная, то можно установить только соответствующую систему. Если у вас 64-разрядный CPU, можете ставить любую версию операционки. Но не забывайте об объеме RAM.
На этом наше знакомство с разрядностью процессора закончено. Надеюсь, вы теперь сможете блеснуть своими знаниями по этой теме даже в беседе со специалистами.
До встречи на новых станицах моего блога и всем удачи.
32- или 64-разрядный процессор: в чем разница и что лучше для обычного пользователя ПК?
32- или 64-разрядный процессор компьютера – что лучше? Сегодня пользователи этим вопросом не заморачиваются по той простой причине, что все современные сборки ПК, как правило, комплектуются 64-разрядными процессорами. Но еще каких-то 5-6 лет назад споры о том, какой же процессор лучше — 32- или 64-разрядный – были популярнейшей темой различных компьютерных форумов в Интернете.
Что такое разрядность процессора, в чем заключается отличие 32- от 64-разрядного процессора, и как это в конечном счете влияет на работу и производительность ПК с позиции обычного пользователя? В этом всем попытаемся разобраться ниже.
0. Оглавление
1. Как узнать разрядность установленного на ПК процессора?
Чтобы узнать разрядность установленного на ПК процессора, лучше всего установить специальную программу, функционал которой предусматривает отображение детальной информации об аппаратных составляющих ПК. Например, программы CPU-Z или Speccy – их можно скачать c официальных сайтов совершенно бесплатно.
Запустите одну из этих программ, подождите, пока те просканируют систему и отобразят аппаратные характеристики ПК. Зайдите в раздел меню, в котором содержатся данные о центральном процессоре ПК – вкладки «CPU» в программе CPU-Z или «Центральный процессор» в Speccy.
Разрядность процессора отображается в графе «Инструкции», где выводятся данные о поддержке инструкций. Если процессор 64-разрядный, то в этой графе должно присутствовать об этом указание.
В программе «CPU» в зависимости от производителя процессора это либо «EM64T» (Intel 64), либо «x86-64» (AMD 64).
В программе Speccy все чуть проще – графа инструкции отображает либо «AMD 64», либо «Intel 64».
Если раздел «Инструкции» в обеих программах не отображает таких данных, это значит на ПК установлен 32-разрядный процессор.
Но встретить 32-разрядный процессор сегодня не так-то и просто, это должна быть очень старая сборка ПК, ведь начиная с первого 64-разрядного процессора AMD Athlon 64, представленного в 2003 году, и поздних моделей Pentium 4 от Intel, на рынок компьютерной техники производители поставляют только 64-разрядные процессоры.
2. Разрядность: что включает в себя этот термин?
Как видим, определить разрядность процессора, установленного на ПК очень просто, но что же включает в себя сам термин разрядность? Разрядность процессора это – число разрядов (их еще называют битами), которые процессор способен обработать за один раз.
Рост разрядности процессоров был обусловлен развитием компьютерных технологий.
В 1971 году компанией Intel был создан первый 4-разрядный процессор 4004. Чуть позднее появился 8-разрядный 8080, затем 16-разрядный 8086. Первый 32-разрядный процессор 80386 компания Intel создала в 1985 году, и он в дальнейшем стал базой для всех сегодняшних моделей компьютерных процессоров. А вот первенство в создании 64-разрядного процессора принадлежит компании AMD – в 2003 году она создала Athlon 64.
Термин разрядность применяется не только к процессорам, но также и к шинам. К примеру, технические характеристики видеокарт часто содержат указание разрядности шины памяти. Что касается определения термина разрядности шины, то здесь будет виднеться та же суть, что и у термина разрядности процессора. Так, разрядность шины это не что иное, как число бит, одновременно обрабатываемое шиной.
3. Каковы преимущества 64-разрядных процессоров для обычных пользователей ПК?
Для обычных пользователей, использующих ПК сугубо для своих личных нужд в рамках досуга, преимущество 64-разрядных процессоров заключается в возможности задействовать больше 4 Гб оперативной памяти. 64-разрядный процессор позволяет использовать 8, 16, 32 и даже более Гб оперативной памяти в работе ПК. Такая производительность необходима тем, кто использует ПК, загружая его многозадачностью, работая со сложными графическими программами или профессиональными видеоредакторами. И, конечно же, геймеры – для многих новинок игромира, для некоторых мощных видеоигр, начиная с 2011 года, может потребоваться как минимум 8 Гб оперативной памяти, чтобы играть на максимальном качестве игры.
Для использования такого преимущества 64-разрядного процессора, на ПК должна быть установлена 64-разрядная операционная система, специфика которой сможет раскрыть весь мощностной потенциал ПК. А вот если на ПК с 64-разрядным процессором и, к примеру, с 8 Гб оперативной памяти установить 32-разрядную операционную систему, придется довольствоваться ограничениями – оперативная память будет доступна только в объеме 4 Гб. И весь мощностной потенциал «железа» ПК останется нераскрытым.
Определить, на ПК установлена 32- или 64-разрядная Windows, можно, вызвав левой клавишей мышки контекстное меню на иконке «Мой компьютер» (или «Этот компьютер» в Windows 8 и 8.1). В меню выбираем «Свойства». Откроются основные системные характеристики, где в графе «Тип системы» и будет указана, какая Windows установлена — 32- или 64-разрядная.
Это же можно определить, не выходя из программы Speccy – в разделе «Операционная система».
32- и 64-разрядная Windows практически не отличаются ни установкой, ни настройкой, ни использованием. Скачать загрузочный образ Windows в Интернете или купить физический загрузочный диск можно очень легко и с одной, и с другой разрядностью операционной системы.
Смотрите также:
В данной статье будет подробно, в деталях, рассказано как создать нового пользователя в Microsoft SQL Server 2012 (в более старых редакциях, например в Microsoft SQL Server 2008 R2, набор действий…
Здесь будет рассказано как добавить нового пользователя для работы в системе 1С:Предприятие 7.7. 0. Оглавление Добавление пользователя в конфигураторе Настройки значений по умолчанию (только для конфигурации «Торговля и…
Как определить разрядность процессора — 32 или 64?
Разрядностью (или битностью) центрального процессора (ЦП) называется количество бит, которые ЦП может обрабатывать за одну команду. Разрядность определяет количество бит, отводимых хранение одной ячейки данных. То есть, если архитектура вашего процессора, например, 32 битная, то он может работать с числами, которые представлены в двоичном коде из 32 бит, причём обрабатывать эти числа он может за одну команду.
Таким же образом (за одну команду) могут обрабатываться данные и меньшей разрядности, просто их старшие биты будут игнорироваться. Современные ЦП могут работать c 8-ми, 16-ти, 32-х и 64-х разрядными типами данных. Все использующиеся сейчас ЦП в компьютерах либо 32, либо 64 разрядные.
Часто, читая описания ЦП, можно встретить обозначение x86 — это значит, что мы имеем дело с 32 битной архитектурой. Если же встречается надпись х64 – то можно сказать, что данный ЦП обладает битностью, равной 64.
Важно! Часто битность ЦП ошибочно принимается за основу при определении максимального объёма памяти, к которому он может обращаться. Это, естественно, не так. Шины адреса и данных практически любого ЦП имеют разную битность и никак не влияют друг на друга.
Значение битности ЦП играет не последнюю роль для пользователей, поскольку битности операционной системы (ОС) и процессора, которые используются друг с другом, должны совпадать. Однако, здесь работает принцип обратной совместимости: на 64 разрядный ЦП может быть установлена операционная система как 32 так и 64 разрядная.
Версия операционной системы в данном случае не играет роли: например, все ОС Windows или Linux, уже начиная с появления первых 64 разрядных ЦП имеют как 32 битные так и 64 битные сборки. То есть, существуют все версии Windows (от XP до 10-й), имеющие как 64 так и 32 битную среду.
Важно! Установить на ЦП семейств х86 ОС, в названии которой фигурирует «х64» невозможно! Мало того, невозможно запускать исполняемые файлы для 64 битных ЦП на 32 битных ОС.
Именно поэтому определение того, какие именно (32 или 64 разрядные) данные используются ЦП весьма важно. Часто от этого зависит работоспособность достаточно больших групп пользователей, использующих одинаковое программное обеспечение.
В данной статье будет рассмотрено, как узнать разрядность процессора при помощи различных способов.
Определение разрядности процессора
Существует множество способов, как определить разрядность процессора. Посмотреть информацию о ней можно либо при помощи программных средств, либо средств BIOS; в крайнем случае, можно просто увидеть маркировку ЦП и уже по ней определить, сколько же бит отводится на обработку данных. Иногда эту информацию получить совсем просто: например, если количество ядер ЦП больше одного, то этот ЦП – 64 разрядный.
Через командную строку
Один из самых эффективных способов, как определить разрядность процессора без использования дополнительных средств. Для его реализации следует запустить командную строку – открыть в меню «Пуск» пункт «Выполнить» (или нажать Win+R на клавиатуре) и в появившемся окне набрать команду «cmd»,после чего нажать «Ввод».
Откроется консоль командного процессора. В ней следует ввести команду «systeminfo». Результатом её выполнения будет длинный перечень параметров системы. Интересующий нас пункт называется «Процессор(ы):» В нём будет написано название модели ЦП. И обязательно указана его битность (либо цифрами 32 или 64, либо надписями «х86» или «х64»).
Через свойства компьютера
Можно определить, какую разрядность поддерживает процессор, посмотрев свойства системы.
Один из способов сделать это – войти в параметр «Система» панели управления и там, в разделе «Тип системы» можно будет увидеть её разрядность. Если она равна 64, то и ЦП тоже 64 битный.
Однако, как уже было сказано ранее, поскольку на 64 разрядный ЦП может быть поставлена 32 разрядная система, необходимо будет уточнить тип используемого ЦП. Для этого следует зайти в «Диспетчер устройств», ссылка на который есть на той же странице, в «Устройствах» выбрать ЦП и открыть в его свойствах вкладку «Сведения».
В этой вкладке интересующий нас параметр называется «ИД оборудования». В нём будет указан тип используемого процессора – 64 или 32 разрядный.
Альтернативой является исследование свойств устройства, называемого в Диспетчере устройств «Компьютер». В нём может содержаться описание применяемого типа ПК с указанием его битности.
Аналогично свойствам процессора, следует зайти в свойства компьютера и во вкладке «Сведения» посмотреть описание устройства. Параметр может также называться «Выводимое имя». В любом случае, в нём будет присутствовать либо надпись «х86», либо «х64», что и будет соответствовать битности используемого ЦП в 32 или 64 соответственно.
Узнать разрядность через интернет
Для этого достаточно набрать в строке поиска фразу «узнать разрядность онлайн». Первые 5-10 результатов поиска дадут ссылки на сайты, определяющие этот параметр. После этого следует перейти на этот сайт и активный контент автоматически опознает количество разрядов ЦП и версию ОС.
Важно! Исполнение активных компонентов может быть заблокировано браузером и в этом случае определить интересующий параметр не получится. Для этого следует разрешить выполнение активного содержимого на странице.
Через BIOS
Самый простой способ, не требующий наличия программного обеспечения вообще. При загрузке ПК следует войти в BIOS, нажав F2 или Del. Далее следует выбрать раздел «System Settings», «Main» или «CPU Settings» – в зависимости от производителя BIOS он может называться по-разному, и посмотреть значение параметра «Processor Type». В нём будет указана фирма производитель, модель ЦП, его частота и разрядность.
Собственная платформа. Часть 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-ом. Это мое сугубо личное мнение.
Выравнивание
Что такое выравнивание? Оставлю-ка я этот вопрос вам 🙂
Конец
Это конец первой главы нулевой части. Вся серия будет крутиться вокруг темы создания собственного процессора. Собственной операционной системы. Собственного ассемблера. Собственного компилятора и много чего другого.















