Что такое разная разрядность

Разрядность программ 32 и 64 бита: что это значит?

Что такое разная разрядность. Смотреть фото Что такое разная разрядность. Смотреть картинку Что такое разная разрядность. Картинка про Что такое разная разрядность. Фото Что такое разная разрядность

Рассказываем, откуда берется разрядность программ, при чем здесь процессор и оперативная память.

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

Что такое разрядность?

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

Если говорить простыми словами, разрядность – это объем информации в битах, которым процессор обменивается с оперативной памятью за один подход. 64-битный процессор более эффективен с точки зрения производительности, чем 32-битный, так как в один такт он передает в ОЗУ 64 бита данных, а не 32.

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

Важный момент касается оперативной памяти.

32-битные процессоры распознают ограниченный объем ОЗУ – не более 4 ГБ. 64-битные такого жесткого лимита не имеют. Соответственно, чтобы пользоваться большим количеством оперативной памяти – свыше 4 ГБ – в компьютере должен стоять 64-битный ЦПУ и вся аппаратная часть (отчасти и программная тоже) должна быть подобрана таким образом, чтобы весь установленный объем ОЗУ мог быть задействован.

Теоретически у 64-разрядных процессоров тоже есть ограничение по «видимости» ОЗУ – 16,8 миллионов ТБ. Но в обозримом будущем в компьютерах не будет использоваться и сотой доли этого числа.

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

Базовые версии Microsoft Windows имеют разрядность 32 бита. В них приложения испытывают те же ограничения по объему используемой оперативной памяти. Даже в самой совершенной и профессиональной версии Windows базового уровня 4 ГБ – это максимальный объем ОЗУ, который может быть задействован приложениями.

Когда 64-разрядные процессоры стали доступны широкому кругу потребителей, Microsoft и Apple начали проектировать 64-разрядные ОС, без которых пользователи не увидели бы прироста вычислительной мощности. Первой полностью 64-битной ОС стала Mac OS X Snow Leopard 2009 года выпуска, а первым смартфоном с 64-битным чипсетом стал iPhone 5s на базе Apple A7.

Что такое разная разрядность. Смотреть фото Что такое разная разрядность. Смотреть картинку Что такое разная разрядность. Картинка про Что такое разная разрядность. Фото Что такое разная разрядность

На официальном сайте Microsoft есть страница, где перечислены ограничения по памяти для различных версий Windows, включая серверные сборки. Но в целом, если вы работаете на последней версии Windows 10, о каких-либо лимитах беспокоиться не стоит.

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

На самом деле далеко не всем программам требуется более 4 ГБ оперативной памяти. Это требование характерно для графических и CAD-редакторов, современных видеоигр и т.п. Менее требовательные к ресурсам приложения могут разрабатываться на основе 32-разрядной архитектуры и успешно запускаться в 64-битной среде без дополнительных настроек. Исключением из правила являются антивирусы и драйвера: для корректной работы их архитектура должна соответствовать архитектуре среды.

То же самое, да не совсем

Доказательство того, что процессор вашего компьютера способен работать в режимах 32 и 64 бит, вы можете найти самостоятельно. В 64-битной версии Windows на диске С есть две папки Program Files – просто Program Files и Program Files x86. В первую при установке попадают 64-битные программы, а во вторую – 32-битные.

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

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

Источник

Разрядность

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

* разрядность процессора (разрядность его машинного слова)

* разрядность шины данных

* разрядность ЦАП и АЦП

* разрядность звукового файла.

Связанные понятия

В информатике бу́фер (англ. buffer), мн. ч. бу́феры — это область памяти, используемая для временного хранения данных при вводе или выводе. Обмен данными (ввод и вывод) может происходить как с внешними устройствами, так и с процессами в пределах компьютера. Буферы могут быть реализованы в аппаратном или программном обеспечении, но подавляющее большинство буферов реализуется в программном обеспечении. Буферы используются, когда существует разница между скоростью получения данных и скоростью их обработки.

Упоминания в литературе

Связанные понятия (продолжение)

Разработка синхронных цифровых интегральных схем на уровне передач данных между регистрами (англ. register transfer level, RTL — уровень регистровых передач) — способ разработки синхронных (англ.) цифровых интегральных схем, при применении которого работа схемы описывается в виде последовательностей логических операций, применяемых к цифровым сигналам (данным) при их передаче от одного регистра к другому (не описывается, из каких электронных компонентов или из каких логических вентилей состоит схема.

Источник

Сумма разрядных слагаемых

Что такое разная разрядность. Смотреть фото Что такое разная разрядность. Смотреть картинку Что такое разная разрядность. Картинка про Что такое разная разрядность. Фото Что такое разная разрядность

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

Сумма разрядных слагаемых

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

35 = 3 десятка + 5 единиц = 3*10 = 30 + 5 = 35.

30 — разрядное слагаемое; 5 — разрядное слагаемое.

86 = 8 десятков + 6 единиц = 8*10 = 80 + 6 = 86

80 — разрядное слагаемое; 5 — разрядное слагаемое.

356 = 3 сотни + 5 десятков + 6 единиц = 3*100 + 5*10 + 6 = 300+50+6 = 356.

300, 50, 6 — разрядные слагаемые.

Разряды и классы чисел

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

В многозначном числе цифры справа налево разбиваются на группы по три цифры. Такие группы называют классами.

Что такое разная разрядность. Смотреть фото Что такое разная разрядность. Смотреть картинку Что такое разная разрядность. Картинка про Что такое разная разрядность. Фото Что такое разная разрядность

Названия классов многозначных чисел:

Чтобы чтение многозначного числа не превращалось в головоломку, при записи лучше разграничивать число по классам. Вот так:

Читаться такое число будет слева направо: триста сорок пять миллиардов четыреста шестьдесят шесть миллионов сто двадцать девять тысяч триста пятьдесят.

Разряд — это место, которое занимает цифра в записи многозначного числа.

Разряды считаются справа налево. Первая цифра справа в записи числа относится к первому разряду.

Разрядные единицы — это единицы, десятки, сотни, тысячи, миллионы.

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

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

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

Это значит, нужно выяснить, сколько сотен заключается в тысячах и в сотнях этого числа. 5689 — на третьем месте в классе единиц стоит цифра 6, значит в числе есть 6 сотен. Следующая влево цифра — 5 (тысячи). 1 тысяча = 10 сотен. 5 тысяч = 50 сотен. Всего в числе 56 сотен.

Если в разряде стоит цифра 0, то это означает отсутствие единиц, десятков, сотен и т.д., в зависимости от того, где именно содержится цифра.

Иногда бывает необходимо не только разложить число на разрядные слагаемые, но и определить количество единиц какого-то определенного разряда.

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

Шесть миллионов пятьдесят семь тысяч триста восемьдесят шесть

6 057 386 = 6 * 1 000 000 + 0 * 100 000 + 5 * 10 000 + 7 * 1000 + 3 * 100 + 8 * 10 + 6 = 6 000 000 + 50 000 + 7 000 + 300 + 80 + 6.

Из чего состоит это число? Из:

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

Определите, сколько единиц в числе 5 068 252.

1. Определяем сколько всего единиц в числе.

2. Определяем количество десятков.
Записываем число без первого разряда (единицы).

3. Определяем количество сотен.
Записываем число без первого
и второго разрядов (десятки и сотни).

4. Определяем количество единиц тысяч.
Записываем число без первого, второго,
третьего разрядов (единицы, десятки, сотни).

5. Определяем количество десятков тысяч.
Записываем число без первого, второго, третьего,
четвертого разрядов (единицы, десятки, сотни, единицы тысяч).

6. Определяем количество сотен тысяч.
Записываем число без десятков тысяч, единиц тысяч,
сотен и единиц.

7. Определяем количество единиц миллионов.
Записываем число без сотен тысяч, десятков тысяч,
единиц тысяч, сотен, десятков, единиц.

Расписав таким образом число, мы выяснили, что в числе 5 068 252: 5 единиц класса миллионов (3 класс); 68 единиц класса тысяч (2 класс); 252 единицы класса единиц (1 класс).

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

Примеры

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

Представьте в виде суммы разрядных слагаемых:

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

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

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

Источник

Разряды и классы чисел

Что такое разная разрядность. Смотреть фото Что такое разная разрядность. Смотреть картинку Что такое разная разрядность. Картинка про Что такое разная разрядность. Фото Что такое разная разрядность

Числа и цифры

Числа — это единицы счета. С помощью чисел можно сосчитать количество предметов и определить различные величины.

Для записи чисел используются специальные знаки — цифры. Всего их десять: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0.

Натуральные числа — это числа, которые мы используем при счете. Вот они: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …

От количества цифр в числе зависит его название.

Число, которое состоит из одного знака, называется однозначным. Наименьшее однозначное — 1, наибольшее — 9.

Число, которое состоит из двух знаков цифр, называется двузначным. Наименьшее двузначное — 10, наибольшее — 99.

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

Каждая цифра в записи многозначного числа занимает определенное место — позицию.

Классы чисел

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

Что такое разная разрядность. Смотреть фото Что такое разная разрядность. Смотреть картинку Что такое разная разрядность. Картинка про Что такое разная разрядность. Фото Что такое разная разрядность

Названия классов многозначных чисел справа налево:

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

А теперь прочитаем число единиц каждого класса слева направо:

Разряды чисел

От позиции, на которой стоит цифра в записи числа, зависит ее значение. Например:

Можно сформулировать иначе и сказать, что в заданном числе 1 123 цифра 3 располагается в разряде единиц, 2 в разряде десятков, 1 в разряде сотен, а 1 служит значением разряда тысяч.

Проясним, что такое разряд в математике. Разряд — это позиция или место расположения цифры в записи натурального числа.

У каждого разряда есть свое название. Слева всегда живут старшие разряды, а справа — младшие. Чтобы быстрее запомнить, можно использовать таблицу.

Что такое разная разрядность. Смотреть фото Что такое разная разрядность. Смотреть картинку Что такое разная разрядность. Картинка про Что такое разная разрядность. Фото Что такое разная разрядность

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

Низший (младший) разряд многозначного натурального числа — разряд единиц.

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

Разрядные единицы обозначают так:

Каждые три разряда, следующие друг за другом, составляют класс. Первые три разряда: единицы десятки и сотни — образуют класс единиц (первый класс). Следующие три разряда: единицы тысяч, десятки тысяч и сотни тысяч — образуют класс тысяч (второй класс). Третий класс будут составлять единицы, десятки и тысячи миллионов и так далее.

Чтобы легче понимать математику — записывайтесь на наши курсы по математике!

Потренируемся

Пример 1. Записать цифрами число, в котором содержится:

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

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

Пример 2. Сколько сотен содержится в числе 6284?

В числе 6284 на третьем месте в классе единиц стоит цифра 2, значит, в числе есть две сотни.

Следующая цифра слева — 6, означает тысячи. Так как в каждой тысяче содержится 10 сотен то, в 6 тысячах их заключается 60.

Значит, в данном числе содержится 62 сотни.

Цифра 0 в любом разряде означает отсутствие единиц в данном разряде.

Проще говоря, цифра 0 в разряде десятков означает отсутствие десятков, в разряде сотен — отсутствие сотен и т. д. В том разряде, где стоит 0, при чтении числа ничего не произносится:

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

Источник

О разрядности процессоров

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

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

Представьте себе, что вокруг благодатные 80-е, в мире (всё ещё) десятки производителей ЦП, и вы работаете в одном из них над очередным поколением. Никаких 256-битных SSE8, встроенных GPU и 5-канальных контроллёров памяти на свете пока нет, но у вас уже есть готовый 16-битный процессор (точнее, «16-битный» пишется в технической документации), в котором 16 бит везде и во всём — от всех внешних шин до архитектурного размера обрабатываемых данных. Реальным примером такого ЦП могут быть первые однокорпусные (правда, не однокристальные) ЦП для архитектуры DEC PDP-11. И вот приходит задание руководства — разработать новое, обратно совместимое поколение этого же ЦП, которое будет 32-битным — не уточняя, что понимается под последним. Именно это понимание и предстоит прояснить в первую очередь. Итак, наш главный вопрос: что именно надо удвоить по разрядности в нашем пока насквозь 16-битном ЦП, чтобы получившийся процессор мог называться 32-битным? Чтобы решать задачу было легче, применим два подхода: систематизируем определения и посмотрим на примеры.Систематизируем

Первое, что приходит в голову — разрядность чего именно считать? Обратимся к определению любой информационной системы: её три основных функции — это обработка, хранение и ввод-вывод данных, за которые отвечают, соответственно, процессор(ы), память и периферия. Учитывая, что сложная иерархически самоподобная система состоит из многих компонент, можно утверждать, что такое разделение функций сохраняется и на компонентном уровне. Например, тот же процессор в основном обрабатывает данные, но он также обязан их хранить (для чего у него есть относительно небольшая память) и обмениваться с другими компонентами (для этого есть разные шины и их контроллёры). Поэтому будем функционально разделять разрядности обработки, хранения и обмена информации.

Рискну предположить, что все производители любого программируемого «железа», особенно процессоров, на 90% стараются не для конечных пользователей, а для программистов. Следовательно, с точки зрения производителей процессор должен выполнять нужные команды нужным образом. С другой стороны, детали структуры кристалла (топологические, электрические и физические параметры отдельных транзисторов, вентилей, логических элементов и блоков) могут быть скрыты не только от пользователя, но и от программиста. Выходит, что разрядность надо отличать и по реализации — физическую и архитектурную.

Следует добавить, что программисты тоже бывают разные: большинство пишут прикладные программы на языках высокого уровня с помощью компиляторов (что делает код до некоторой степени платформонезависимым), некоторые пишут драйверы и компоненты ОС (что заставляет более внимательно относиться к учёту реальных возможностей аппаратной части), есть творцы на ассемблере (явно требующем знания целевого процессора), а кто-то пишет сами компиляторы и ассемблеры (аналогично). Поэтому под программистами далее будем понимать именно тех, для кого детали аппаратной реализации важны если не для написания программы вообще, то хотя бы для её оптимизации по скорости — «архитектурная» разрядность чего-либо будет относиться именно к программированию на родном машинном языке процессора или более удобном ассемблере, не залезая при этом в нутро ЦП (это уже вопросы микроархитектуры, которую мы для большего различия и назвали физической реализацией). Описанные нюансы всё равно влияют на всех программистов, т.к. языки высокого уровня почти всегда переводятся компиляторами в машинный код, а компиляторы тоже должен кто-то написать. Исключения в виде интерпретируемых языков тоже не стоят в стороне — сами интерпретаторы тоже создаются с помощью компиляторов.

Осталось рассмотреть, разрядность какой именно информации нам интересна. Что вообще потребляет и генерирует ЦП в информационном смысле? Команды, данные, адреса и сигнально-управляющие коды. О последних речь не идёт — их разрядность жёстко зафиксирована в конкретной аппаратной реализации и в большинстве случаев программно не управляема. Чуть трудней с командами — в семействе архитектур RISC, например, разрядность любого обращения к памяти должна быть равна физической разрядности шины данных процессора, в т.ч. и при считывании кода (кроме некоторых послаблений в современных ARM и PowerPC). Это хорошо для ЦП — нет проблем с невыровненным доступом, все команды имеют одинаковую, либо переменную, но просто вычисляемую длину. Зато плохо для программиста — RISC это усечённый набор команд, которые ещё и занимают больше места, чем при более компактном кодировании (для того же алгоритма нужно больше команд, но и для того же числа команд надо больше байтов). Поэтому именно CISC-парадигма завоевала наибольший подход с её разнообразием и переменной длинной команд, не равной разрядности чего-либо. Разумеется, все современные ЦП внутри — настоящие RISC, но это только физически, а не архитектурно. Остались только два вида информации — данные и адреса. Их и рассмотрим.Собираем

У нас имеется три критерия видов разрядности: функциональный (обработки, хранения и обмена), реализационный (физическая и архитектурная) и типовой (данных и адресов). Итого уже 12 видов этой непонятной штуки. Предположим, что на каждую комбинацию критериев для нашего исходного ЦП мы отвечаем «16-битная» (и физическая разрядность обработки данных, и архитектурная хранения адресов, и все остальные). Теперь посмотрим, какие из этих вопросов обязательно должны давать ответ «32-битная», чтобы получившийся процессор оказался именно таким.

Начнём с архитектурной части. Должен ли ЦП хранить данные и адреса в логическом 32-битном формате, чтобы называться 32-битным? Насчёт данных, очевидно, да, а вот по поводу адресов всё не так просто. Почти все 8-битные (по данным) ЦП имеют возможность хранить 16-битные адреса в парах регистров (иначе им не видать распространённой на этих платформах 16-битной адресации), но от этого их не называют 16-битными. Может быть, если ЦП сможет хранить 32-битные данные, но всего-то 16-битные адреса, его уже можно называть 32-битным.

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

Перейдём на физическую реализацию. Должен ли ЦП хранить данные и адреса в физически 32-битном формате? Оказывается, не обязательно, т.к. для 32-битных операндов можно спарить регистры, чем успешно пользовались ещё 8-битные ЦП, начиная с i8080. А зилоговские 16-битные Z8000 могли даже счетверять регистры, получая 64-битный аргумент (только для данных). Это не так эффективно, т.к. полный объём данных, умещающийся в регистровом файле, не увеличится, но это и не требовалось. Зато всегда есть возможность обратиться и к старшей, и к младшей половине виртуального 32-битного регистра — камень в огороды архитектур IA-32 и MC68k, где можно обращаться только к младшей половине (в IA-32 — ещё и с префиксом, что замедляет выполнение).

Идём далее. Должен ли ЦП обрабатывать данные и адреса 32-битными физическими порциями? Оказывается, и это не требуется, операнды можно обрабатывать половинками в функциональных устройствах 16-битного размера. Стоит вспомнить процессор Motorola MC68000, применявшийся в первых Макинтошах, Амигах, Атари и других популярных машинах — он считался 32-битным, в нём есть 32-битные регистры, но нет ни одного 32-битного ФУ (оно появилось только в 68020). Зато есть целых три 16-битных АЛУ, два из которых умеют спариваться при выполнении 32-битной операции. У i8080 и Z80 8-битные АЛУ выполняли 16-битные операции для вычисления адреса последовательно над его байтами. Позже эта история повторилась с набором SSE и его 128-битными операндами, которые поначалу обрабатывались на 64-битных ФУ.

Наконец, обмен: нужно ли процессору физически принимать и передавать данные 32-битными порциями с 32-битной адресацией? На первый вопрос дали ответ почти все производители ЦП, выпустив чипы с половинной шириной шины: 8 бит для 16-битного i8088, 16 бит для 32-битных MC68000/010 и i80386SX/EX/CX, и даже 8 бит для 32-битного MC68008. С физической разрядностью шины адреса куда веселее. Начнём с того, что для многобайтовых шин данных (т.е. начиная с 16-битной) физическая адресация памяти может происходить по словам или по байтам. В первом случае на шину адреса всегда подаётся адрес слова, а шина данных считывает или записывает нужную его часть — от отдельного байта до слова целиком. Для обозначения разрядности доступа может применяться отдельная шина байт-маски (в архитектуре x86 такой приём начал применяться со времён i386 — по биту на каждый байт шины данных), либо комбинация управляющих сигналов с младшими битами шины адреса, которые в этом режиме не нужны (для 32-биной шины данных адрес слова нацело делится на 4, а потому младшие 2 бита шины адреса всегда равны нулю) — так было до выхода i386. Случай же адресации байтов возможен лишь при динамической подстройке ширины шины и из широко известных ЦП применялся только в MC68020/030. В результате к сегодняшнему дню используется именно адресация слов вместе с байт-маской, поэтому физическая разрядность шины адреса оказывается меньше её логической ширины на число бит, на единицу меньшее разрядности шины данных в байтах. Из чего следует, что 32-битная физическая шина адреса может быть только при 8-битной шине данных, на что ни один архитектор и инженер в здравом уме не пойдёт по очевидным соображениям.

Но это ещё не всё. Зачем нам вообще 32-битная физическая или логическая адресация? Середина-конец 80-х, на рынке только-только появились мегабитные микросхемы памяти, типичный объём памяти для ПК пока что измеряется сотнями килобайт, но чуть позже — мегабайтами. А 32-битная адресация позволит получить доступ к 4 ГБ физического ОЗУ! Да кому вообще такое может понадобиться в ближайшие лет 20 в персоналках?! Неудивительно, что первые популярные «32-битные» ЦП имели совсем не 32 бита логической ширины шины адреса: MC68000 имел 24 (23 физических + 1 для управления разрядами), а MC68008 — и вовсе 20. Intel 386SX (вышедший на 3 года позже оригинального полностью 32-битного i80386), помимо уполовинивания шины данных, сократил и шину адреса до 24 (23 физических) бит, а его встраиваемые версии 386EX/CX имели 26-битную шину. Более того, первые чипсеты, позволявшие оперировать 32-битными адресами, появились лишь в 90-х, а первые материнские платы, имевшие достаточное число слотов памяти, чтобы набрать >4 ГБ модулями максимального на тот момент размера — лишь в 2000-х. Хотя первые ЦП с 64-битной физической шиной адреса (IBM/Motorola PowerPC 620) появились аж в 1994 г.. Выводим

Итак, физически в процессоре вообще ничего не требуется делать 32-битным. Достаточно лишь архитектурно убедить программиста, что ЦП выполняет 32-битные операции одной командой. И хотя она при отсутствии полноценных внутренних ресурсов неизбежно будет декодироваться в цепочки микрокода для управления 16-битными физическими порциями информации и аппаратными блоками — это уже программиста не волнует. Так что же, достаточно переписать прошивку, переделать декодер и схему управления, и вот наш 16-битный процессор сразу стал 32-битным?

Как известно, любую хорошую идею можно довести до абсурда, и тогда она сама себя дискредитирует. Увеличение разрядности ЦП — не исключение. На этом месте архитектурщик сразу должен задаться вопросом — а зачем всё это? Увеличивать разрядность данных хорошо для ускорения работы с ними (часто требуется обрабатывать значения, не умещающиеся в 16 бит), а адресов — для получения возможности оперировать большими объёмами данных (ограничение в 64 КБ для 16-битной адресации, кое-как ослабленное сегментной моделью IA-16, сковывало программистов уже в середине 80-х). Можно, конечно, сделать страничную адресацию с программно переключаемыми банками (могли же 8-битные ЦП адресовать 1 МБ на популярных дешёвых ПК и игровых приставках), но ценой усложнения программ и замедления доступа к памяти. Аналогично — разве имеет смысл делать 32-битность для данных такой, что она почти не ускоряет производительность по сравнению с обработкой 32-битных чисел на 16-битной платформе под управлением программы, а не микрокода? Таким образом мы только упростим программирование, сэкономив на числе команд, но не получим скачок в скорости. Из чего мы приходим к выводу — увеличение разрядности должно реализовываться так, чтобы оно реально привело к качественному (больше памяти) и количественному (быстрее операции) скачку возможностей архитектуры. «Больше памяти» здесь относится именно к качественному развитию, т.к. многие алгоритмы и приложения вообще откажутся работать при недостатке ОЗУ, в то время как даже медленный процессор всё равно рано или поздно программу выполнит. Виртуальная память с дисковой подкачкой бессмысленна при менее чем 32-битной реализации.

Но означает ли всё это, что в ЦП как можно больше ресурсов, и аппаратных, и архитектурных, должны быть 32-битными, чтобы его можно было бы назвать полноценным 32-битным процессором? Совсем нет. Возьмём тот же MC68000 — у него 32-битная архитектура для данных и адресов и 32-битные регистры, но 16-битные АЛУ и внешняя шина данных и 24-битная физическая внешняя адресация. Тем не менее, недостаточная «32-битность» не мешает ему обгонять появившийся на 3 года позже «16-битный» 80286: на популярном в 1980-е бенчмарке Dhrystones MC68000 на 8 МГц набирает 2100 «попугаев», а 286 на 10 МГц — 1900 (также 16-битный i8088 на 4,77 МГц — 300).

Но всё это нам не поможет ответить на вопрос — что же такое разрядность процессора? В момент, когда мы уже было пришли к некоему заключению, на сцене появляется новый герой — тип данных. Всё вышеизложенное имело отношение лишь к целочисленным вычислениям и их аргументам. Но ведь есть ещё и вещественные. Кроме того, пока что мы оперируем скалярными величинами, но есть ещё и векторные. А ведь, по слухам, Intel намерена встроить вещественный сопроцессор прямо внутрь своего нового 80486 (напомню: на дворе у нас, условно — 80-е годы). С учётом того, что внутреннее физическое и архитектурное представление данных (с адресами FPU не работает) 80-битное — как же тогда называть «четвёрку» — «32/80-битным» процессором? Вернёмся обратно в настоящее — как называть Pentium MMX, который откусил 64 бита от каждого 80-битного скалярного вещественного регистра и назвал их целочисленным векторным регистром? А Pentum Pro/II с 256-битной шиной данных между кэшем L2 и ядром? (Ещё ранее MIPS R4000 и его варианты имели внутренний контроллёр L2 с внешней 128-битной шиной до самого кэша.) А как назвать Pentium III с его 128-битными регистрами XMM, хотя в каждом таком векторе могут пока храниться лишь 32-битные компоненты, а обрабатываться лишь парами в 64-битных ФУ, но не четвёрками? А как воспринимать готовящиеся сейчас для новых архитектур (в частности, Intel Larrabee) команды векторной адресации типа Scatter и Gather, где части векторного регистра воспринимаются как адреса, а не данные, и потому адресация тоже может считаться ххх-битной?

Современный спор о переходе с 32-битной на 64-битную платформу повторяет эту историю с дополнениями, ещё более подсаливающими и так разнообразное по вкусу блюдо. Прежде всего, если посмотреть на темпы удвоения разрядности (что бы под ней не понимали) однокристальных ЦП, то окажется, что переход от первых 4-битных к первым 32-битным произошёл всего за 8 лет — c 1971 г. (i4004) по 1979 г. (MC68000 и куда менее известный NS32016). Следующее удвоение до 64 бит потребовало 10 лет — i860 имел 32-битное целое скалярное АЛУ и 32-битные универсальные регистры со спариванием, но 64-битные FPU и целочисленное векторное ФУ, 64-битные внешние шины и, впервые, внутреннюю 128-битную шину ядро-кэш. А пока 64 бита добрались до ПК — прошло ещё лет 15, хотя 64-битный доступ к памяти (через 64-битную же шину данных, но для «32-битного» процессора) появился уже в первых Pentium в 1993 г.. А дело в том, что для целочисленных скалярных вычислений два главных типа операндов — данные и адреса — пока достаточно было иметь лишь 32-битными. Об избыточности 32-битной адресации для 80-90-х гг. уже сказано, но и жёсткая необходимость в 64-битных целочисленных вычислениях, в отличие от 32-битных, также до сих пор не возникала, да и не просматривается и сейчас. Для целых чисел диапазон от –2·10 9 до 2·10 9 или от 0 до 4·10 9 покрывает подавляющее большинство нужд, а редкие моменты 64-битности вполне удовлетворяются дедовским способом — операциями над частями операндов с переносом, что не так уж сильно медленнее и доступно с первых моментов появления 32-битных архитектур. Дополнительной пикантности добавляет тот факт, что 64-битная арифметика над целыми числами в архитектуре x86 появились ещё до AMD64 и EM64T, причём сразу векторная — начиная с набора SSE2 (2001 г.) существуют команды paddq и psubq для сложения и вычитания целых 64-битных компонентов, а команды 32-битного перемножения для любой архитектуры дают 64-битное число (команды деления, соответственно — его принимают; аналогично для многих 16-битных платформ, включая IA-16).

Разрядности некоторых процессоров для ПК

КритерийРазрядность
Функциональныйобработкихраненияобмена
Реализационныйфизич.архитектурн.физич.архитектурн.физич.архитектурн.
Типовой (D: данных; A: адресов)DADADADADADA
i8080/85, Z80888-1616888-16168168-1616
Z800016168-641616168-64168-16238-6423
MC68000/010 (MC68008)16168-323232328-32328-16 (8)24 (20)8-3232
MC68020/03032328-323232328-32328-32328-3232
i8086/186* (i8088/188*)16168-161616168-16168-16 (8)208-1620
i8028616168-161616168-16168-16248-1624
i80386DX32328-323232328-32328-32328-3232
i80386SX (EX/CX)32328-323232328-32328-1624 (26)8-3232
i86032/64|64328-64/64|643232/64/32328-64/64/643264648-6464
i8048632/80328-32/803232/80328-32/803232328-8032
Pentium, K5 (Pentium Pro)32/80328-32/803232/80328-32/80326432 (36)8-8032 (51)
Pentium MMX (Pentium II)32/80|64328-32/80|643232/80|64328-32/80|64326432 (36)8-8032 (51)
K6 (K6-2)32/80| 64(/64)328-32/80| 64(/64)3232/80| 64(/64)328-32/80| 64(/64)3264328-8032
Athlon32/80| 64/64328-32/80| 64/643232/80| 64/64328-32/80| 64/643264368-8051
Athlon XP32/80| 64/64328-32/80| 64/32-1283232/80|64/128328-32/80| 64/1283264368-12851
Pentium III (Pentium 4/M, Core)32/80| 64/64328-32/80| 64(+128)/32-1283232/80| 64(+128)/128328-32/80| 64(+128)/1283264368-12851
Pentium 4 D/EE (Athlon 64*)64/80| 64/64648-64/80|64 + 128/32-1286464/80|64 + 128/128648-64/80|64 + 128/1286464(+16)408-12852
Atom32-64/80| 64/64-128648-64/80|64 + 128/32-1286464/80|64 + 128/128648-64/80|64 + 128/1286464368-12851
Core 2 (i7*)64/80| 128/128648-64/80|64 + 128/32-1286464/80|64 + 128/128648-64/80|64 + 128/1286464 (192+16)408-12852
Athlon II*, Phenom (II)*64/80| 128/128648-64/80|64 + 128/32-1286464/80|64 + 128/128648-64/80|64 + 128/12864128+1640 (48)8-12852

* — Мультиплексированная шина данных и адреса (для ЦП с интегрированным контроллёром памяти — только межпроцессорная)
«A/B|C/D» — для данных указана разрядность скалярного целого / вещественного | векторного целого / вещественного доменов
«X+Y» — имеет домены этого вида двух разрядностей
«X-Y» — в зависимости от команды или ФУ принимает все промежуточные значения с целой степенью двойки

Если вы дочитали до этого места, то объявленная цель статьи, скорее всего, уже достигнута, а Идеальное Конечное Точное Определение разрядности так и не найдено. Может быть, его вообще нет, и это даже хорошо. В конце концов, если компьютер это главный инструмент для работы с информацией, то каждая IT-технология это метод улучшения работы компьютера. Разрядность сама по себе ничего не даст в отрыве от всего остального арсенала высоких инфотехнологий. PDA/коммуникаторы, мобильники, нетбуки, медиа-плееры и прочая карманная электроника, а также гигантское количество встроенных контроллёров и бортовых компьютеров отлично работают, увеличивая свою популярность и без всякой 64-битности. Так зачем тогда переходят на большие разрядности? Зачем, например, никому пока не нужная 64-битность в Intel Atom для нетбуков, где 8 ГБ памяти мало того, что никому не нужны, так ещё и за пару часов досуха выжмут батарею, а научные или экономические вычисления (где могут потребоваться 64 целых бита) никто запускать не будет? Один из возможных ответов: «потому что мы можем». Дополнительная пара миллионов транзисторов для удвоения ещё оставшихся 32-битными блоков утонет каплей в море вентилей, уже потраченных на всё остальное в этом же чипе. Галопирующий прогресс микроэлектроники как главного паровоза IT сделал интегральный транзистор таким дешёвым, что теперь лакомый для любого маркетолога шильдик «64 bit» обойдётся потребителю в десяток лишних центов, обеспечивая совсем не бутафорское, а вполне реальное ускорение на 10-50 % в 1-5 % приложений. И если мелкая овчинка стоит почти бесплатной выделки, почему нет?

Источник

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

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