Какими числами оперирует компьютер
Целью данной статьи является попытка посеять сомнение в голове читателя, уверенного, что он знает о разрядности всё или почти всё. Но сомнение должно быть конструктивным, дабы сподвигнуть на собственное исследование и улучшить понимание.
Термин «разрядность» часто используют при описании вычислительных устройств и систем, понимая под этим число бит, одновременно хранимых, обрабатываемых или передаваемых в другое устройство. Но именно применительно к центральным процессорам (ЦП), как к наиболее сложным представителям вычислительного железа, не делимым на отдельные детали (до тех пор, пока кто-то не придумал, как продать отдельно кэш или умножитель внутри чипа), понятие разрядности оказывается весьма расплывчатым. Продемонстрировать это поможет умозрительный пример.
Представьте себе, что вокруг благодатные 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-битном обмене данных с программно 32-битной адресацией ответ может быть таким же — с данными надо, а с адресами не факт.
Intel 486DX2. Где-то здесь притаилась разрядность…
Но это ещё не всё. Зачем нам вообще 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-битным?
Но означает ли всё это, что в ЦП как можно больше ресурсов, и аппаратных, и архитектурных, должны быть 32-битными, чтобы его можно было бы назвать полноценным 32-битным процессором? Совсем нет. Возьмём тот же MC68000 — у него 32-битная архитектура для данных и адресов и 32-битные регистры, но 16-битные АЛУ и внешняя шина данных и 24-битная физическая внешняя адресация. Тем не менее, недостаточная «32-битность» не мешает ему обгонять появившийся на 3 года позже «16-битный» 80286: на популярном в 1980-е бенчмарке Dhrystones MC68000 на 8 МГц набирает 2100 «попугаев», а 286 на 10 МГц — 1900 (также 16-битный i8088 на 4,77 МГц — 300).
Разрядности некоторых процессоров для ПК
* — Мультиплексированная шина данных и адреса (для ЦП с интегрированным контроллёром памяти — только межпроцессорная)
«A/B|C/D» — для данных указана разрядность скалярного целого / вещественного | векторного целого / вещественного доменов
«X+Y» — имеет домены этого вида двух разрядностей
«X-Y» — в зависимости от команды или ФУ принимает все промежуточные значения с целой степенью двойки
В модуль ALU (в последних процессорах их уже несколько) поступают все инструкции и данные, необходимые для целочисленных вычислений; как правило, это один из самых быстрых в плане тактовой частоты модулей процессора. Упрощенно процесс его работы можно представить следующим образом: поступили данные (две цифры - 3 и 4), поступила инструкция (операция умножения). На выходе получили результат - 12. Разрядность процессора (4-бит или 64-бит) не влияет на данную схему. Прежде чем данные попадут в ALU, они должны быть туда загружены из некоего источника: винчестера, RAM или внешней памяти; при этом процессор чаще всего получает их через кэш. Из кэш данные попадают непосредственно в процессор через посредника, роль которого выполняет набор совсем уж небольших блоков для хранения данных, работающих на очень большой скорости и называющихся регистрами.
Как раз оттуда ALU и получает данные, с которыми работает, и для ALU операция формулируется не как "3 * 4", а:
"содержимое регистра А” - (расшифрованный код операции) – “содержимое регистра В" - сохранить результат в один из регистров (может быть, даже в один из использовавшихся в операции)
откуда он потом, при необходимости, может быть взят для еще одной операции или же быть записан в оперативную память, освободив драгоценное место.
Когда мы говорим о разрядности процессора, то, практически, в первую очередь мы говорим как раз о разрядности этих регистров - могут ли они хранить 8, 16, 32, или 64-бит числа.
С дробными числами, с числами с плавающей точкой ситуация обстоит совершенно иным образом. Для их хранения и операций с ними требуется прежде всего больший объем - это очевидно, учитывая, сколько цифр приходится хранить для подобных чисел. Особенно, если требуется повышенная точность и, соответственно, увеличенное число знаков после запятой. Поскольку необходимость в работе с ними возникла не вчера, то никто здесь прихода 64-бит процессоров ждать и не собирался.
С числами с плавающей запятой работает отдельный набор инструкций х87, с ними оперируют отдельные вычислительные блоки, сведенные в модуль с общим названием "сопроцессор", а хранятся они и оперирует с ними процессор во внутреннем формате с 80-бит представлением. Ради чисел с плавающей запятой затевать переход на 64 разряда явно не требовалось. Тем более что это направление развивается совершенно автономным образом - SSE, 3DNow и так далее, так что переход х86 с 32-бит на 64 его затрагивает весьма слабо.
Существует, впрочем, и еще один аспект вопроса, а именно - доступ к памяти. Дело в том, что в базовом режиме, так называемом "flat addressing", те же самые регистры общего назначения используются для хранения адресов доступа к памяти. 32 бита дают нам 4.3 миллиарда возможных комбинаций, так что 32-бит процессор может, таким образом, осилить память емкостью 4.3 Гбайт. Адреса ячеек, имеющих номера более этого числа, он попросту не может хранить в своих регистрах.
Очевидно, что здесь польза от 64 бит проявляется наиболее заметно, поскольку объем адресуемого пространства сразу увеличивается до 18 терабайт. Но прямая адресация 4 Гбайт оперативной памяти в настоящее время требуется, в основном, лишь в серверах, хотя через несколько лет, очевидно, до таких объемов доберутся и PC.
В первую очередь выигрыш от перехода на 64-разрядные процессоры получают серверы баз данных, где серьезные базы давно уже переросли объем в 4 Гбайт, а возможность кэшировать их полностью в оперативной памяти слишком заманчива в плане производительности. Производители серверных решений не стали дожидаться перехода: за счет использования различных подходов, 32-бит Xeon позволяет адресовать более 4 Гбайт данных (до 64 Гбайт), хотя, конечно подобные полухакерские решения трудно назвать серьезной платформой под будущее, да и падение производительности при операциях с памятью при этом измеряется в десятках процентов. Впрочем, будущее от Intel - это Itanium, а не Xeon.
Перед математиками и конструкторами в 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
Терафлопс (TFLOPS) — величина, используемая для измерения производительности компьютеров, показывающая, сколько операций с плавающей запятой в секунду выполняет данная вычислительная система. 1 терафлопс = 1 триллион операций в секунду = 1000 миллиардов операций в секунду. Обычно имеются в виду операции над плавающими числами размера 64 бита в формате IEEE 754.
TFLOPS = 1012 FLOPS = 103 GFLOPS
Чтобы найти пиковую производительность ЭВМ R, терафлопс, нужно тактовую частоту F, МГц, умножить на число процессоров (процессорных ядер) n, домножить на количество инструкций с плавающей запятой на такт (4 для процессоров Core2 — 2 операции Float Multiple Add) и поделить на 1******0:
Так, например, пиковая производительность компьютера на базе двухъядерного процессора AMD Phenom 9500 sAM2+ с тактовой частотой 2,2 ГГц равна:
2200 МГц × 2 ядра × 4×10-6 = 17,6 млрд операций в секунду = 0,0176 терафлопс.
Для четырехядерного процессора Core 2 Quad Q6600:
2400 МГц × 4 ядра × 4×10-6 = 38,4 млрд операций в секунду = 0,0384 терафлопс.
Скопипастено с Википедии
Т.е. находите нужные данные для своего процессора, подставляете их в формулу и находите кол-во операций в секунду.
Для моего Intel Pentium 4:
3000 х 1 х 2 х 10-6 = 6 млрд операций в секунду = 0.006 терафлопс.
В конце прошлого века для описания мощных и производительных вычислительных машин применялся термин «суперкомпьютер». Такие устройства стоили очень дорого и были довольно громоздкими. Иногда суперкомпьютер занимал несколько комнат и требовал специальный температурный режим для работы.
Для оценки производительности и сравнения таких вычислительных машин ввели термин «FLOPS»
Компьютерное столетие
Именно на таком уровне (человеческие секунды) мы общаемся с компьютером. Например, главная страница Хабра будет загружаться около пяти столетий. Вдумайтесь! Полтысячи лет! Если во времена Шекспира начать, секунда за секундой, работать над загрузкой страницы, работа всё ещё может быть не закончена в XXI веке!
Надеюсь, что данный мысленный эксперимент вам показался настолько же захватывающим и невероятным, как и мне. Многие вещи становятся более понятными и осязаемыми, если перевести их в компьютерные секунды. Например, читая "Операционные системы" Танненбаума, я недоумевал, как компьютер может вообще успевать что-то делать, если переключение в/из ядра ОС — такая сложная операция? Но если перевести это в "компьютерное" время, то это всего-то час труда раз в пару месяцев.
Самые мощные суперкомпьютеры
Суперкомпьютер Cray 1
Вычислительная машина Cray 1, которая одной из первых заслужила титул «суперкомпьютера», была создана в 1974 году. Её производительность оценивалась в 180 миллионов операций в секунду.
Суперкомпьютеры NEC SX-2 (слева) и М-13 (справа)
Порог в 1 миллиард флопс (1 Гигафлопс) был преодолен уже в 1983 году. На тот момент рекордсменами считались суперкомпьютеры NEC SX-2 (производительность 1.3 Гфлопс) и М-13 академика Карцева (2.4 Гфлопс).
Суперкомпьютер ASCI Red
В середине 90-х вычислительная мощность суперкомпьютеров вычислялась уже триллионами флопс. Граница 1 Тфлопс была впервые преодолена в 1996-ом компьютером ASCI Red.
Суперкомпьютер IBM Roadrunner
1 квадриллион флопс (1 Петафлопс) покорился суперкомпьютеру IBM Roadrunner в 2008 году, аналитики полагают, что к 2020 году появятся экзафлопсные компьютеры, способных выполнять 1 квинтиллион операций с плавающей точкой в секунду.
Суперкомпьютер Sunway TaihuLight
C 1993 ведется международный рейтинг Top500 для оценки и сравнения производительности суперкомпьютеров. Сейчас топ возглавляет китайская разработка Sunway TaihuLight с вычислительной мощностью 93 петафлопс, запущенная в июне 2016 года.
Современные компьютеры и игровые консоли
Большая вычислительная мощность с 90-х годов становится доступна в домашних и офисных компьютерах.
- Популярный процессор 1999-2000 годов Intel Pentium III 500—1000 МГц имел производительность до 1-2 гигафлопс.
- В 2010 топовые модели были на уровне AMD Athlon II X4 640 3,0 ГГц с мощностью до 37,4 гигафлопс.
- Относительно современный Intel Core i7 (Haswell) с частотой 3,0-3,5 ГГц бьет планку в 350 гигафлопс.
Современные игровые консоли имеют такую производительность: Microsoft Xbox One — 1,23 терафлопса, Sony PlayStation 4 — 1,84 терафлопса, Nintendo Wii U — 352 гигафлопса.
Компьютерная минута
Этот промежуток времени интереснее. За минуту может произойти многое. По человеческим меркам эта минута равна примерно 24 наносекундам.
Что же может произойти за компьютерную минуту?
Электрический сигнал пройдет всю длину кабеля от компьютера до монитора.
За две минуты произойдет обращение к данным в оперативной памяти.
За несколько минут JVM сможет сделать объект String из маленького массива байтов.
Разрядности некоторых процессоров для ПК
* — Мультиплексированная шина данных и адреса (для ЦП с интегрированным контроллёром памяти — только межпроцессорная)
«A/B|C/D» — для данных указана разрядность скалярного целого / вещественного | векторного целого / вещественного доменов
«X+Y» — имеет домены этого вида двух разрядностей
«X-Y» — в зависимости от команды или ФУ принимает все промежуточные значения с целой степенью двойки
В модуль ALU (в последних процессорах их уже несколько) поступают все инструкции и данные, необходимые для целочисленных вычислений; как правило, это один из самых быстрых в плане тактовой частоты модулей процессора. Упрощенно процесс его работы можно представить следующим образом: поступили данные (две цифры - 3 и 4), поступила инструкция (операция умножения). На выходе получили результат - 12. Разрядность процессора (4-бит или 64-бит) не влияет на данную схему. Прежде чем данные попадут в ALU, они должны быть туда загружены из некоего источника: винчестера, RAM или внешней памяти; при этом процессор чаще всего получает их через кэш. Из кэш данные попадают непосредственно в процессор через посредника, роль которого выполняет набор совсем уж небольших блоков для хранения данных, работающих на очень большой скорости и называющихся регистрами.
Как раз оттуда ALU и получает данные, с которыми работает, и для ALU операция формулируется не как "3 * 4", а:
"содержимое регистра А” - (расшифрованный код операции) – “содержимое регистра В" - сохранить результат в один из регистров (может быть, даже в один из использовавшихся в операции)
откуда он потом, при необходимости, может быть взят для еще одной операции или же быть записан в оперативную память, освободив драгоценное место.
Когда мы говорим о разрядности процессора, то, практически, в первую очередь мы говорим как раз о разрядности этих регистров - могут ли они хранить 8, 16, 32, или 64-бит числа.
С дробными числами, с числами с плавающей точкой ситуация обстоит совершенно иным образом. Для их хранения и операций с ними требуется прежде всего больший объем - это очевидно, учитывая, сколько цифр приходится хранить для подобных чисел. Особенно, если требуется повышенная точность и, соответственно, увеличенное число знаков после запятой. Поскольку необходимость в работе с ними возникла не вчера, то никто здесь прихода 64-бит процессоров ждать и не собирался.
С числами с плавающей запятой работает отдельный набор инструкций х87, с ними оперируют отдельные вычислительные блоки, сведенные в модуль с общим названием "сопроцессор", а хранятся они и оперирует с ними процессор во внутреннем формате с 80-бит представлением. Ради чисел с плавающей запятой затевать переход на 64 разряда явно не требовалось. Тем более что это направление развивается совершенно автономным образом - SSE, 3DNow и так далее, так что переход х86 с 32-бит на 64 его затрагивает весьма слабо.
Существует, впрочем, и еще один аспект вопроса, а именно - доступ к памяти. Дело в том, что в базовом режиме, так называемом "flat addressing", те же самые регистры общего назначения используются для хранения адресов доступа к памяти. 32 бита дают нам 4.3 миллиарда возможных комбинаций, так что 32-бит процессор может, таким образом, осилить память емкостью 4.3 Гбайт. Адреса ячеек, имеющих номера более этого числа, он попросту не может хранить в своих регистрах.
Очевидно, что здесь польза от 64 бит проявляется наиболее заметно, поскольку объем адресуемого пространства сразу увеличивается до 18 терабайт. Но прямая адресация 4 Гбайт оперативной памяти в настоящее время требуется, в основном, лишь в серверах, хотя через несколько лет, очевидно, до таких объемов доберутся и PC.
В первую очередь выигрыш от перехода на 64-разрядные процессоры получают серверы баз данных, где серьезные базы давно уже переросли объем в 4 Гбайт, а возможность кэшировать их полностью в оперативной памяти слишком заманчива в плане производительности. Производители серверных решений не стали дожидаться перехода: за счет использования различных подходов, 32-бит Xeon позволяет адресовать более 4 Гбайт данных (до 64 Гбайт), хотя, конечно подобные полухакерские решения трудно назвать серьезной платформой под будущее, да и падение производительности при операциях с памятью при этом измеряется в десятках процентов. Впрочем, будущее от Intel - это Itanium, а не Xeon.
Перед математиками и конструкторами в 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
Терафлопс (TFLOPS) — величина, используемая для измерения производительности компьютеров, показывающая, сколько операций с плавающей запятой в секунду выполняет данная вычислительная система. 1 терафлопс = 1 триллион операций в секунду = 1000 миллиардов операций в секунду. Обычно имеются в виду операции над плавающими числами размера 64 бита в формате IEEE 754.
TFLOPS = 1012 FLOPS = 103 GFLOPS
Чтобы найти пиковую производительность ЭВМ R, терафлопс, нужно тактовую частоту F, МГц, умножить на число процессоров (процессорных ядер) n, домножить на количество инструкций с плавающей запятой на такт (4 для процессоров Core2 — 2 операции Float Multiple Add) и поделить на 1******0:
Так, например, пиковая производительность компьютера на базе двухъядерного процессора AMD Phenom 9500 sAM2+ с тактовой частотой 2,2 ГГц равна:
2200 МГц × 2 ядра × 4×10-6 = 17,6 млрд операций в секунду = 0,0176 терафлопс.
Для четырехядерного процессора Core 2 Quad Q6600:
2400 МГц × 4 ядра × 4×10-6 = 38,4 млрд операций в секунду = 0,0384 терафлопс.
Скопипастено с Википедии
Т.е. находите нужные данные для своего процессора, подставляете их в формулу и находите кол-во операций в секунду.
Для моего Intel Pentium 4:
3000 х 1 х 2 х 10-6 = 6 млрд операций в секунду = 0.006 терафлопс.
В конце прошлого века для описания мощных и производительных вычислительных машин применялся термин «суперкомпьютер». Такие устройства стоили очень дорого и были довольно громоздкими. Иногда суперкомпьютер занимал несколько комнат и требовал специальный температурный режим для работы.
Для оценки производительности и сравнения таких вычислительных машин ввели термин «FLOPS»
К чему все это
Увлеченные презентациями новых iPhone и iPad, в постоянных сравнениях Apple и Samsung, в череде анонсов Xiaomi и Meizu мы просто перестали обращать внимание на простые вещи. Всего за 10-20 лет технологии шагнули вперед настолько, что гаджеты, помещающиеся в кармане джинсов, можно сравнивать с компьютерами, которые не поместились бы в нашей квартире.
5 лет назад Стив Джобс показал iPhone, который превосходил суперкомпьютеры 80-х, а в сентябре 2016-го Тим Кук представил смартфон, который мощнее любого домашнего компьютера из нашего детства.
Очень интересно, как будут развиваться технологии дальше. Увидим ли мы еще больший скачок в производительности или пик роста мощности мы наблюдали в последние годы? Сможет ли условный iPhone 10 сравниться с представленным недавно MacBook Pro?
(5.00 из 5, оценили: 2)
я не говорю про рекорды вычисления а простые цыфры к примеру процов
AMD Athlon X2 Dual-Core 7850 и Intel® Core™ i7 (на соответствующим ему железе и ОС)
я не говорю про кеш и другие тех данные, но предположим что они +/- одинаковые
Время для компьютеров течет не так, как для людей. То, что человеческим мозгом воспринимается как мгновение, для компьютеров растягивается на долгие эпохи. Данная статья — это метафора, в попытке осознать этот простой и в общем-то очевидный факт.
Компьютерный год
Предлагаю перескочить через сутки и месяцы и сразу перейти к годам (~12мс), за год может произойти очень много разных событий:
Запрос, обрабатываемый базой данных несколько месяцев, можно считать быстрым.
Примерно раз в компьютерный год должно меняться изображение на мониторе, чтобы соответствовать частоте 60 Hz.
Около трех лет уходит на выполнение пинга 8.8.8.8 (три года, Карл! человек за это время может пешком дойти до сервера и вернуться!)
Десяток лет может пройти от нажатия на клавиатуру до появления символа на экране монитора.
Компьютерный час
На этом этапе мы переходим от человеческих наносекунд к микросекундам: компьютерный час равен 1.44 мкс.
Может выполниться пузырьковая сортировка небольшого массива, когда-то написанная мной в образовательных целях. (вдумайтесь: если процессор каждую секунду делает по простому действию, то для сортировки маленького массива ему понадобятся часы!)
За десяток-другой часов процессор может запросить и получить данные у достаточно производительного SSD.
Компьютерная секунда
Я предлагаю подумать, как выглядела бы работа современного компьютера, если бы каждому такту процессора соответствовала одна секунда в субъективном мироощущении каких-нибудь существ, которые, как мы знаем, и управляют всей техникой ("гарантийные человечки" или, на современный лад, "фиксики"). Для таких человечков частота процессора будет равно ровно 1 Hz.
Я пишу эту статью на ноутбуке с восьмиядерным процессором базовой частотой в 2.4 GHz, то есть один такт раз в ~0,4 наносекунды (округление очень грубое). Это значение и будет нашей "компьютерной секундой".
Что же происходит за время, равное такой секунде?
Восемь ядер процессора успевают выполнить несколько элементарных операций вроде сложения чисел.
Свет проходит около 12 сантиметров (в вакууме).
За пять секунд процессор может получить данные из кэша первого уровня.
Мобильные гаджеты в нашем кармане
Процессоры в последних моделях iPhone и iPad имеют мощность, которая измеряется в десятках и сотнях Гигафлопс. Новинка 2011-го года – Apple A5, который был «сердцем» iPhone 4S, iPad 2, iPad Mini, Apple TV 3 и iPod Touch пятого поколения, выдавал до 16 Гигафлопс.
Представленный в 2014 году Apple A8 (iPhone 6/ 6 Plus, iPad mini 4 и Apple TV 4) может похвастаться показателем уже в 115 Гигафлопс.
Начинка нового iPhone 7 и iPhone 7 Plus (процессор A10 Fusion) выжимает более 400 Гигафлопс.
Если сравнить эти показатели с суперкомпьютерами 80-90х, то видим, что iPhone 4S сопоставим с самыми мощными вычислительными устройствами конца 80-х годов, а топовая техника начала 90-х по производительности не далеко ушла от современного iPhone 7.
Инфляция временных единиц
Для большинства программистов прикладного уровня время, которым измеряется производительность программ, останавливается на масштабе миллисекунд: ну какая разница, будет ли элемент в браузере рендериться 50 или 200 микросекунд, если это всё равно ничтожно малое значение? Какая разница, выполняется ли запрос в базу данных за 200 или за 500 микросекунд, если сетевые издержки на порядок больше? Безусловно, есть области программирования, где приходится спуститься на уровень наносекунд и единичных тактов, но в большей своей части программисты не думают такими временными понятиями. Я предлагаю подумать.
Читайте также: