Главная страница  |   Обратная связь

Шпаргалки
 

  Шпаргалки

История экономики

Аудит

Экономика

Биомеханика в спорте

Философия

Финансы

Тактика

Финансовый менеджмент

Отечественная история

Экономический анализ

Право

Финансы организации

Геодезия

Анатомия

Философия науки

ИСЭ

Рынок ценных бумаг

Литература

Сетевая экономика

Экономика предприятия

Логика

Астрономия

Культурология

Мировая экономика

Банковское законодательство

Музыкальное воспитание ребенка

 

Лекции

Консультант Плюс 

Финансы, денежное обращение и кредит

Теория экономических информационных систем

Философии

Анатомия

Вычислительные машины, системы и сети

Аудит

Информатика

Строительное материаловедения

Всемирная история

История социальной работы

 
Rambler's Top100

 

Резьба по дереву. Орнамент, рельеф. Инструменты и технология. Действующий бизнес в Праге. купить готовый бизнес в Чехии.
 

.

Курс лекций по "Вычислительные машины, системы и сети"

Темы с 36 по 40

                   

    

36. Суперскалярные архитектуры

 

Процессор с единственным конвейе­ром называется скалярным; одновре­менно на ступень декодирования (вблизи начала конвейера) может по­пасть только одна команда. Более со­вершенные процессоры с нескольки­ми конвейерами носят название су­перскалярных. Эти процессоры могут выполнять за один такт более одной команды, поэтому при той же такто­вой частоте они способны обработать большее число команд, чем скаляр­ные (см. диаграмму «Двухпотоковая суперскалярная архитектура»).

Диаграмма «Двухпотоковая суперскалярная архитектура»

Ступень

Такты

1,2-й результат

3,4-й результат

5,6-й результат

Запись результата

 

 

 

 

 

 

 

 

1

2

3

4

5

6

Исполнение

 

 

 

 

 

 

1

2

3

4

5

6

7

8

Операнды

 

 

 

 

1

2

3

4

5

6

7

8

9

10

Декодирование

 

 

1

2

3

4

5

6

7

8

9

10

11

12

Выборка

1

2

3

4

5

6

7

8

9

10

11

12

13

14

Не все суперскалярные процессо­ры построены одинаково. Микро­процессоры Pentium фирмы Intel и М1 фирмы Cyrix могут обрабатывать по две команды, поступающие в два конвейера, поэтому они называются двухпотоковыми (dual-issue). Центральный процессор (ЦП) К5 фирмы AMD — это четырехпотоковый (quad-issue)  процессор.  Nx586 фирмы  NexGen лишь с натяжкой южно считать суперскалярным: он может выдавать лишь по одной команде х86 за такт, но эти команды преобразуются в несколько команд USC86, которые могут выполняться одновременно.

Ни один из рассматриваемых процессоров не может при любых обстоятельствах обрабатывать  одновременно максимальное допустимое для его архитектуры число команд.  В процессоре Pentium, например, наложены строгие ограничения на типы команд, которые могут обрабатываться одновременно (см. диаграмму «Ограничения на одновременное исполнение»). Процессоры Ml фирмы Cyrix и К5 фирмы AMD более либеральны в этом отношении, но также имеют свои ограничения.

Диаграмма «Ограничения на одновременное исполнение»

Ступень

Такты

1-й результат

2,3-й результат

4-й результат

Запись результата

 

 

 

 

 

 

 

 

1

-

2

3

4

-

Исполнение

 

 

 

 

 

 

1

-

2

3

4

-

5

6

Операнды

 

 

 

 

1

-

2

3

4

-

5

6

7

-

Декодирование

 

 

1

-

2

3

4

-

5

6

7

-

8

9

Выборка

1

2

2

3

4

5

5

6

7

8

8

9

10

11

 

37. Неупорядоченное выполнение

 

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

Диаграмма «Влия­ние «заторов» на конвейере»

Ступень

Такты

         затор              затор

1-й результат

 

2,3-й результат

 

затор

Запись результата

 

 

 

 

 

 

1

-

-

-

2

3

-

-

Исполнение

 

 

1

-

1

-

-

-

2

3

4

-

4

-

Операнды

1

-

2

3

2

3

2

3

4

-

5

6

5

6

Декодирование

2

3

4

-

4

-

4

-

5

6

7

-

7

-

Выборка

4

5

5

6

5

6

5

6

7

8

8

9

8

9

В процес­сорах типа Pentium, использующих упорядоченное поступление и обработ­ку (in-order issue) и упорядоченное за­вершение (in-order completion), все, что затрудняет завершение команды в одном конвейере, останавливает и другой, так как команды должны по­кидать конвейеры точно в том же порядке, в каком поступали на них. (Другими словами, конвейеры «ша­гают в ногу»; см. диаграмму «Влия­ние «заторов» на конвейере».) Это представляется рациональным спо­собом конструирования процессора, однако может оказаться далеко не самым эффективным с точки зрения производительности.

Архитектуры с неупорядоченным завершением (out-of-order completion) позволяют одному из конвейеров продолжать работать при «заторе» в другом. При этом команды, стоящие в программе позже, могут быть фак­тически выполнены раньше пред­ыдущих, «застрявших» в другом кон­вейере. Естественно, процессор дол­жен гарантировать, что результаты не будут записаны в память, а реги­стры модифицироваться в непра­вильной последовательности, по­скольку при этом могут получиться ошибочные результаты. Процессоры M1, K5 и Nx586 имеют средства неу­порядоченного завершения (называ­емого также неупорядоченным испол­нением — out-of-order execution).

Неупорядоченная обработка (out-of-order issue) развивает эту концеп­цию дальше, позволяя процессору выдавать и обрабатывать команды также не в порядке их следования по программе. Для реализации неупоря­доченной обработки обычно требует­ся буфер команд, или окно команд (instruction window), между ступеня­ми декодирования и исполнения конвейера. В некоторых процессорах используется центральное окно ко­манд, буферизующее все декодиро­ванные команды, которые направля­ются во все исполнительные блоки. Если такой процессор определяет, что в данный момент текущая ко­манда исполняться не может, он по­сылает в исполнительный блок сле­дующую команду, вместо того чтобы давать всему идти своим чередом.

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

 Процессор посылает команды в на­копитель по порядку, но после про­хождения через функциональные блоки их порядок может нарушить­ся, так как одни накопители будут освобождаться быстрее других. Та­кой подход применяется в ЦП К5 фирмы AMD; каждому из шести функциональных блоков процессора предшествует накопитель, в котором могут находиться две команды. Про­цессор Nx586 фирмы NexGen ис­пользует аналогичный подход, но с гораздо более емкими накопителями на 14 команд перед каждым функци­ональным блоком.

 

38. Переименование регистров

 

На пути повышения параллелизма вычислений стоит такое ограниче­ние: сколько бы команд одновремен­но ни способен был в принципе вы­полнить процессор, его производи­тельность будет ограничена из-за то­го, что некоторые операции просто нельзя завершить до выполнения других. Например, если вы хотите вычислить на машине значение вы­ражения , вам не удастся выполнить умножение и сложение одновременно, даже если процессор это позволяет; правила арифметики диктуют, что сначала должно быть выполнено умножение. Такая ситуа­ция называется истинной взаимо­зависимостью данных (true data dependency), или взаимозависимостью «чтение после записи» (read-after-write dependency). Это означает, что вход­ные данные для задачи сложения зависят от результата задачи умно­жения.

Производительность может сни­жаться также ложными взаимозависи­мостями (false dependency) двух ви­дов. Например, если две следующие друг за другом команды выполняют отдельные вычисления, но записыва­ют свои результаты в один и тот же регистр, выполнение второй коман­ды перед первой может привести к взаимозависимости по выходу (output dependency), или взаимозависимости «запись после записи» (write-after-write dependency), между второй и первой командами. Она возникает из-за то­го, что процессор должен гарантиро­вать правильность модификации ре­гистра, даже если команды, модифи­цирующие его, выполняются не по порядку. Второй тип ложной взаимо­зависимости, антивзаимозависимостъ (antidependency), или взаимозависи­мость «запись после чтения» (write-after-read dependency), возникает, ког­да вторая команда может испортить данные, необходимые в качестве входных для первой.

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

Можно повысить производитель­ность, избегая множества ложных взаимозависимостей путем переиме­нования регистров (register renaming). Процессоры с переименованием ре­гистров фактически имеют больше восьми регистров, определяемых ар­хитектурой х86. При этом, если ка­кой-либо команде требуется исполь­зовать регистр, процессор динамиче­ски ставит в соответствие этому ло­гическому (архитектурному) регистру один из более многочисленных фи­зических регистров. Если другая ко­манда пытается обратиться к тому же логическому регистру, процессор для предотвращения конфликта может поставить ему в соответствие другой физический регистр. Такие переиме­нования действуют, пока команды продвигаются по конвейерам.

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

Процессор Pentium не выполняет переименования регистров (во всяком случае фирма Intel не сообщает тако­го факта). Во всех остальных процес­сорах класса Pentium используется этот метод: ЦП Ml фирмы Cyrix име­ет 32 физических регистра, которые могут ставиться в соответствие вось­ми программно-видимым регистрам; в ЦП К5 фирмы AMD 40 регистров, а в Nx586 фирмы NexGen — 22.

 

39. Обходы и продвижения данных

 

Переименование регистров не может совсем исключить возникновение истинных взаимозависимостей дан­ных, однако есть другие методы, на­зываемые обходами (data bypassing) и, продвижениями данных (data forwarding), которые помогают уменьшить их влияние. (Два этих термина часто подменяют друг друга.) При обходах результаты выполнения одной команды сразу пересылаются следую­щей, так что исключаются задержки на модификацию и повторное чте­ние из регистра или памяти. Про­движение данных позволяет процес­сору выполнять некоторые команды параллельно, немедленно передавая результаты одной из них в другую, которой они не потребуются до бо­лее поздней ступени конвейерной обработки.

Фирма Intel не сообщает, реали­зованы ли в ЦП Pentium обходы и продвижения, однако все остальные процессоры класса Pentium имеют такие средства. Микропроцессор К5 выполняет обходы и продвижения данных; M1 — продвижение операн­дов и результатов, а также обходы регистров и памяти; Nx586 может продвигать данные из очередей па­мяти и выполнять обходы на раз­личных ступенях конвейера. Фирма Cyrix относит большую часть 30%-ного превосходства в производитель­ности процессора M1 перед ЦП Pentium на счет схем обходов и про­движения данных.

 

40. Метод прогнозирования переходов

 

От всех этих приемов по увеличению производительности — суперскалярных архитектур, неупорядоченной обработки, продвижения данных мало проку, если разработчик про­цессора не занялся проблемой проце­дурных взаимозависимостей (proce­dural dependencies), вытекающей из наличия переходов в программе. Пе­реход — это изменение последова­тельности выполнения команд. Пе­реход может зависеть от результата сравнения (например, если х > 0, сделать то-то), в этом случае он называется условным. Переходы мо­гут также быть обязательным, или безусловными (как в обычном опе­раторе goto).

Переходы встречаются в среднем через каждые шесть команд х86. По­скольку условные переходы (ветвле­ния) обычно разрешаются только на исполнительной ступени конвейера, процессор не знает, какие команды следует направлять в конвейер не­посредственно вслед за командой перехода. (Если в приведенном вы­ше примере х > 0, процессор должен выполнить одну последовательность команд, а если х < 0 — другую.)

Лучший вариант действия процес­сора, встретившего команду услов­ного перехода, — сделать предполо­жение о пути ветвления; такой метод называется прогнозированием ветвле­ния (branch prediction). Без этого процессору пришлось бы выбрасы­вать частично выполненные коман­ды из конвейеров при каждом пере­ходе. Это особенно неприятно в су­перскалярных процессорах, посколь­ку в конвейере на различных стадиях исполнения может быть достаточно много команд.

Процессор может предсказать, произойдет или не произойдет пере­ход. В любом случае процессор на­чинает выборку команд с предска­занного им адреса перехода еще до того, как он узнает, верным ли был его прогноз. Процессор может даже начать выполнение некоторых из этих команд до разрешения условия перехода — метод, называемый ис­полнением по предположению (speculate execution). (Процессор, однако, не может модифицировать архитектурные регистры или память до однозначного разрешения пере­хода.) Некоторые процессоры обес­печивают несколько уровней пред­положений, прогнозируя дополни­тельные ветвления до разрешения первого.

Иногда процессор делает непра­вильное предположение — неверно прогнозирует ветвление. Когда это происходит, он должен отменить все выполненные по предположению команды и очистить конвейеры. Вообще говоря, неправильно пред­сказанные ветвления очень замет­но снижают производительность, по­этому во всех ЦП класса Pentium приняты меры, чтобы свести их чис­ло к минимуму.

Как Pentium, так и Ml использу­ют для прогнозирования ветвлений буфер адреса перехода (branch target buffer) на 256 позиций. Чтобы по­мочь сделать прогноз, этот буфер от­слеживает и хранит данные о резуль­татах 256 последних ветвлений. Про­гнозирование ветвлений в архитек­туре процессора Ml фирмы Cyrix идет еще дальше, дополняя систему стеком возвратов (return stack), кото­рый специально отслеживает перехо­ды, происходящие в паре команд CALL/RETURN.

В процессоре К5 фирмы AMD применяется совершенно другой подход к прогнозированию ветвле­ний. Вместо того чтобы использовать специальный буфер адреса перехода, К5 добавляет информацию о перехо­дах к каждой из 1024 16-байт строк имеющейся на кристалле кэш-памя­ти команд. Здесь приводится адрес первого перехода в строке кэш-памя­ти и указывается, как следует про­гнозировать ветвление — как выпол­няемое или невыполняемое. Неболь­шой недостаток этого подхода состо­ит в том, что нельзя сохранить ин­формацию о более чем одном пере­ходе в строке кэш-памяти.

Фирма NexGen не раскрывает подробности своего запатентованно­го механизма прогнозирования ветв­лений. Исследование, выполненное журналом Microprocessor Report на основе изучения патентной инфор­мации, показало, что в ЦП Nx586 используется кэш-память адресов переходов на 96 элементов, каждый из которых представляет собой 24-байтную команду, начиная с адреса пе­рехода.

  

 

Курс лекций по "Вычислительные машины, системы и сети"  Темы с 1 по 5

Курс лекций по "Вычислительные машины, системы и сети"  Темы с 6 по 10

Курс лекций по "Вычислительные машины, системы и сети"  Темы с 11 по 15

Курс лекций по "Вычислительные машины, системы и сети"  Темы с 16 по 20

Курс лекций по "Вычислительные машины, системы и сети"  Темы с 21 по 25

Курс лекций по "Вычислительные машины, системы и сети"  Темы с 26 по 30

Курс лекций по "Вычислительные машины, системы и сети"  Темы с 31 по 35

Курс лекций по "Вычислительные машины, системы и сети"  Темы с 36 по 40

Учебники

1.C. : Бухгалтерия 7.7

Unix (Справочное руководство)

Закономерности итеративного научения Д.А. Новиков

Международное право Колосов Ю., Кузнецов В.

Мареев С. Мареева Е. История философии

История социальной работы


Разное

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

Руководство по стилям для создания online гипертекста

Инструкционная карта Excel 2000

Задания для практических работ по программе Microsoft EXCEL

 

 
 
 

Главная страница  |   Обратная связь