→ Единицы измерения объема информации. Что такое бит и байт (килобайт, мегабайт, гигабайт, терабайт), а также особенности единиц измерения информации Сколько бит в байте при использовании двоичной системы в информатике

Единицы измерения объема информации. Что такое бит и байт (килобайт, мегабайт, гигабайт, терабайт), а также особенности единиц измерения информации Сколько бит в байте при использовании двоичной системы в информатике

NUSH («Наш») - блочный алгоритм симметричного шифрования, разработанный Анатолием Лебедевым и Алексеем Волчковым для российской компании LAN Crypto.

NUSH имеет несколько различных вариантов, имеющих разный размер блока (64, 128, 256 бит), различное число раундов (в зависимости от размера блока равно 36, 128 или 132 раунда) и использует длину ключа в 128, 192 или 256 бит. Алгоритм не использует S-блоки, а только такие операции, как AND, OR, XOR, сложение по модулю и циклические сдвиги. Перед первым и после последнего раунда проводится «отбеливание» ключа.

Данный алгоритм был выдвинут в проекте NESSIE , но не был выбран, так как было показано, что линейный криптоанализ может быть эффективнее, чем атака перебором.

На основе алгоритма шифрования можно построить и другие алгоритмы. Несколько их них изложены в настоящей статье.

Описание алгоритма

Шифрование

Введём обозначения. Пусть - длина шифруемого блока открытого текста . (start key) - выбирается по некоторому расписанию на основе ключа К. Побитово добавляется к исходному тексту: После этого происходит r-1 раундов, задаваемых следующими уравнениями, в которых (Round subKey)- раундовые подключи, # - побитовая конъюнкция или дизъюнкция , выбирается в соответствии с расписанием, , - известные константы, >>>j - циклический сдвиг вправо на j бит:

Последняя итерация отличается от основных только отсутствием перестановки после вычисления выражений в правых частях равенств:

Выход: зашифрованный блок

Расшифрование

По общей формуле для обращения произведения операторов строится и процедура расшифрования.

Выполняется одна итерация по расшифрованию:

( - длина , можно производить циклический сдвиг влево на )

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

Комментарии

В некоторых источниках считают, что процедура шифрования состоит из в 4 раза меньшего числа раундов, состоящих из 4 итераций приведённого выше типа (без начального и конечного сложения по модулю 2). Так, сами авторы шифра записывали свой алгоритм следующим образом:

  • Определяли функцию R - «итерацию»:
  • Описывали начальное преобразование (сложение («+») с KS)
  • Говорили, что раунд состоит из 4 итераций:

где - к итерационному ключу добавляется соответствующая константа

  • Описывали конечное преобразование (сложение («+») с KF).

Алгоритмы аналогичны, поскольку операция «+» определена авторами отдельно от основного описания метода шифрования. Следует отметить, что расписание операций «+» можно изменить, выбирая обратимые бинарные операции над векторами длины . Нелинейная операция обычного сложения с игнорированием переполнения призвана усложнить линейный криптоанализ. А операция XOR помогают избежать дифференциального криптоанализа. В дальнейшем будет рассматриваться первое описание алгоритма, приведённое в статье китайских математиков, произведших линейный криптоанализ алгоритма.

Выбор операций «+» был произведён по итогам исследований распараллеливания вычислений на процессорах типа Pentium. Выбор изменения порядка регистров a, b, c, d от раунда к раунду ускоряет появление диффузии и конфузии. Базовые операции (XOR, сложение по модулю , OR, AND) и их порядок ускорили выполнение алгоритма, реализованного на языке С на большинстве платформ, а имплементация алгоритма на ассемблере достаточно короткая.

Простота реализации

Из приведённого описания видно, что для реализации алгоритма необходимо:

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

Параметры

Константы и

Длина N блока составляет 64 бита

Проводится 36 раундов

i i i i
0 ac25 9 6a29 18 96da 27 d25e
1 8a93 10 6d84 19 905f 28 a926
2 243d 11 34bd 20 d631 29 1c7b
3 262e 12 a267 21 aa62 30 5f12
4 f887 13 cc15 22 4d15 31 4ecc
5 c4f2 14 04fe 23 70cb 32 3c86
6 8e36 15 b94a 24 7533 33 28db
7 9fa1 16 df24 25 45fc 34 fc01
8 7dc0 17 40ef 26 5337 35 7cb1
i i i i
0 4 9 2 18 5 27 13
1 7 10 9 19 1 28 12
2 11 11 4 20 2 29 3
3 8 12 13 21 4 30 6
4 7 13 1 22 12 31 11
5 14 14 14 23 3 32 7
6 5 15 6 24 9 33 15
7 4 16 7 25 2 34 4
8 8 17 12 26 11 35 14

Длина блоков 128 бит

При длине блока 128 бит проводится 68 раундов. Поэтому задаются 68 32-битных констант и 68 констант .

Длина блока 256 бит

При длине блока 256 бит проводится 132 раундов. Поэтому задаются 132 64-битных константы и 132 константы .

Расписание ключей

Ключ представляется в виде конкатенации N/4-битных слов. KS и KF задаются произвольным образом, а в качестве раундовых ключей по очереди используются все

128-битный ключ

Блок в 64 бита

Ключ К делится на 8 слов

Блоки в 128 бит и 256 бит

Ключ К делится на 4 и 2 слова соответственно, поэтому раундовые ключи повторяются с периодом 4 или 2. В последнем случае среди KS и KF есть одинаковые.

192-битный ключ

В зависимости от длины блока ключ делится на 12, 6, и 3 n-битных частей, что определяет период повторения раундовых ключей.

256-битный ключ

Здесь ключ является объединением 16, 8 или 4 двоичных слов.

Расписание операции #

I # i # i # i #
0 AND 16 OR 32 OR 48 AND
1 OR 17 OR 33 OR 49 AND
2 AND 18 AND 34 AND 50 AND
3 OR 19 AND 35 OR 51 AND
4 OR 20 AND 36 OR 52 AND
5 OR 21 AND 37 AND 53 AND
6 OR 22 AND 38 OR 54 OR
7 OR 23 OR 39 AND 55 AND
8 AND 24 AND 40 OR 56 OR
9 OR 25 OR 41 AND 57 OR
10 OR 26 OR 42 AND 58 OR
11 AND 27 OR 43 OR 59 AND
12 OR 28 AND 44 OR 60 AND
13 AND 29 OR 45 AND 61 AND
14 OR 30 AND 46 AND 62 OR
15 OR 31 AND 47 AND 63 OR

Для дальнейших итераций все повторяется:

Быстродействие

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

Безопасность

Главной причиной отсеивания алгоритма NUSH в конкурсе NESSIE стала найденная Ву Венлингом и Фенгом Денго уязвимость алгоритма к линейному криптоанализу.

В своей статье «Линейный криптоанализ блочного шифра NUSH» они используют понятие сложности атаки , где характеризует потребности в памяти, а - в объёме вычислений.

Для N=64 и N=128 бит предложено 3 вида атак, а для N=256 - два. Сложности соответствующих атак:

Длина блока, бит Длина ключа, бит
64 128
192
256
128 128
192
256
256 128
192
256

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

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

Криптоанализ алгоритма

В качестве примера рассмотрим вторую атаку на шифр с длиной блока N=64 бита. Криптоанализ основан на построении зависимостей между битами ключа, исходного и зашифрованного текста, справедливых с вероятностью, отличающейся от 1/2. Эти соотношения строятся на основе уравнения, справедливого с вероятностью 3/4

Это уравнение можно проверить, используя описание алгоритма, и учтя, что для последнего (младшего) разряда операции «+» и совпадают. Действительно, имеем соотношение . Добавив к обеим частя равенства соотношение получим требуемое.

Рассмотрев 4 первых раунда дешифрования, можно установить, что .

Используя Piling-up лемму, с вероятностью . Получили связь между битами ключа и открытым и зашифрованным текстами.

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

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

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

Другие алгоритмы на основе NUSH

На основе NUSH можно построить другие алгоритмы. В частности:

  • схемы аутентификации

Хэш-функция

Перед началом хэширования происходит удлинение текста:

  • Добавить к тексту единичный бит
  • Добавить столько нулей, чтобы получился текст с длиной, кратной N (эти два этапа можно не выполнять, если исходная длина текста уже кратна N)
  • Приписать N-битовое представление начальной длины LEN (в битах) текста
  • Приписать результат побитового XOR между всеми N-битовыми блоками полученного на предыдущем шаге текста

В функции используются следующие переменные:

Начальные значения: , , где - константы, которые прибавляются во время шифрования к ключу KR, KS=KF=KR=0

For i = 0 to l-1

For j=0 to L/2-1 //L - число раундов для соответствующего вида NUSH { } H = NUSH(V) //Операция шифрования For j=15 to 4 For j=15 to 4

For j=0 to L/2-1 H = NUSH() For j=15 to 4

Значение хэш-функции длиной t*n (t<16) бит - первые t n-битовых слов регистра T

Код аутентичности сообщения

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

Синхронный поточный шифр «NUSH Stream»

Пусть SYNC - известный двоичный вектор длины LENGTH. Есть два варианта этого шифра.

Вариант 1

Пусть N = LENGTH - длина блока, используемого при шифровании алгоритмом NUSH (LENGTH = 64, 128, 256) Пусть - вектор из COUNT N-битовых слов, который будет складываться с исходным текстом и с шифротекстом для шифрования и расшифрования соответственно.

For i =0 to COUNT −1

SYNC = (SYNC + 65257) mod

Вариант 2

Здесь N=LENGTH / 2, где соответственно LENGTH = 128, 256, 512. Пусть - вектор длины N, SYNC= - вектор длины 2N T - временный регистр длины N=4n, , , , - соответствующие константы алгоритма NUSH.

Производимые вычисления:

SYNC = SYNC ^ NUSH(SYNC)

SYNC = SYNC ^ NUSH(SYNC) T=SYNC

For i =0 to COUNT −1

T = (T + 127) mod

Асимметричное шифрование

Выбор параметров

Вводится специфическая группа G c определенной авторами алгоритма операцией на основе умножения Монтгомери (Montgomery multiplication).

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

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

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

Что представляют из себя единицы информации бит (bit) и байт (byte)

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

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

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

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

249 = 2×10 2 + 4×10 1 + 9×10 0 = 200 + 40 + 9

Таким образом, нулевой разряд - это единицы (10 0), первый - десятки (10 1), второй - сотни (10 2) и т.д. В компьютере, как и в других электронных устройствах, вся информация распределяется по файлам () и кодируется соответствующим образом в цифровом формате, причем в силу простоты использования применяется двоичная система счисления, на которой остановлюсь отдельно.

В двоичной системе числа представляются с помощью всего двух цифр: 0 и 1. Попробуем записать уже рассмотренное нами число 249 в двоичной системе, чтобы понять ее суть. Для этого делим его на 2, получив целое частное с остатком 1. Эта единичка и будет самым младшим разрядом, который будет, как и в случае десятичной системы, крайним справа.

Далее продолжаем операцию деления и каждый раз целые числа также делим на 2, получая при этом в остатке 0 или 1. Их последовательно и записываем справа налево, получив в итоге 249 в двоичной системе. Операцию деления следует проводить до тех пор, пока в результате не появится нуль:

249/2 = 124 (остаток 1) 124/2 = 62 (остаток 0) 62/2 = 31 (остаток 0) 31/2 = 15 (остаток 1) 15/2 = 7 (остаток 1) 7/2 = 3 (остаток 1) 3/2 = 1 (остаток 1) 1/2 = 0 (остаток 1)

Теперь записываем цифры в остатке последовательно справа налево и получаем наше подопытное число в двоичной системе:

11111001

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

1×2 7 + 1×2 6 + 1×2 5 + 1×2 4 + 1×2 3 + 0×2 2 + 0×2 1 + 1×2 0 = 128 + 64 + 32 + 16 + 8 + 0 + 0 + 1 = 249

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

Сколько бит в байте при использовании двоичной системы в информатике

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

Этот термин происходит от английского словосочетания b inary digit (bit ), что означает двоичное число. Таким, образом, бит может принимать лишь два возможных значения: 0 или 1. В информатике это означает два совершенно равных с точки зрения вероятности результата ("да" или "нет") и не допускает другого толкования.

Это очень важно с точки зрения корректной работы системы. Идем дальше. Количество бит, которое обрабатывается компьютером в один момент, называется байтом (byte) . 1 байт равен 8 битам и, соответственно, может принимать одно из 2 8 (256) значений, то есть от 0 до 255:


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

Перевести числа в десятичном формате на двоичную систему можно с помощью калькулятора. Если у вас ОС Windows 7, то вызвать этот инструмент можно так: Пуск - Все программы - Стандартные - Калькулятор. В меню «Вид» выбираете формат «Программист» и вводите желаемое число (в моем примере это 120):


Теперь включите радиокнопки «Bin» и «1 байт», после чего получаете запись данного числа в двоичной системе:


На что здесь следует обратить внимание? Во-первых , в строке на дисплее представлены лишь семь разрядов (биты со значениями ноль или единица), хотя мы уже знаем, что их должно быть восемь, если значение байта от 0 до 255:

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

Доказательством может служить полная запись полученного числа, которая отображается мелким шрифтом чуть ниже:

0111 1000

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

Для обработки данных требуется более 1 байта - что тогда?

Выше мы поговорили о том, что байт содержит восемь бит. Это позволяет выразить 256 (два в восьмой степени) различных значений. Однако на практике в основном этого далеко не достаточно и во многих случаях приходится использовать не один, а несколько byte. В качестве примера воспользуемся еще раз калькулятором Windows и переведем число 1000 в двоичную систему:


Как видите, для этого пришлось отщипнуть пару разрядов из второго байта. На практике в компьютерах для обработки достаточно объемной информации применяется такое понятие как машинное слово , которое может содержать 16, 32, 64 bit.

С их помощью можно выразить соответственно 2 16 , 2 32 и 2 64 различных значений. Но в этом случае нельзя говорить о 2, 4 или 8 байтах, это немного разные вещи. Отсюда растут ноги из упоминания, например, 32-, 64-разрядных (-битных) процессоров или других устройств.


Сколько байт в килобайте, мегабайте, гигабайте, терабайте

Ну а теперь самое время перейти к производным байта и представить, какие приставки увеличения здесь используются. Ведь байт как единица очень маленькая величина, и для удобства очень даже полезно использовать аналоги, которые бы обозначали 1000 B, 1 000 000 B и т.д. Здесь тоже есть свои нюансы, о которых и поговорим ниже.

Строго говоря, для представления величин корректно использовать приставки для двоичной системы счисления, которые кратны 2 10 (1024). Это кибибайт, мебибайт, гебибайт и т.д.

1 кибибайт = 2 10 (1024) байт 1 мебибайт = 2 10 (1024) кибибайт = 2 20 (1 048 576) байт 1 гебибайт = 2 10 (1024) мебибайт = 2 20 (1 048 576) кибибайт = 2 30 (1 073 741 824) байт 1 тебибайт = 2 10 (1024) гебибайт = 2 20 (1 048 576) мебибайт = 2 30 (1 073 741 824) кибибайт = 2 40 (1 099 511 627 776) байт

Но данные словосочетания не прижились в широком использовании. Возможно, одной из причин стала их неблагозвучность. Поэтому пользователи (и не только) повсеместно употребляют вместо двоичных десятеричные приставки (килобайты, мегабайты, гигабайты, терабайты), что является не совсем корректным, поскольку по сути (в соответствии с правилами десятичной системы счисления) это означает следующее:

1 килобайт = 10 3 (1000) байт 1 мегабайт = 10 3 (1000) килобайт = 10 6 (1 000 000) байт 1 гигабайт = 10 3 (1000) мегабайт = 10 6 (1 000 000) килобайт = 10 9 (1 000 000 000) байт 1 терабайт = 10 3 (1000) гигабайт = 10 6 (1 000 000) мегабайт = 10 9 (1 000 000 000) килобайт = 10 12 (1 000 000 000 000) байт

Но раз уж так сложилось, ничего не поделаешь. Важно лишь помнить, что на практике часто используются килобайт (Кбайт), мегабайт (Мбайт), гигабайт (Гбайт), терабайт (Тбайт) именно в качестве производных от байта как единицы измерения количества информации в двоичной системе. И в этом случае употребляют, например, термин "килобайт", имея ввиду именно 1024 байта и не что иное.

Однако, очень часто производители накопителей (включая жесткие диски, флэшки, DVD- и CD-диски) при указании объема для хранения информации применяют именно десятичные приставки по прямому назначению (1 Кбайт = 1000 байт), в то время как тот же Виндовс, например, рассчитывает их размер в двоичной системе.

Отсюда и выходит некоторое несоответствие, которое может запутать простого пользователя. Скажем, в документации указана емкость диска 500 Гб , в то время как Windows показывает его объем равным 466,65 Гбайт .

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

Резюмируя, отмечу следующее. Скажем, вам зададут вопрос: сколько байт в килобайте? Теоретически корректным будет ответ: 1 килобайт равен 1000 байтам. Просто надо помнить, что на практике по большей части десятичные приставки используются в качестве двоичных, которые кратны 1024, хотя иногда они применяются по прямому назначению и кратны именно 1000.

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

Двоичная система Десятичная система
Название Обозначение Степень Название Обозначение Степень
Рос. Межд. Рос. Межд.
байт Б B 2 0 байт Б B 10 0
кибибайт КиБ KiB 2 10 килобайт Кбайт KB 10 3
мебибайт МиБ MiB 2 20 мегабайт Мбайт MB 10 6
гибибайт ГиБ GiB 2 30 гигабайт Гбайт GB 10 9
тебибайт ТиБ TiB 2 40 терабайт Тбайт TB 10 12
пебибайт ПиБ PiB 2 50 петабайт Пбайт PB 10 15
эксбибайт ЭиБ EiB 2 60 эксабайт Эбайт EB 10 18
зебибайт ЗиБ ZiB 2 70 зеттабайт Збайт ZB 10 21
йобибайт ЙиБ YiB 2 80 йоттабайт Ибайт YB 10 24

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

10 9 /10 6 = 1 000 000 000/1 000 000 = 1000

Получается, что в 1 гигабайте 1000 мегабайт. Точно также можно переводить производные в двоичной системе - мебибайты в кибибайты, тебибайты в гибибайты и т.д.

Переводим байты в биты, килобайты, мегабайты, гигабайты, терабайты в онлайн конвертере

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

Этот конвертер удобен тем, что введя количество byte, можно сразу получить результат во всех возможных измерениях (в том числе перевести биты в байты):

Из данного примера следует, что 3072 байта равно 24576 битам, 3,0720 килобайтам или 3 кибибайтам. Кроме этого, чуть ниже расположены ссылки на миникалькуляторы, где вы сможете быстро произвести конкретный перевод из одной системы единиц в другую.

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

Мы уже знаем, что компьютер воспринимает всю информацию .

Бит – это минимальная единица измерения информации, соответствующая одной двоичной цифре («0» или «1»).

Байт состоит из восьми бит. Используя один байт, можно закодировать один символ из 256 возможных (256 = 2 8). Таким образом, один байт равен одному символу, то есть 8 битам:

1 символ = 8 битам = 1 байту.

Буква, цифра, знак препинания – это символы. Одна буква – один символ. Одна цифра – тоже один символ. Один знак препинания (либо точка, либо запятая, либо вопросительный знак и т.п.) – снова один символ. Один пробел также является одним символом.

Изучение компьютерной грамотности предполагает рассмотрение и других, более крупных единиц измерения информации.

Таблица байтов:

1 байт = 8 бит

1 Кб (1 Килобайт ) = 2 10 байт = 2*2*2*2*2*2*2*2*2*2 байт =
= 1024 байт (примерно 1 тысяча байт – 10 3 байт)

1 Мб (1 Мегабайт ) = 2 20 байт = 1024 килобайт (примерно 1 миллион байт – 10 6 байт)

1 Гб (1 Гигабайт ) = 2 30 байт = 1024 мегабайт (примерно 1 миллиард байт – 10 9 байт)

1 Тб (1 Терабайт ) = 2 40 байт = 1024 гигабайт (примерно 10 12 байт). Терабайт иногда называют тонна .

1 Пб (1 Петабайт ) = 2 50 байт = 1024 терабайт (примерно 10 15 байт).

1 Эксабайт = 2 60 байт = 1024 петабайт (примерно 10 18 байт).

1 Зеттабайт = 2 70 байт = 1024 эксабайт (примерно 10 21 байт).

1 Йоттабайт = 2 80 байт = 1024 зеттабайт (примерно 10 24 байт).

В приведенной выше таблице степени двойки (2 10 , 2 20 , 2 30 и т.д.) являются точными значениями килобайт, мегабайт, гигабайт. А вот степени числа 10 (точнее, 10 3 , 10 6 , 10 9 и т.п.) будут уже приблизительными значениями, округленными в сторону уменьшения. Таким образом, 2 10 = 1024 байта представляет точное значение килобайта, а 10 3 = 1000 байт является приблизительным значением килобайта.

Такое приближение (или округление) вполне допустимо и является общепринятым.

Ниже приводится таблица байтов с английскими сокращениями (в левой колонке):

1 Kb ~ 10 3 b = 10*10*10 b= 1000 b – килобайт

1 Mb ~ 10 6 b = 10*10*10*10*10*10 b = 1 000 000 b – мегабайт

1 Gb ~ 10 9 b – гигабайт

1 Tb ~ 10 12 b – терабайт

1 Pb ~ 10 15 b – петабайт

1 Eb ~ 10 18 b – эксабайт

1 Zb ~ 10 21 b – зеттабайт

1 Yb ~ 10 24 b – йоттабайт

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

Продолжение следует…

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

Понятно, что в таблице байтов можно и дальше добавлять нули, а точнее, степени к числу 10 таким образом: 10 27 , 10 30 , 10 33 и так до бесконечности. Но зачем это надо? В принципе, пока хватает терабайт и петабайт. В будущем, возможно, уже мало будет и йоттабайта.

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

Есть удобный «терабайтник» – внешний жесткий диск, который подключается через порт USB к компьютеру. На него можно записать терабайт информации. Особенно удобно для ноутбуков (где смена жесткого диска бывает проблематична) и для резервного копирования информации. Лучше заранее делать резервные копии информации, а не после того, как все пропало.

Флешки бывают 1 Гб, 2 Гб, 4 Гб, 8 Гб, 16 Гб, 32 Гб, 64 Гб и даже 1 терабайт.

Поскольку единого мнения о характеристиках якобы готовящихся к выходу видеочипов NV36 и NV38 пока не существует, сейчас самое время поразмышлять о некоторых спорных вопросах. Одним из них, в частности, является прогноз в отношении разрядности шины памяти будущих решений от Nvidia. В ходе "уточнения слухов" о характеристиках NV36 шина памяти то приобретала ширину 256 бит, то вновь ее лишалась в пользу более скромных 128 бит. Каково значение этого параметра для разработчиков и что оно может дать пользователю? Ответить на этот вопрос попробовали наши коллеги с сайта Beyond 3D .

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

Долгое время считалось, что разводка платы с 256-битной шиной памяти способна значительно увеличить себестоимость производства, и оправдан такой шаг мог быть только для высокодоходных решений верхнего ценового диапазона. Видеокарты Matrox Parhelia, Wildcat VP и Radeon 9700 перешли на использование 256-битной шины еще в 2002 году, для их цены это было оправдано. Но не будем забывать, что знаменитый Radeon 9500 на "правильном дизайне" использует все ту же 256-битную шину, а купить его можно было ровно за цену варианта со 128-битной шиной. Так ли уж важен фактор себестоимости?

В настоящее время объем памяти в 128 Мб стал нормой для большинства видеокарт среднего ценового диапазона. При этом число чипов памяти обычно равно восьми. При 256-битной шине памяти также достаточно использовать восемь чипов, если каждый из них имеет 32-битный доступ. Чтобы не провоцировать заметный разрыв в производительности флагманских видеоплат с 256-битной шиной и более дешевых плат со 128-битной шиной, проектировщики вынуждены использовать на платах со 128-битной шиной более быстрые чипы памяти (в плане таймингов), что обходится дороже памяти для 256-битного варианта, где тайминги не играют большой роли.

Дилемма достаточно проста: 8 очень быстрых чипов в 128-битной конфигурации или 8 менее быстрых чипов в 256-битной конфигурации. В переводе на скупой язык экономики выбор заключается в следующем: более дорогие чипы памяти или менее дорогие чипы памяти плюс несколько более дорогой дизайн печатной платы.

По рассмотренным причинам мы вполне признаем вариант плат на базе NV36 с 256-битной шиной памяти экономически целесообразным. Пропускная способность памяти не будет упираться в ограничения шины, возможно, это слегка поможет увеличить производительность видеоплат в тяжелых графических режимах. Учитывая современную тенденцию к усложнению графических сцен, 256-битная шина памяти не повредит даже такому потенциально урезанному решению, как NV36. Осталось только подождать завершения конференции SIGGRAPH, и мы наверняка узнаем правду...

Данный материал является скорее теоретическим (по крайней мере – в большей своей части) и посвящен изучению влияния ширины шины видеопамяти на производительность графических ускорителей. Казалось бы, что тут тестировать? И так понятно, что видеокарты с шириной шины памяти 256-бит будут более производительны, чем такие же видеокарты у которых ширина шины памяти 128-бит, к примеру. Но не спешите с выводами. Может быть, относительно слабым графическим процессорам широкая шина памяти и не нужна? Когда разработчики видеочипов «урезают» ширину шины видеопамяти - это намеренное создание «бюджетного» решения (с целью вписаться в нужный ценовой диапазон) или же трезвый расчет, основанный на том, что больше то и не надо? С этими вопросами мы и попытаемся разобраться. Для экспериментов мы решили взять довольно старую видеокарту – GeForce 7600GT. В момент появления на рынке данный продукт являлся типичным представителем среднего класса и обладал всеми ключевыми особенностями middle-end решения. Это и шина памяти 128-бит, и относительно слабый видеопроцессор. Выбор данной видеокарты обусловлен тем, что к ней в пару можно подобрать аналог, практически не отличающийся по производительности видеопроцессора, но обладающий шиной памяти 256-бит. Многие наверное уже догадались, что мы имеем ввиду, однако подробно мы расскажем об этом чуть позже. А пока попробуем выяснить, насколько шина памяти шириной 128-бит ограничивает производительность GPU на видеокарте 7600GT.

Предварительные замечания

В качестве мерила производительности видеокарты мы будем использовать количество FPS (кадров/сек), которое видеокарта покажет в тесте Quake 4. Разрешение экрана выбиралось равным 1280х1024 точек и оставалось неизменным на протяжении всех тестов. Это типичное разрешение большинства современных мониторов с диагональю 17-19 дюймов. Графический режим в самой игре устанавливался на “High Quality”, с помощью видеодрайверов выбирались режимы тестирования “NO AA/AF” или “4AA/16AF”. В качестве тестовой платформы использовался следующий тестовый стенд: Данный стенд не является чемпионом по производительности среди современных CPU. Тем не менее, как неоднократно показывалось, при тестировании видеокарт middle-end производительность центрального процессора не является ограничивающим фактором. Стандартные частоты GeForce 7600GT составляют 560/700 МГц для GPU/видеопамяти соответственно. Для видеопамяти указана реальная частота в мегагерцах, а не эффективная (1400 МГц DDR), так сделано лишь для удобства построения графиков. Из этих же соображений мы будем задавать исходную частоту для видеопроцессора 7600GT равной не 560 МГц, а 600 МГц ровно.

Тестирование

В чем будет заключаться тестирование? Как вообще узнать, насколько ширина шины памяти ограничивает производительность GPU? Давайте будем рассматривать ситуацию следующим образом. У нас есть видеокарта, которая выполняет определенную "работу", и по величине FPS на выходе мы будем делать те или иные заключения. В нашем распоряжении имеется два параметра, которые мы можем изменять – частоту GPU и частоту видеопамяти видеокарты. Очевидно, что частота видеопамяти прямо определяет пропускную способность видеопамяти, при прочих неизменных параметрах (типа ширины шины памяти). Чтобы определить, насколько производительность видеокарты ограничивается «скоростью» видеопамяти, построим следующий график.

Мы понизили частоту видеопамяти на видеокарте 7600GT до 200 МГц (реальных), а затем увеличивали ее с шагом 50 МГц. Конечно, в реальности никто не будет добровольно понижать частоту видеопамяти, смысл в другом. Если у нас имеется два параметра, влияющих на итоговый результат, и мы предполагаем, что один из параметров является «ограничителем», то при линейном увеличении этого параметра мы должны наблюдать линейный рост итоговой величины. Чтобы проверить, так это или нет, давайте на вышеприведенном графике построим две касательные к графику, в левой и в правой части.

Как видно из графика, в левой части рост FPS с увеличением частоты видеопамяти является линейным, то есть, пропускной способности видеопамяти явно не хватает и она действительно является ограничивающим фактором. По мере роста частоты видеопамяти, касательная к графику начинает «наклоняться» в сторону оси Х, следовательно, увеличение частоты видеопамяти становится не столь эффективным средством повышения производительности видеокарты. Теоретически, если бы мы могли повышать частоту видеопамяти сколько угодно высоко, рано или поздно мы бы увидели, как линия графика стала бы параллельной оси Х, а значит общая производительность уже ограничивалась бы только мощностью видеопроцессора. Теория теорией, но можно ли такое увидеть на практике? Можно, почему нет. Раз мы не можем сильно разогнать видеопамять, давайте смоделируем подобную ситуацию, понизив производительность GPU, а частоты для видеопамяти оставив неизменными. На следующем графике мы понизили частоту GPU на видеокарте до значения 300 МГц.

Как видите, теория получает подтверждение. Когда реальная частота видеопамяти становится вдвое больше частоты GPU, мы уже практически не получаем роста результатов, даже при ширине шины памяти 128 бит. Впрочем, данный конкретный вывод может относиться исключительно к видеопроцессору 7600GT, поэтому не будем спешить с обобщениями. Теперь посмотрим, что произойдет, если мы «утяжелим» графический режим, включив полноэкранное сглаживание и анизотропную фильтрацию.

Очевидно, что основная нагрузка ложится на видеопамять. Для частоты GPU, равной 600 МГц, мы наблюдаем практически линейный рост результатов с увеличением частоты видеопамяти. Да и для частоты GPU 300 МГц на графике уже не наблюдается горизонтальной «полочки», которая свидетельствовала бы об избыточной пропускной способности видеопамяти. Примечательно, что в левой части графики для разных частот GPU сливаются в одну линию. По всей видимости, здесь скорость видеопамяти настолько ограничивает общую производительность, что нет разницы между GPU, работающими на частотах 600 МГц и 300 МГц. Наиболее пытливые читатели, наверное, уже задали себе вопрос – «какое же сочетание частот GPU/видеопамяти является оптимальным?». Как мы видели, при слишком низкой частоте видеопамяти GPU не может проявить себя в полную силу. Но и слишком сильно увеличивать частоту видеопамяти большого смысла нет, раз результаты перестают расти. Как обычно, однозначно ответить на данный вопрос вряд ли получится, потому что оптимальное сочетание частот зависит и от архитектуры GPU, и от «тяжести» графического режима, не говоря уже о том, что может меняться от одной игры к другой. Тем, кто предпочитает изучать проблемы с разных точек зрения, приведем еще пару графиков. Их отличие от предыдущих состоит в том, что в этот раз мы фиксировали реальную частоту видеопамяти (а не GPU) на уровнях 300 МГц и 600 МГц. Вот что получилось для режима без AA/AF.

Если установить реальную частоту видеопамяти на GeForce 7600GT равной 300 МГц, то изменение частоты GPU вообще никак не сказывается на общей производительности, и мы получаем горизонтальную «линию насыщения» на графике. Если же частота памяти равна 600 МГц, то прирост результатов от увеличения частоты GPU более заметен, но опять же, как только частота GPU достигает 600 МГц, рост результатов практически прекращается.

Если мы построим аналогичные графики для режима 4AA/16AF, то увидим уже две «линии насыщения». Вполне закономерный результат, поскольку в более тяжелом графическом режиме производительность видеокарты «упирается» в скорость работы видеопамяти. Подведем промежуточные итоги. Как следует из вышеприведенных графиков, в наших условиях тестирования для видеокарты 7600GT, обладающей шириной шины памяти 128 бит, оптимальное отношение реальной частоты видеопамяти к частоте графического процессора составляет примерно 1,5-2: 1. То есть, если частота видеопроцессора равна 600 МГц, частота видеопамяти должна находиться на уровне 900-1200 МГц (реальных). Рекомендованные частоты для типичной 7600GT равны 560/700 МГц для GPU/видеопамяти, следовательно, их соотношение равно 1:1,25, что несколько меньше найденного нами «оптимального» уровня. Как мы неоднократно подчеркивали, это «оптимальное» соотношение справедливо для 7600GT с шириной шины памяти 128 бит. А что будет, если мы увеличим ширину шины памяти в два раза? По идее, с точки зрения увеличения максимальной пропускной способности видеопамяти, она также возрастет вдвое, что можно было бы расценивать как удвоение рабочей частоты видеопамяти с шириной шины 128 бит и, следовательно, будет более точно соответствовать «оптимальному» соотношению частоты GPU и видеопамяти. Так это или нет, мы сейчас и попробуем выяснить.

7600GT 256-bit memory

Вы скажете, что таких видеокарт в природе не бывает. В общем-то, да, не бывает. Но есть другие видеокарты, из которых, при желании, можно получить аналог GeForce 7600GT с шириной шины памяти 256 бит. Собственно, мы так и сделали. Взяли видеокарту ASUS EN7900GS TOP , у которой штатные частоты равны 590/720 МГц и ширина шины памяти 256-бит. Затем, с помощью утилиты RivaTuner, отключили пиксельные и вершинные блоки таким образом, чтобы привести их в точное соответствие с конвейерной формулой GeForce 7600GT – 12p, 5v. Таким образом, в нашем распоряжении оказался аналог видеокарты 7600GT, обладающий похожими на 7600GT характеристиками GPU, но имеющий ширину шины памяти 256-бит вместо 128. На графиках мы будем отображать результаты этой видеокарты красным цветом. Ниже приведен график, аналогичный Графику №1 и дополненный результатами, полученными на аналоге GeForce 7600GT с шириной шины памяти 256-бит.

Очевидно, что увеличение ширины шины видеопамяти изрядно прибавляет производительности. При небольших частотах видеопамяти (левая часть графика), прирост производительности 7600GT 256-бит практически двукратный, по сравнению с обычной 7600GT 128-бит. C ростом частоты видеопамяти относительное превосходство 256-бит варианта 7600GT уменьшается, и на типовой частоте видеопамяти 700 МГц составляет всего 26%, что является вполне закономерным результатом. Выше было показано, что с ростом частоты видеопамяти, рано или поздно, мы получим на графике горизонтальную линию результатов, когда общая производительность видеокарты больше не ограничивается памятью и зависит только от GPU. Понятно, что для 256-бит варианта 7600GT такой «режим насыщения» будет достигнут быстрее. Что касается практической стороны вопроса, то 26% превосходства варианта с шириной шины памяти 256-бит над 128-битной 7600GT - это конечно существенно, но и производители видеокарт, получается, оказываются не так уж и неправы, когда в middle-end продуктах ограничиваются шиной памяти 128-бит. Ведь им, помимо чистой производительности, приходится принимать во внимание и экономические вопросы. А разработка видеопроцессора с контроллером памяти 256-бит будет сложнее, соответственно дороже, не говоря уже про усложненный и более дорогой дизайн самой печатной платы. Говоря простыми словами, не самому мощному видеопроцессору нет смысла подключать видеопамять по более широкой шине. Игра Quake 4 уже довольно старая, новые игры предъявляют к производительности GPU более высокие требования, и не факт, что даже с широкой шиной памяти средний GPU это «потянет». Проиллюстрировать это можно на простом примере. Построим еще один график, в тех же условиях что и предыдущий, но снизим частоту GPU вдвое.

И что же мы видим? При слабом GPU и номинальной частоте видеопамяти разница в результатах 7600GT 128-бит и 256-бит составляет всего 12%. Так что, если у вас слабый GPU, не нужно жаловаться на недостаток пропускной способности шины памяти. Слабый видеопроцессор просто не сможет воспользоваться ею в полной мере. Вполне возможно, что этим же фактом объясняется популярность памяти стандарта GDDR2 в сегменте видеокарт low-end, где производительность GPU настолько урезана, что ставить более скоростную видеопамять просто бессмысленно. Хорошо, с простым графическим режимом все понятно. А что будет, если мы включим полноэкранное сглаживание и анизотропную фильтрацию?

Очевидно, с возрастанием нагрузки на видеопамять прирост производительности от широкой шины памяти становится более заметен, и на типовой частоте видеопамяти 700 МГц равен 60%. Вот тут, пожалуй, можно и пожалеть, что продукты middle-end не оснащаются шириной шины памяти 256-бит (или выше). С другой стороны, много ли вы знаете современных игр, в которые можно играть с настройками 4AA/16AF на видеокартах среднего класса? Вот именно. Если и удастся выставить качественную графику в игре, то о полноэкранном сглаживании речь, как правило, не идет. И это вполне типичная ситуация для видеокарт среднего сегмента и современных им игр, которая повторяется в течение уже многих лет. Ну и, напоследок, приведем еще пару графиков. Результаты на первом из них получены в следующих условиях – изменялась частота GPU, а частота видеопамяти оставалась неизменной. Для стандартной 7600GT 128-бит частота памяти была выставлена в 600 МГц, для сэмулированной 7600GT 256-бит частота видеопамяти была установлена на значение 300 МГц. Таким образом, максимальная теоретическая пропускная способность видеопамяти у этих двух видеокарт была одинакова. Теперь посмотрим, насколько эффективно используется более широкая шина памяти в зависимости от частоты GPU.

Начиная с частоты GPU 300 МГц, видеокарта с шиной памяти 128-бит показывает более высокие результаты. Получается, что при прочих равных условиях узкая шина памяти оказывается более эффективной, с точки зрения производительности. Может быть, так происходит потому, что мы использовали простой графический режим? Давайте включим AA/AF и проверим еще раз.

Как ни странно, но и на этом графике мы видим превосходство 7600GT 128-бит над своим 256-битным аналогом, причем даже более заметное. По всей видимости, медленная, но широкая шина памяти используется не так эффективно, как узкая, но скоростная.

Заключение

Как выяснилось в ходе данного тестирования, шина памяти шириной 128-бит для видеопроцессоров класса middle-end определенно является фактором, сдерживающим производительность. Но не стоит преувеличивать степень этого ограничения. В типичных условиях использования видеокарт среднего класса – не самые высокие настройки графики в приложении и отсутствие полноэкранного сглаживания, переход к более широкой шине памяти способен добавить лишь пару десятков процентов к общей производительности видеосистемы, в то время как стоимость такого «перехода» может существенно сказаться на цене продукта. В целом, разработчики видеопроцессоров наверное правы в том, что не спешат с внедрением шины памяти 256-бит в продукты класса middle-end, как это ни грустно для нас, пользователей. Но и теряем мы не так уж и много. Хороший разгонный потенциал, который, как правило, присущ видеокартам middle-end, практически всегда позволяет скомпенсировать пару десятков «упущенных» процентов производительности видеокарты. Возможно, кого-то разочарует то, что в этом тестировании мы взяли уж очень старого представителя middle-end в лице GeForce 7600GT и «ветерана» Quake 4 в качестве тестируемого приложения. Но иначе было бы сложно подобрать точную «пару» видеокарт, отличающихся лишь шириной шины памяти, и многие нюансы не проявились бы так сильно. А использование более новой игры для тестов могло чрезмерно нагрузить «старичка» 7600GT, и опять же свести на нет разницу в результатах. Не расстраивайтесь. Мы продолжим наши исследования, и в следующих материалах изучим производительность современных представителей среднего класса в новых играх. Кстати, а вам интересно узнать, насколько эффективно используется шина памяти 512-бит в Radeon HD2900XT?

- Обсудить материал на .

 

 

Это интересно: