Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Системакоманд






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

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

• способы адресации данных.

 

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

Первые RISС-процессоры были разработаны в начале 1980-х годов в

Стэнфордском и Калифорнийском университетах США. Они выполняли небольшой (50 − 100) набор команд, тогда как обычные CISC (Сomplex Instruction Set computer) выполняли 100—200.

Частотаиспользованиянаиболееупотребляемыхсемействах 8 бкомандМПсемействах 86

Команда Доля (частота) использования при целочисленных вычислениях, %
I. Загрузка  
2. Условные переходы  
3. Сравнение  
4. Запоминание  
5. Сложение  
6. Логическое И  
7. Вычитание  
8. Пересылки регистр-регистр  
9. Вызов подпрограмм  
10. Возврат из подпрограмм  
Всего  

 

Данные табл. 4.1 наглядно иллюстрируют неравномерность использования различных команд в типовых программах. Это свойство системы команд было предпосылкой для развития МП с RISC-архитектурой (Reduced Instruction Set Computer — компьютер с сокращенным набором команд). Идея заключалась в упрощении блока управления за счет сокращения списка команд и использовании освобождающихся при этом ресурсов кристалла МП для организации более быстрого исполнения оставшихся команд. МП с расширенным списком команд соответственно относят к CISC-архитектуре (Complex Instruction Set Computer — компьютер со сложной системой команд).

 

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

 

CISC (англ. Complex Instruction Set Computing) — концепция проектирования процессоров, которая характеризуется следующим набором свойств:

− Нефиксированным значением длины команды.

− Арифметические действия, кодируется в одной инструкции.

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

Типичными представителями являются процессоры на основе x86 команд (исключая современные Intel Pentium 4, Pentium D, Core, AMD Athlon, Phenom которые являются гибридными).

Формально, все х86-процессоры являлись CISC-процессорами, однако новые процессоры, начиная с Intel486DX, являются CISC-процессорами с RISC-ядром. Они непосредственно перед исполнением преобразуют CISC-инструкции процессоров x86 в более простой набор внутренних инструкций RISC.

RISC (англ. Reduced Instruction Set Computing) — вычисления с сокращённым набором команд.

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

1. Одинаковая длина команд. Это облегчает их выборку из памяти. В отличие от CISC-процессоров RISC-процессоры не требуют выборки дополнительных слов команды. Все команды считы-ваются за один такт. В современных RISC-процессорах длина команды равна 32 бит.

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

3. Все вычислительные операции выполняются над данными, находящимися только в РОН. Так как регистров много, то все скалярные переменные и даже небольшие массивы переменных чаще всего размещаются в регистрах. Арифметические и логические команды являются трехадресными. Формат этих команд включает код операции и адреса регистров источников и приемника. Использование простых команд упрощает реализацию их конвейерной обработки. В среднем команды RISC выполняются за один такт.

4. Относительно простые схемы управления. Отсутствие микропрограмм внутри самого процессора. То, что в CISC процессоре исполняется микропрограммами, в RISC процессоре исполняется как обыкновенный (хотя и помещенный в специальное хранилище) машинной код, не отличающийся принципиально от кода ядра ОС и приложений.

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

 

Группыкоманд

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

− командыпересылки данных;

− арифметическиекоманды;

− логическиекоманды;

− командыпереходов.

 

Командыпересылки данных не требуют выполнения никаких операций над операндами. Операнды просто пересылаются (точнее, копируются) из источника (Source) в приемник (Destination). Источником и приемником могут быть внутренние регистры процессора, ячейки памяти или устройства ввода/вывода. АЛУ в данном случае не используется.

Арифметическиекоманды выполняют операции сложения, вычитания, умножения, деления, увеличения на единицу (инкрементирования), уменьшения на единицу (декрементирования) и т.д. Этим командам требуется один или два входных операнда. Формируют команды один выходной операнд.

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

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

 

Расширениястандартногонаборакоманд

Для организации групповой обработки данных в процессорах используется SIMD расширения к х86 инструкциям. Аббревиатура SIMD расшифровывается как Single Instruction Multiple Data (одна инструкция – множество данных). Под SIMD расширением понимается программно-аппартное решение, представляющее собой совокупность дополнительных регистров и наборов инструкций процессора, предназначенных для групповой обработки данных. Также необходимо наличие соответствующих компиляторов, ”знающих” SIMD инструкции и способных оптимизировать под них код.

ТехнологияММХ. В зависимости от контекста, ММХ может означать multi-media extensions (мультимедийные расширения) или matrix math extensions (матричные математические расширения).

MMX-расширение микропроцессора предназначено для поддержки приложений, ориентированных на работу с большими массивами данных целого типа, над которыми выполняются одинаковые операции. С данными такого типа обычно работают мультимедийные, графические, коммуникационные программы. По этой причине данное расширение архитектуры микропроцессоров Intel и названо MultiMedia eXtensions (MMX), что переводится как мультимедиа расширения.

Основа программной компоненты – система команд MMX-расширения (57 новых команд) и четыре новых типа данных. MMX-команды являются естественным дополнением основной системы команд микропроцессора. Основным принципом их работы является одновременная обработка нескольких единиц однотипных данных одной командой. Основа аппаратной компоненты – 8 MMX регистров, каждый размером в 64 бит. MMX работает только с целыми числами; поддерживаются данные размером в 1, 2, 4 или 8 байт.

Инструкции SSE, SSE2, SSE3. Обновление технологии ММХ, получившей название SSE (Streaming SIMD Extensions — потоковые расширения SIMD).

SSE прежде всего тем, что оперирует с данными вещественного типа, которые используются в геометрических расчётах, то есть, приложениях трёхмерной графики, компьютерных играх и многих других.

Инструкции SSE содержат 70 новых команд для работы с графикой и звуком в дополнение к существующим командам ММХ. Инструкции SSE позволяют выполнять операции с плавающей запятой, реализуемые в отдельном модуле процессора. Инструкции SSE2, содержащие в себе 144 дополнительные команды SIMD.

SSE3, призвано облегчить оптимизацию программ под SSE и SSE2. Причём, в первую очередь, сделать более легкой полностью автоматическую оптимизацию программ средствами компилятора.

Новые технологии SSE позволяют более эффективно работать с трехмерной графикой, потоками аудио- и видеоданных, а также приложениями распознавания речи. 3DNow и Enhanced 3DNow

Аналогично SSE, технологии 3DNow и Enhaneed 3DNow предназначены для ускорения обработки трехмерной графики, мультимедиа и других интенсивных вычислений.

3DNow представляет собой набор из 21 инструкции SIMD, которые оперируют массивом данных в виде единичного элемента. В Enhanced 3DNow к существующим добавлены еще 24 новых инструкции. Технологии обработки данных 3DNow и Enhanced 3DNow хотя и подобны SSE, но несовместимы на уровне инструкций, поэтому производи гелям программного обеспечения необходимо отдельно реализовать поддержку этих технологий.

Технология 3DNow, как и SSE, поддерживает операции SIMD с плавающей запятой, а также позволяет выполнять до четырех операций с плавающей запятой за один цикл. Инструкции 3DNow для операций с плавающей запятой могут использоваться вместе с командами ММХ без заметного снижения быстродействия. Поддерживается и упреждающая выборка данных — механизм предварительного считывания данных из кэшпамяти.

 

Процессор MMX EMMX 3DNow! SSE E3DNow! SSE2 SSE3
Intel Pentium II + - - - - - -
Intel Celeron до 533 MHz + - - - - - -
Intel Pentium III + - - + - - -
Intel Celeron 533-1400 MHz + - - + - - -
Intel Pentium 4 + - - + - + +/-*
Intel Celeron от 1700 MHz + - - + - + -
Intel Celeron D + - - + - + +
Intel Pentium 4 eXtreme Edition + - - + - + +/-*
Intel Pentium eXtreme Edition + - - + - + +
Intel Pentium D + - - + - + +
AMD K6 + + - - - - -
AMD K6-2 + + + - - - -
AMD K6-III + + + - - - -
AMD Athlon + + + - + - -
AMD Duron до 900 MHz + + + - + - -
AMD Athlon XP + + + + + - -
AMD Duron от 1000 MHz + + + + + - -
AMD Athlon 64 / Athlon FX + + + + + + +/-*
AMD Sempron + + + + + +/-* +/-*
AMD Athlon 64 X2 + + + + + + +
VIA C3 + + +/-* +/-* - - -

 

 

Архитектурныеспособыповышенияпроизводительностимикропроцессоров

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

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

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

 

Конвейеризация

Конвейерная обработка является «естественным» средством реализации параллелизма линейной последовательности команд. Процессор, в котором процесс исполнения команды разбивается на пять-шесть ступеней, называется обычным конвейерным процессором.

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

Типовыми этапами выполнения команд являются:

• выборка команды IF (Instruction Fetch);

• дешифирование команды ID (Instruction Decode);

• чтение операндов RD (Read Memory);

• исполнение заданной в команде операции EX (Execute);

• запись результата WB (Write Back).

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

Рис. 4.10. Конвейернаяобработка: а структурнаясхема 5- ступенчатогоконвейера; б конвейернаяобработкакоманд

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

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

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

Различают конфликты по ресурсам, конфликты поданным и конфликты по управлению.

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

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

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

 

Динамическоевыполнение

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

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

Суперскалярность

Суперскалярная организация означает, что на каждом этапе обрабатываются сразу несколько потоков инструкций (операций) в параллель — от выборки из кэша инструкций до полного завершения (отставки). Суперскалярность наряду с тактовой частотой является важнейшим показателем пропускной способности процессора. Уровень суперскалярности («ширина обработки», гарантированно обеспеченная на всех этапах) в современных производительных процессорах варьируется от 3 (P-III, P-4, K8) до 4-5 (P8, PPC970).

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

Приведём простой пример. Пусть нам следует исполнить следующую последовательность команд:

1) A = B + C

2) Z = X + Y

3) K = A + Z

Легко заметить, что команды (1) и (2) совершенно независимы друг от друга - они не пересекаются ни по исходным данным (переменные B и C в первом случае, X и Y во втором), ни по месту размещения результата (переменная A в первом случае и Z во втором). Стало быть, если на данный момент у нас есть свободные исполняющие блоки в количестве более одного, данные команды можно распределить по ним, и выполнить одновременно, а не последовательно. Таким образом, если принять время исполнения каждой команды равным N тактов процессора, то в классическом случае исполнение всей последовательности заняло бы N*3 тактов, а в случае с параллельным исполнением - всего N*2 тактов.

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

1) A = B + C

2) K = A + M

3) Z = X + Y

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

Процессоры, оснащённые механизмом параллельного исполнения нескольких подряд идущих команд, принято называть < суперскалярными>. Однако не все суперскалярные процессоры поддерживают внеочередное исполнение. Так, в первом примере нам достаточно < простой суперскалярности> (выполнения двух последовательных команд одновременно) - а вот во втором примере без перестановки команд местами уже не обойтись, если мы хотим получить максимальное быстродействие. Все современные x86 CPU обладают обоими качествами: являются суперскалярными, и поддерживают внеочередное исполнение команд.

 

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

С точки зрения скорости выполнения кода программы современным процессором, поддерживающим внеочередное исполнение, любая команда условного перехода затрудняет работу процессора. Пока процессору не станет известно, какой участок кода после условного перехода окажется < актуальным> - его невозможно начать декодировать и исполнять. Для того чтобы как-то совместить концепцию внеочередного исполнения с командами условного перехода, предназначается специальный блок: блок предсказания ветвлений. Он пытается предсказать, на какой участок кода укажет команда условного перехода, ещё до того, как она будет исполнена. В соответствии с указаниями блока предсказания ветвлений, процессором производятся вполне реальные действия: предсказанный участок кода загружается в кэш, и даже начинается декодирование и выполнение его команд. Причём среди выполняемых команд также могут содержаться инструкции условного перехода, и их результаты тоже предсказываются, что порождает целую цепочку из пока не проверенных предсказаний! Разумеется, если блок предсказания ветвлений ошибся, вся проделанная в соответствии с его предсказаниями работа просто аннулируется.

В любой более-менее сложной программе присутствуют команды условного перехода: < Если некое условие истинно - перейти к исполнению одного участка кода, если нет - другого>. На самом деле, алгоритмы, по которым работает блок предсказания ветвлений, вовсе не являются шедеврами искусственного интеллекта. Преимущественно они достаточно просты. Т.к. чаще всего команда условного перехода встречается в циклах: некий счётчик принимает значение X, и после каждого прохождения цикла значение счётчика уменьшается на единицу. Соответственно, до тех пор, пока значение счётчика больше нуля - осуществляется переход на начало цикла, а после того, как он становится равным нулю - исполнение продолжается дальше. Блок предсказания ветвлений просто анализирует результат выполнения команды условного перехода, и считает, что если N раз подряд результатом стал переход на определённый адрес - то и в N+1 случае будет осуществлён переход туда же. Однако, несмотря на весь примитивизм, данная схема работает весьма эффективно: например, в случае, если счётчик принимает значение 100, а < порог срабатывания> предсказателя ветвлений (N) равен двум переходам подряд на один и тот же адрес - легко заметить, что 97 переходов из 98 будут предсказаны правильно!

Несмотря на достаточно высокую эффективность простых алгоритмов, механизмы предсказания ветвлений в современных CPU всё равно постоянно совершенствуются и усложняются - но тут уже речь идёт о борьбе за единицы процентов: например, за то, чтобы повысить эффективность работы блока предсказания ветвлений с 95 процентов до 97, или даже до 99 %.

 

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

Блок предвыборки данных (Prefetch) очень похож по принципу своего действия на блок предсказания ветвлений - с той только разницей, что в данном случае речь идёт не о коде, а о данных. Общий принцип действия такой же: если встроенная схема анализа доступа к данным в ОЗУ решает, что к некоему участку памяти, ещё не загруженному в кэш, скоро будет осуществлён доступ - она даёт команду на загрузку данного участка памяти в кэш ещё до того, как он понадобится исполняемой программе.

4 kv4AAADhAQAAEwAAAAAAAAAAAAAAAAAAAAAAW0NvbnRlbnRfVHlwZXNdLnhtbFBLAQItABQABgAI AAAAIQA4/SH/1gAAAJQBAAALAAAAAAAAAAAAAAAAAC8BAABfcmVscy8ucmVsc1BLAQItABQABgAI AAAAIQAYF5NoxAQAAGg8AAAOAAAAAAAAAAAAAAAAAC4CAABkcnMvZTJvRG9jLnhtbFBLAQItABQA BgAIAAAAIQA/wW+83wAAAAgBAAAPAAAAAAAAAAAAAAAAAB4HAABkcnMvZG93bnJldi54bWxQSwUG AAAAAAQABADzAAAAKggAAAAA "> Результативно работающий блок предвыборки позволяет существенно сократить время доступа к нужным данным, и, соответственно, повысить скорость исполнения программы. К слову: грамотный блок предвыборки данных очень хорошо компенсирует высокую латентность подсистемы памяти, подгружая нужные данные в кэш, и тем самым, нивелируя задержки при доступе к ним, если бы они находились не в кэше, а в основном ОЗУ.

Однако, в случае ошибки блока предвыборки данных, неизбежны негативные последствия: загружая < ненужные> данные в кэш, блок предвыборки данных вытесняет из него другие (быть может, как раз нужные). Кроме того, за счёт предсказания операции считывания, создаётся дополнительная нагрузка на контроллер памяти.

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

 

64- битныерасширенияклассической x86 (IA32) архитектуры

Не так давно оба ведущих производителя x86 CPU анонсировали две практически идентичных* технологии (впрочем, AMD предпочитает называть это архитектурой), благодаря которым классические x86 (IA32) CPU получили статус 64-битных. В случае с AMD данная технология получила наименование (64-битная архитектура AMD), в случае с Intel - (расширенная 64-битная технология работы с памятью). Некоторые внутренние регистры процессоров стали вместо 32-битных 64-битными, 32-битные команды x86-кода получили свои 64-битные аналоги, кроме того, объём адресуемой памяти (включая не только физическую, но и виртуальную) многократно увеличился (за счёт того, что адрес приобрёл вместо 32-битного 64-битный формат).

Чтонеизменилось? В первую очередь - быстродействие процессоров. Вопиющей глупостью будет считать, что один и тот же процессор при переходе из привычного 32-битного в 64-битный режим (а 32-битный режим все нынешние x86 CPU поддерживают в обязательном порядке) станет работать в 2 раза быстрее. Разумеется, в некоторых случаях некое ускорение от использования 64-битной целочисленной арифметики может присутствовать - но количество этих случаев сильно ограничено, и большинства современного пользовательского программного обеспечения они никак не касаются. Кстати: а почему мы употребили термин < 64-битная целочисленная арифметика>? А потому, что блоки операций с плавающей точкой во всех x86процессорах уже давным-давно не 32-битные. И даже не 64-битные. Классический x87 FPU, окончательно ставший частью CPU ещё во времена старого доброго 32-битного Intel Pentium - ужебыл 80- битным. Операнды команд SSE и SSE2/3 - и вовсе 128-битные! В этом плане архитектура x86 достаточно парадоксальна: при всём притом, что формально процессоры данной архитектуры достаточно долгое время оставались 32-битными - разрядность тех блоков, где < большая битность> была реально необходима - наращивалась совершенно независимо от остальных.

Например, процессоры AMD Athlon XP и Intel Pentium 4 совмещали в себе блоки, работающие с 32-битными, 80-битными, и 128-битными операндами. 32-битными оставались лишь основной набор команд (унаследованный от первого процессора архитектуры IA32 - Intel 386) и адресация памяти (максимум 4 гигабайта, если не считать < извращений> типа Intel PAE).

Усовершенствования: появление команд для работы с 64-битными целыми числами, увеличение количества и/или разрядности регистров, и увеличение максимального объёма адресуемой памяти. Заметим: реальной пользы этих нововведений (особенно третьего!) никто не отрицает.

Архитектурыпроцессоров






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.