Какими числами оперирует компьютер

Обновлено: 07.07.2024

Время для компьютеров течет не так, как для людей. То, что человеческим мозгом воспринимается как мгновение, для компьютеров растягивается на долгие эпохи. Данная статья — это метафора, в попытке осознать этот простой и в общем-то очевидный факт.

Инфляция временных единиц

Для большинства программистов прикладного уровня время, которым измеряется производительность программ, останавливается на масштабе миллисекунд: ну какая разница, будет ли элемент в браузере рендериться 50 или 200 микросекунд, если это всё равно ничтожно малое значение? Какая разница, выполняется ли запрос в базу данных за 200 или за 500 микросекунд, если сетевые издержки на порядок больше? Безусловно, есть области программирования, где приходится спуститься на уровень наносекунд и единичных тактов, но в большей своей части программисты не думают такими временными понятиями. Я предлагаю подумать.

Компьютерная секунда

Я предлагаю подумать, как выглядела бы работа современного компьютера, если бы каждому такту процессора соответствовала одна секунда в субъективном мироощущении каких-нибудь существ, которые, как мы знаем, и управляют всей техникой ("гарантийные человечки" или, на современный лад, "фиксики"). Для таких человечков частота процессора будет равно ровно 1 Hz.

Я пишу эту статью на ноутбуке с восьмиядерным процессором базовой частотой в 2.4 GHz, то есть один такт раз в

0,4 наносекунды (округление очень грубое). Это значение и будет нашей "компьютерной секундой".

Что же происходит за время, равное такой секунде?

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

Свет проходит около 12 сантиметров (в вакууме).

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

Компьютерная минута

Этот промежуток времени интереснее. За минуту может произойти многое. По человеческим меркам эта минута равна примерно 24 наносекундам.

Что же может произойти за компьютерную минуту?

Электрический сигнал пройдет всю длину кабеля от компьютера до монитора.

За две минуты произойдет обращение к данным в оперативной памяти.

За несколько минут JVM сможет сделать объект String из маленького массива байтов.

Компьютерный час

На этом этапе мы переходим от человеческих наносекунд к микросекундам: компьютерный час равен 1.44 мкс.

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

За десяток-другой часов процессор может запросить и получить данные у достаточно производительного SSD.

Компьютерный год

Предлагаю перескочить через сутки и месяцы и сразу перейти к годам (

12мс), за год может произойти очень много разных событий:

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

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

Около трех лет уходит на выполнение пинга 8.8.8.8 (три года, Карл! человек за это время может пешком дойти до сервера и вернуться!)

Десяток лет может пройти от нажатия на клавиатуру до появления символа на экране монитора.

Компьютерное столетие

Именно на таком уровне (человеческие секунды) мы общаемся с компьютером. Например, главная страница Хабра будет загружаться около пяти столетий. Вдумайтесь! Полтысячи лет! Если во времена Шекспира начать, секунда за секундой, работать над загрузкой страницы, работа всё ещё может быть не закончена в XXI веке!

Надеюсь, что данный мысленный эксперимент вам показался настолько же захватывающим и невероятным, как и мне. Многие вещи становятся более понятными и осязаемыми, если перевести их в компьютерные секунды. Например, читая "Операционные системы" Танненбаума, я недоумевал, как компьютер может вообще успевать что-то делать, если переключение в/из ядра ОС — такая сложная операция? Но если перевести это в "компьютерное" время, то это всего-то час труда раз в пару месяцев.

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

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

Транзисторы и кодирование информации

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

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

Для того, чтоб процессор понимал пользователя, были придуманы логические вилки (операторы). Мы все их знаем из курса информатики в школе: и/или, если/то/иначе. Такие команды позволяют компьютеру исходя из заданных условий принимать решения.

Что такое техпроцесс?

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

У первого процессора Intel 4004, вышедшего в 1971 году было 2250 транзисторов. Pentium 4 вмещал 42 млн транзисторов. Современные процессоры Epyc от AMD оснащены 39,54 миллиардами кремниевых транзисторов.

С размером транзисторов тесно связано понятие – техпроцесс.

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

Тактовая частота

Это понятие зачастую является определяющим при покупке процессора.

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

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

В основе каждого генератора имеется кварцевый кристалл. Он генерирует импульс с частотой около 100 МГц. На текущий момент могут еще довольно часто встречаться генераторы с частотой 33 МГц, особенно на дискретных контроллерах, например звуковых платах, sata/hba адаптерах и интерфейсных usb/com расширителях. Чтоб увеличить частоту, генерируемые кварцем колебания проходят через специальные узлы – множители. Они позволяют повысить частоты при пиковых нагрузках или снизить их, если нагрузка уменьшается или компьютер находится в простое.

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

У процессоров с разблокированным множителем пользователь по собственному желанию может увеличить тактовые частоты. Современные процессоры могут разгоняться на 20 – 30 % и даже больше.

Архитектура

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

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

Вычисления выполняются по специальным алгоритмам и инструкциям, которые хранятся во временной памяти процессора.

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

Кэш: зачем процессору собственная память?

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

Что такое система на чипе?

Современные процессоры для телефонов, планшетов и ноутбуков уже давно перестали быть отдельными вычислительными центрами, специализирующимися на выполнении конкретных задач. Современный процессор – это целая система, которая включает собственно блоки для выполнения задач – ядра, а также модуль для отрисовки изображений – графический адаптер. Роль ядер выполняют исполнительные блоки, которых значительно больше, чем в CPU, и которые параллельно выполняют миллионы задач. Также некоторые системы могут содержать и дополнительные опции, например, центр беспроводного соединения 5G или технологию передачи данных Thunderbolt.

Здравствуйте. Если вы собираетесь изучить язык программирования python или любой другой язык, Вам необходимо знать, как компьютер хранит и обрабатывает числа. В привычной для нас системе исчисления десять знаков от 0 до 9, и называется она десятичной. А почему именно десять цифр? Видимо потому, что первобытные люди, которые изобрели эту систему, пользовались для счета пальцами рук.

Существует так же восьмиричная система исчисления. Она имеет только восемь цифр от 0 до 7. Есть еще и шестнадцатиричная система исчисления. В ней используются шестнадцать цифр. Для обозначения первых десяти цифр применяются цифры от 0 до 10, а недостающие шесть цифр дополняют буквами A, B, C, D, E, F. Но мы на них останавливаться не будем.

Сегодня поговорим о двоичной системе исчисления. Для записи любого числа используются две цифры 0 и 1. Процессор компьютера состоит из миллиардов маленьких транзисторов, которые имеют состояние логического нуля 0 – когда напряжение на выходе отсутствует, и состояние логической единицы 1 – когда на выходе присутствует напряжение. Компьютеру удобно использовать данную систему.

В привычной для нас десятичной системе, если нам нужно записать число меньше десяти, мы используем всего одну цифру. Для записи числа от 10 и 99, мы вводим новый разряд, который сначала мы приравниваем единице. Подставляя в младший разряд те же цифры от 0 до 9, после 9 опять идет 0 и мы получаем новый десяток. Когда во втором разряде мы дойдем до 99, вводим третий разряд от 100 до 999, потом четвертый, пятый и т. д.

В двоичной системе действует то же правило, только для записи числа используются две цифры 0 и 1. Поэтому, при увеличении на один, после 1 снова идёт 0, и при этом вводим следующий разряд. В двоичной системе числа от 0 до 10 выглядят так: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001.

Для выполнения операций над числами компьютер:

Переводит число из десятичной системы в двоичную;

выполняет необходимые операции (например, сложение);

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

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

Возьмем число 123 и воспользуемся методом последовательным делением на число 2

Перед математиками и конструкторами в 50-х встала проблема отыскания таких систем счисления, которые отвечали бы требованиям, как разработчиков ЭВМ, так и создателей программного обеспечения. Одним из итогов этих исследований стало значительное изменение представлений о системах счисления и о методах вычислений. Оказалось, что арифметический счет, которым человечество пользуется с древнейших времен, может совершенствоваться, подчас весьма неожиданно и на удивление эффективно.

Специалисты выделили так называемую “машинную” группу систем счисления и разработали способы преобразования чисел этой группы.

К “машинным” системам счисления относятся:

· Двоичная (используются цифры 0, 1);

· Восьмеричная (используются цифры 0, 1, . 7);

· Шестнадцатеричная (для первых целых чисел от нуля до девяти используются цифры 0, 1, . 9, а для следующих чисел — от десяти до пятнадцати – в качестве цифр используются символы A, B, C, D, E, F).


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

Почему люди используют десятичную систему счисления, а компьютеры - двоичную, восьмеричную, шестнадцатеричную?


Люди предпочитают десятичную систему, вероятно, потому, что с древних времен считали по пальцам, а пальцев у людей по десять на руках и ногах. Не всегда и не везде люди пользуются десятичной системой счисления. В Китае, например, долгое время пользовались пятеричной системой счисления.

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

· для ее реализации нужны технические устройства с двумя устойчивыми состояниями (есть ток — нет тока, намагничен — не намагничен и т.п.), а не, например, с десятью, — как в десятичной;

· представление информации посредством только двух состояний надежно и помехоустойчиво;

· возможно применение аппарата булевой алгебры для выполнения логических преобразований информации;

· двоичная арифметика намного проще десятичной.

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

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

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

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

Перевод восьмеричных и шестнадцатеричных чисел в двоичную систему очень прост: достаточно каждую цифру заменить эквивалентной ей двоичной триадой (тройкой цифр) или тетрадой (четверкой цифр).

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

Заключение.

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

Также я выяснил, что двоичная система счисления намного старше электронных машин. Двоичной системой счисления люди интересуются давно. Особенно сильным это увлечение было с конца 16 до 19 века. Знаменитый Лейбниц считал двоичную систему счисления простой, удобной, красивой. Даже по его просьбе была выбита медаль в честь этой «диадической» системы (так называли тогда двоичную систему счисления).Двоичная система счисления наиболее проста и удобна для автоматизации. Наличие в системе всего лишь двух символов упрощает их преобразование в электрические сигналы. Из любой системы счисления можно перейти к двоичному коду. Почти все ЭВМ используют либо непосредственно двоичную систему счисления, либо двоичное кодирование какой-либо другой системы счисления.




Но двоичная система имеет и недостатки:

- ею пользуются только для ЭВМ;

- быстрый рост числа разрядов, необходимых для записи чисел.

Литература

1. Гашков С.Б. Системы счисления и их применение. МЦНМО, 2004г.

2. Угринович Н.Т. Информатика и информационные технологии. Учебник для 10–11 классов. – М.: Лаборатория Базовых Знаний. 2003.

4.Урнов В.А. и др. Преподавание информатики в компьютерном классе, М.: Просвещение, 1990, стр. 17

5.Заварыкин В.М. Основы информатики и вычислительной техники, М.: Просвещение, 1989, стр.19

6.Гейн А.Г. Основы информатики и вычислительной техники, М.: Просвещение, 1992, стр.231

Читайте также: