Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники 60117.doc
Скачиваний:
5
Добавлен:
01.05.2022
Размер:
961.02 Кб
Скачать

2.11. Переход на 64-разрядную архитектуру

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

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

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

Напомним основы работы процессоров и историю наращивания их разрядности - это послужит той необходимой платформой, от которой будет отталкиваться весь последующий анализ. Первым Intel-микропроцессором был 4004, 4-бит разрядности. Это означало, что процессорные регистры общего назначения могли хранить лишь числа такой размерности, ALU (arithmetic logic unit) - модуль, выполняющий вычисления с целыми числами, мог их обрабатывать, процессор мог использовать 4-бит числа при адресации к блокам памяти. То есть, к примеру, для инструкций, работающих с целыми числами, были доступны лишь значения от -7 до 8. Очевидно, маловато для любой арифметической операции. Справедливости ради следует сказать, что предусматривалось внешнее сцепление чипов в многоразрядные конструкции и соответствующее программное обеспечение позволяло обеспечивать вычисления на таком процессоре.

Впрочем, уже очень скоро появился на свет 8-бит 8008 (-127 - 128); скоро его сменил 16-бит 8086 и 80286 (-32768 - 32767), а уже в 1986 году мы увидели 80386 процессор, впервые реализовавший 32-бит режим работы, что дало возможность работы с числами свыше двух миллиардов.

Корпорация Intel, объявляя разработку новой архитектуры IA-64 (Merced-Itanium), учитывала, что с повсеместным распространением высокоуровневого интерфейса программирования и практически полным отказом от использования языка Ассемблера в сегодняшней программной индустрии (даже BIOS стали писать на С) переход на новую систему команд может произойти и более безболезненно, чем 30 лет назад, несмотря даже на гораздо больший объем накопленного программного обеспечения. Теперь совместимость на уровне языка Ассемблера уже не требуется, а совместимость на уровне языка высокого уровня достигается путем написания соответствующего компилятора.

AMD же, напротив, объявила о приверженности существующего набору команд даже в своем новом 64-разрядном процессоре.

В модуль 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.

Прямая адресация памяти выше 4 Гбайт в настольном компьютере требуется редко, однако совершенствование приложений, работающих с 2D и 3D графикой, а также с видео, уже в течение ближайших лет позволят перешагнуть этот барьер. Пользователь офисных приложений ничего не выиграет при переходе на 64-бит системы.

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

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

Уточнение "для той же архитектуры" было сделано отнюдь не зря, поскольку если мы отталкиваемся от х86, то это будет справедливо только для Athlon 64 и Opteron от AMD. Остальные разработчики 64-бит систем пошли по совсем другому направлению, разрабатывая под 64-бит специальные архитектуры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]