интересности

Объявления

Интересное

Фотосафари на Волыни

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

Подробнее...

ХОСТЕЛ «ALL FACES» В САНКТ-ПЕТЕРБУРГЕ

Если вы живете в России или близлежащих государствах, то вам обязательно нужно посетить Санкт-Петербург. Однако, не у всех тут есть родственники или друзья, где можно было бы провести ночь, поэтому возникает проблема проживания.

Подробнее...

Хочешь покататься на танке? Отправляйся в Новую Зеландию!

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

Подробнее...

Чандлер

Чендлер, штат Аризона, был назван по имени ветеринара, доктора Чандлера, который поселился в этом районе в 1891 году.

Подробнее...

Флаг и символ Корсики

Эмблема Корсики – голова Мавра с повязкой. Существует много гипотез почему?

Подробнее...

Скоттсдейл

Скоттсдейл является богатым городом в восточной части округа Марикопа, штат Аризона, США, рядом с Финиксом. Согласно переписи населения США, начиная с 2010 года, население города было 217385 человек.

Подробнее...

Проблемы китайских студенток – любить нельзя отказать

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

Подробнее...

Лондон. Или где гнездятся русские олигархи!

Итак, сегодня мы изучаем тему: «Пути миграции русских олигархов, их места обитания, кормления и способы размножения в дикой природе!»

Подробнее...

Корсиканский ослик

Еще одним символом Корсики является очень кроткое и милое животное –ослик.

Подробнее...

Когда поехать в Китай – лучшее время

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

Подробнее...

Полезное

Лепра: Купи инвайт и самовыражайся

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

Подробнее...

Борьба с бесплодием с помощью вспомогательной репродуктивной технологии

Для того что бы бороться с бесплодием необходимо понимать что же это такое.

Подробнее...

Как приобрести домен: Варианты

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

Подробнее...

Шины Белшина - всегда отменное качество!

ОАО «Белшина» является лидером по производству и продаже шинной продукции.

Подробнее...

Эффект лечения лекарствами и БАДами

Наша статья посвящена тому, чтоб дать точную характеристику и показания к применению, узнать из чего состоят лекарства и БАДы.

Подробнее...

Нарушенное зрение с самого рождения

Большинство младенцев (по разным источникам - до 80%) рождаются дальнозоркими (со слабым ближним зрением и острым дальним видением).

Подробнее...

Ремонт в Санкт-Петербурге: Качественно и безопасно

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

Подробнее...

Варианты оформления страховки для шенгенской визы

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

Подробнее...

Регистрация доменов через ресурс webmoney

Если вы хотите купить домен на http://domains.webmoney.ru то это стоит начать делать уже прямо сейчас так как вы можете получить результат успешной регистрации и что не менее главное успех реализации собственного дела в продвижение веб ресурса компании.

Подробнее...

Где взять медицинскую справку быстро и недорого?

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

Подробнее...

Статьи

Спецтехника в Казахстане по удобным ценам

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

Подробнее...

Туристическая индустрия Кипра приносит невероятные доходы.

Согласно проведенным подсчетам за четыре месяца нового года туристическая индустрия принесла Кипру 269,8 млн. евро, что превысило прошлогодние показатели на 23,7 процента, и показатели докризисного 2008 года на 7,5 процентов.

Подробнее...

Туристическое агентство Moja Adriatica

Наша компания расположена в Хорватии, официальное зарегистрированное название фирмы «Moja Adriatica» D.O.O. на русском языке звучит «Моя Адриатика» ООО.

Подробнее...

Упаковочная пленка для оранжереи.

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

Подробнее...

Туризм в Чехии

Чешская Республика — страна в центральной части Западной Европы.

Подробнее...

Совсем скоро в столице Татарстана

Совсем скоро в столице Татарстана пройдет первый международный фестиваль еврейской музыки.

Подробнее...

Скоро лето

Скоро лето, и многие меломаны уже закупились билетами на различные музыкальные мероприятия

Подробнее...

Шопинговое. Лакосты отправляются в Краснодар

Теперь немного об одежде. Решил заказать ее за рубежом. Выбор пал на британский магазин www.mainlinemenswear.co.uk.

Подробнее...

Что за зверь - компьютерная графика?

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

Подробнее...

Что делать если компьютер начал зависать?

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

Подробнее...

Реклама

Немного о мифах в связи с 64 битными процессорами

Совсем скорое появление 64-битного процессора AMD Hammer породил немалую активность общественности в плане обсуждения, темы увеличения разрядности процессоров. Причем основная тональность, которая имеет место быть, как это не странно – 64 против 32 бит означает двукратный прирост производительности. И это, понятное дело, неверно… Ноги подобных убеждений растут из сопредельной с персональными компьютерами области, а именно с сектора игровых консолей, где применялся коммерческий трюк с битностью – “64 битные” приставки как бы работают быстрее своих 32-битных конкурентов. Если привести пример из практики, то очень часто встречается такое вот утверждение: “64 битные процессоры работают в два раза быстрее 32-битных, потому что обрабатывают за такт в два раза больше данных”. В этой маленькой заметке мы попытаемся разобрать некоторые (далеко не все) аспекты 64-битности, и надеемся, что она может быть вам полезна.

Фоновый момент

Процессоры, ориентированные на массовое применение изначально работали и работают по принципу – SISD (Single Instruction, Single Data), что в переводе на русский язык означает примерно следующее – одна арифметическая инструкция процессора определяет один набор операндов и один результат.

С 1970 по 1986 год было время, когда параллелизм (способность выполнять несколько операций в течение каждого периода тактовой частоты) на уровне битности был очень важным моментом в области микропроцессоров. В те времена “битность” процессора определялась шириной регистров общего назначения, разрядностью ALU (арифметического логического устройства), и способностью адресовать тот или иной объем памяти по “плоскому” принципу. На примере продукции Intel, это выглядит так – 4-битный процессор 4004, 8-битный 8008, и 16-битный 8086. Все эти процессоры обеспечивали отличный параллелизм. Причиной тому, например, являлось то, что восьми битный процессор 8008 был в состоянии производить арифметические вычисления над целыми числами в диапазоне от –127 до 128, что не самым лучшим образом сказывалось на возможности оперировать за один раз значениями, выходящими за этот диапазон. Переход на использование 16-битных процессоров сразу облегчил реализацию многих задач – процессор 8086 оперировал шестнадцати битными операндами в диапазоне от –32768 до 32767. Это сразу привнесло в программирование работы этих микропроцессоров очень многое, открыв то, что ранее было достичь очень непросто.

Что на предмет работы с целыми числами?

Появление 32-битных процессоров в 1986 году совершило в некотором смысле революцию в этом смысле. 32-битный MPU оказался в состоянии оперировать целочисленными значениями диапазона от –2,147,483,648 до  2,147,483,647, чего более чем достаточно для различного рода вычислений. 64-битный MPU оперирует значениями за такт от –2^63 до 2^63, но это не значит, что он будет делать это с удвоенной производительностью. Причем на текущий момент трудно себе представить какую-либо “бытовую” задачу, в которой очень часто необходимо использовать переменные типа “64-bit Integer”  (по крайней мере, об этом говорят люди, программирующие такие бытовые задачи на Си или на Java). Даже в том случае, когда применение 64-битных переменных необходимо, большая часть выгоды от их использования “уезжает” и перекрывается накладными расходами компилятора по использованию временных регистров и оптимизации кода. Это все незаметно на уровне написания кода, то есть на “высоком” уровне.

Возвращаясь к принципу SISD надо помнить, что одна арифметическая инструкция имеет один и только один результат. Это означает, что если программа производит операцию “2+3”, то, будучи, представленной 32-битным целым, и выполненным на 32-битном процессоре, и будучи 64-битным целым и выполненным на 64-битном процессоре, эта операция в обоих случаях остается единой операцией. Таким образом, важно понимать, что появление возможности оперировать 64-битными целыми значениями в один такт работы процессора, не несет в большинстве случаев никаких преимуществ – за исключением ряда тонких областей применения компьютеров, таких как научные расчеты и моделирование, криптография, некоторые инженерные приложения и еще ряд других областей. Нельзя сказать, что 64-битность процессора – штука бесполезная, но неверным будет ожидать двукратного (или хоть какого-то) прироста производительности, например, в игре Quake 3. Даже, если Quake 3 будет переписан с использованием 64-битных переменных. Кроме того, как показывает практика, в таких случаях размер кода даже вырастет, по сравнению с исходным 32-битным вариантом.

А что на предмет операндов с плавающей точкой?

Увеличение разрядности процессора при работе с операндами с плавающей точкой дает два эффекта: куда больший диапазон значений, и что самое главное – куда большую точность. Однако, блок FPU в плане работы с операндами в целом независим от “битности” СPU. X86 CPU предыдущих поколений были адаптированы к “плавучке” x87, произведению вычислений с удвоенной точностью, также, как и опционально работали в 80-битном режиме. Современные полностью конвейеризированные x86 CPU в состоянии оперировать операндами с плавающей точкой с малым временем ожидания и высокой пропускной способностью, даже с операндами двойной точности. Хотя в x87 FP стек и формат операндов несколько замедляют работу блока в целом – но это уже другая история.

Почему в 64-битный режим может оказаться медленнее 32-битного?

Если все остальные условия будут одинаковы, и различия будут лишь в разрядности CPU, то 64-битная система будет работать медленнее 32-битной. Изучение этого вопроса, проведенное специалистами компании DEC, показало, что в случае оптимизации и компиляции программ под 64-битность, приводит к уменьшению производительности на 5 процентов. Выяснили и причину этого явления – 64 битные указатели на данные занимают в памяти больше места, чем 32-битные и от того страдает эффективность работы кэш памяти, и как следствие, это сказывается на производительности.

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

Для чего же подходят 64 битные вычисления?

64-битность  несет в себе и, безусловный и однозначно положительный момент: 64-битная плоская адресация памяти. Есть масса приложений, для которых возможность напрямую адресовать память за пределами 4 Гб, играет ключевую роль в конечной производительности. Например, типичным примером таких приложений являются серьезные СУБД типа SQL.

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

Как обстоят дела с x86-64?

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

Предполагается, что в режиме x86-64 удвоится число обычных регистров – с 8 до 16. Очевидно, что это позволит несколько снизить запросы в память на предмет операндов, и при соответствующей оптимизации кода под наличие этих 16 регистров, имеет смысл ожидать увеличения производительности при работе с целочисленным кодом на 5-10 процентов, по сравнению с обычной 8-регистровой моделью.

Кроме того, есть смысл ожидать еще 5-10 процентного увеличения скорости исполнения кода за счет оптимизации его под особенности AMD Hammer компиляторами.

Итого, 5-10 процентов за счет 16 регистров + 5-10 процентов за счет оптимизации дает нам прирост, при прочих равных условиях, на 10-20 процентов прироста производительности при использовании 64-битных процессоров в обычных, не специализированных приложениях.

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

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

В данном случае речь идет об использовании, например, таких технологий, как конвейеры. Причем конвейеры самого, что ни на есть современного вида (ибо этот принцип был известен задолго до появления первого процессора, а первая практическая реализация пятиступенчатого конвейера была реализована в процессоре Intel 80486), а именно максимально многоступенчатого. В частности, для увеличения тактовой частоты работы в качестве одного из моментов процессора (в потенциале) надо иметь конвейер достаточно серьезной глубины. Однако, в случае увеличения глубины конвейера возникает проблема, связанная с предсказанием ветвления. В решении этой проблемы помогает еще один “костыль” – Branch Target Buffer, с помощью которого реализован механизм динамического предсказания ветвления. Когда по мере исполнения внутренних инструкций встречалось ветвление (IF...ELSE или CASE 1...CASE N), в буфере запоминалась эта команда и адрес перехода. Эти данные использовались для предсказания перехода при повторном выполнении данной инструкции.

Вторым “костылем”, который позволяет несколько улучшить аспект работы с инструкциями, является увеличение количества исполнительных устройств. В частности, например, в процессоре AMD Hammer предполагается иметь три арифметически логических устройства (ALU), и три устройства адресации AGU для операций выгрузки из кэша и для записи в кэш, а также три устройства для операций с плавающей точкой.

Однако эффективность подобного метода, без существенного повышения тактовой частоты, не очень высока.

И этими методами не ограничивается различные ухищрения разработчиков процессоров в плане повышения производительности работы процессоров. Мы не будем на них подобно останавливаться, ибо рассмотрение архитектур текущих разработок не входит в тему этой заметки. К тому же, нас, как пользователей, волнует конечный продукт, а именно производительность готовых процессоров, которые мы вскоре увидим… Ждать осталось совсем недавно! А вот чего в принципе ждать от таких процессоров мы вкратце обрисовали.

СПРАВОЧНАЯ ИНФОРМАЦИЯ

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

Общий принцип работы процессора

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

Блок переупорядочивания – система декодирования и выборки команд, основанная на четком согласовании длин команд и их кодирования, избегающих сложных для реализаций вычислений;

Буфер восстановления последовательности – структура, которая управляет исполнением с изменением последовательности, отслеживая состояние команд, которые были переданы на исполнение, но удалены;

Взаимозависимость – ситуация, делающая невозможным выполнение одной команды до тех пор, пока не будет завершена другая. При истинной взаимозависимости (True Dependency) результат выполнения одной команды служит исходной информацией для другой. Ложные взаимозависимости (False Dependency) возникают при исполнении команд с изменением последовательности, но их можно избежать с помощью переименования регистров;

Выборка – процесс извлечения кода команды из кэша или памяти при подготовке к декодированию;

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

Двух потоковая (двухканальная) суперскалярная архитектура – обработка двух команд, поступающих в два конвейера. Она позволяет выдавать два результата за один такт (в идеале);

Дешифрация – исследование формата команды для того, чтобы определить тип операции и операнды, оговоренные в ней;

Исполнение по предположению – совокупность методов, позволяющая процессору обрабатывать команды, не будучи "уверенным" в том, что они когда-либо будут выполнены, например, после условного перехода;

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

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

Конвейер – "сборочная линия", где обработка команд разбивается на ряд небольших шагов или ступеней (Stages), выполняемых отдельными схемами;

Микрокоманда – термин для обозначения RISC-подобных внутренних операций, в которые преобразуются х86-команды с целью повышения скорости их обработки;

Микропрограмма (микрокод) – последовательность микрокоманд (наборов управляющих бит), используемых для координации выполнения сложных команд путем разбиения их на меньшие сегменты;

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

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

Останов – останов части конвейера на один или несколько тактов;

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

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

Плавающая точка – представление любого числа в виде одной цифры с десятичной дробью, за которой следует множитель (порядок числа 2 или другого, взятого за основание);

Предсказание переходов – процессор пытается "угадать", будет ли совершен конкретный переход;

Преобразовать в последовательную форму – заставить процессор приостановить передачу команд на исполнение до тех пор, пока не будет выведена определенная команда. Это требуется для определенных команд, которые нельзя обрабатывать вне установленного порядка;

Прогнозирование ветвлений – возможность процессора с определенной вероятностью предсказывать путь ветвления команды условного перехода;

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

Станция-резервуар – буфер, содержащий команды, которые дешифрованы, но еще не выполнены;

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

Суперскалярный процессор – процессор с двумя и более конвейерами, что позволяет выполнять более одной команды за один такт (в идеальных условиях);

Упорядоченное поступление, обработка и завершение – метод обработки команд, который в случае остановки или зависания одного конвейера, затрудняет, а то и останавливает обработку и прохождение команд по другому;

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

А вот как называются различные блоки, которые можно встретить в современных процессорах:

AGU (Address Generation Unit) – блок генерации адреса;

BTB (Branch Target Buffer) – буфер перехода к целям;

BUI (Bus Interface Unit) – блок шинного интерфейса;

DCache (Data Cache) – кэш данных;

EU (Execution Unit) – исполнительный блок;

FEU (Floating Point EU) – блок исполнения операций с плавающей точкой;

ICache (Instruction Cache) – кэш инструкций;

ID (Instruction Decoder) – дешифратор команд;

IEU (Integer EU) – блок исполнения целочисленных операций;

IFU (Instruction Fetch Unit) – блок выборки команд;

IOFE (In-Order Front End) – входной блок упорядоченной обработки;

IOR (In-Orded Retirement) – конвейер ввода-вывода команд из последовательности;

JEU (Jump EU) – блок исполнения переходов;

MEM IF (MEMory InterFace) – интерфейс шины памяти;

MIS (Microcode Instruction Sequencer) – подобие ПЗУ, содержащее набор заранее запрограммированных последовательностей обычных операций;

MIU (Memory Interface Unit) – блок интерфейса памяти;

MOB (Memory Order Buffer) – буфер упорядочивания операций в памяти;

O2C (Out-of-Orded Core) – ядро блока исполнения с изменением последовательности;

RAT (Register Alias Table) – таблица переименования (псевдонимов) регистров;

RRF (Retirement Register File) – регистр возвращения данных;

ROB (ReOrder Buffer) – буфер переупорядочивания;

RS (Reservation Station) – станция резервирования;

UNIP (Next_IP Unit) – блок назначения индекса поиска.


Смотрите также: