Популярные услуги

Структурные методы уменьшения времени

2021-03-09СтудИзба

Лекция 4.

Структурные методы уменьшения времени доступа к памяти

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

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

Типовая современная иерархия памяти имеет следующую структуру:

• регистры 64 - 256 слов с временем доступа 1 такт процес­сора;

• кэш 1 уровня - 8к слов с временем доступа 1-2 такта;

• кэш 2 уровня - 256к слов с временем доступа 3-5 тактов;

• основная память - до 4 Гигаслов с временем доступа 12-55 тактов.

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

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

Рекомендуемые материалы

Кэш имеет совокупность строк (cache-lines), каждая из которых состо­ит из фиксированного количества адресуемых единиц памяти (байтов, слов) с последовательными адресами. Типичный размер строки: 16, 64, 128, 256 байтов.

Наиболее часто используются три способа организации кэш-памяти, отличающиеся объемом аппаратуры, требуемой для их реализации. Это так называемые кэш-память с прямым отображением (direct-mapped cache), частично ассоциативная кэш-память (set-associative cache) и ассоциатив­ная кэш-память (fully associative cache).

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

При этом устанавливается однозначное соответствие между адресом элемента памяти и возможным расположением этого элемента памяти в кэше, а именно: элемент памяти всегда располагается в строке, задавае­мой компонентой "номер строки" адреса, и находится на позиции строки, задаваемой компонентой "смещение" адреса,

Наличие элемента данных по запрашиваемому адресу в кэше опреде­ляется значением тега. Если тег строки кэш-памяти равен компоненте "тег" адреса, то элемент данных содержится в кэш-памяти.

Иначе необходима подкачка в кэш-память строки, с заданным в адресе тегом.

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

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

Ассоциативная кэш-память использует двухкомпонентное представле­ние адреса: группа старших разрядов трактуется как тег, а группа млад­ших разрядов - как смещение в строке.

Нахождение строки в кэше определяется совпадением тега-строки со зна­чением тега адреса. Количество строк в кэше может быть произвольным (естественное ограничение - количество возможных значений тегов). По­этому при определении нахождения требуемой строки в кэш-памяти необ­ходимо сравнение тега адреса с тегами всех строк кэша. Если выполнять это последовательно, строка за строкой, то время выполнения сравнений будет непозволительно большим. Поэтому сравнение выполняется параллельно во всех строках с использованием принципов построения ассоциативной памяти, что и дало название этому способу организации кэш-памяти.

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

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

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

Один способ предполагает внесение изменений в оперативную память сразу после изменения данных в кэше. При этом процессор простаивает в ожидании завершения записи в основную память. В основной памяти под­держивается правильная копия данных кэша, и при замене строк не требу­ется никаких дополнительных действий. Кэш-память, работающая в та­ком режиме, называется памятью со сквозной записью (write- through).

Другой способ предполагает отображение изменений в основной па­мяти только в момент вытеснения строки данных из кэша. Если данные по адресу памяти, в который необходимо произвести запись, находятся в кэш-памяти, то идет запись только в кэш-память. При отсутствии данных в кэш-памяти производится запись в основную память. Такой режим рабо­ты кэша получил название обратной записи (write-back).

Существуют также промежуточные варианты (buffed write though), при которых запросы на изменение в основной памяти буферизуются и не за­держивают процессор на время операции записи в память. Эта запись вы­полняется по мере возможности доступа контроллера кэш-памяти к ос­новной памяти.

В процессорах, предусматривающих возможность использования в мультипроцессорных конфигурациях, применяется более сложный прото­кол MESI (Modified, Exclusive, Shared, Invalid) организации кэш-памяти с обратной записью, который предотвращает лишние передачи данных ме­жду кэш-памятью и основной памятью.

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

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

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

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

Для изложения одного из алгоритмов поддержки когерентности кэшей, известного как DASH, зададим некоторые начальные условия и введем определения.

Каждый модуль имеет для каждой строки, резидентной в модуле, спи­сок модулей, в кэшах которых размещены копии строк.

С каждой строкой в резидентном для нее модуле свяжем три ее воз­можных глобальных состояния:

1) "некэшированная", если копия строки не находится в кэше какого-либо другого модуля, кроме, возможно, резидент­ного для этой строки;

2) "удаленно-разделенная", если копии строки размещены в кэшах других модулей;

3) "удаленно-измененная", если строка изменена операцией записи в каком-либо модуле.

Кроме этого, каждая строка кэша может находиться в одном из трех локальных состояний:

1) "невозможная к использованию";

2) "разделяемая", если есть неизмененная копия, которая, воз­можно, размещается также в других кэшах;

3) "измененная", если копия изменена операцией записи,

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

Бели глобальное состояние строки в резидентном модуле - "некэшированная" или "удаленно-разделенная", то копия строки посылается в за­просивший модуль, а в список модулей, содержащих копии рассматривае­мой строки, вносится модуль, запросивший копию.

Если состояние строки "удаленно-измененная", то запрос "промах чте­ния" перенаправляется в модуль, содержащий измененную строку. Этот модуль пересылает требуемую строку в запросивший модуль и в модуль, резидентный для этой строки, и устанавливает в резидентном модуле для этой строки состояние удаленно-распределенная .

Если процессор выполняет операцию записи и состояние строки, в ко­торую производится запись, - "измененная", то запись выполняется и вы­числения продолжаются. Если состояние строки - "невозможная к исполь­зованию" или "разделяемая", то модуль посылает в резидентный для строки модуль запрос на захват в исключительное использование этой строки и приостанавливает выполнение записи до получения подтверждений, что все остальные модули, разделяющие с ним рассматриваемую строку, пере­вели ее копии в состояние "невозможная к использованию".

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

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

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

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

Кэш-память с обратной записью создает меньшую нагрузку на шину процессора и обеспечивает большую производительность, однако контрол­лер для write-back кэша значительно сложнее.

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

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

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

Расслоение памяти. Другим структурным способом уменьшения времени доступа к памяти служит расслоение памяти. В предположении, что выборка из памяти выполняется по последовательным адресам возможно использование k блоков памяти с размещением в блоке i, где i=0,…, k-1, слов с адресами n=i+krrp mod k, где р=0,1,..., М. В этом случае возможно k парал­лельных обращений в память по адресам, принадлежащим различным бло­кам. Поэтому выборка команд программы за исключением команд, выби­раемых как результат ветвления, может быть ускорена применением расслое­ния памяти. Аналогично может быть ускорена обработка массивов данных, последовательные элементы которых помещаются в разные блоки памяти.

Многоуровневая иерархия и расслоение памяти могут использоваться совместно.

CISC-  и RISC- процессоры.

Аппаратные возможности процессоров определяются уровнем развития микроэлектронной технологии, которая ограничивает число логических элементов, размещаемых на кристалле. Фактически его размеры и число размещаемых на нем транзисторов почти целиком определяют тот набор аппаратных устройств, которые включаются в создаваемый процессор. Разработчики стремятся ввести в его состав как можно большее число различных арифметических и логических устройств, сопроцессоров и т.д., поскольку очевидно, что аппаратная реализация какой-либо функции обеспечивает более быстрое ее выполнение, чем программная. Да и длина кода для реализуемых аппаратным путем функций существенно меньше, Поэтому в 80-х годах процессоры "росли вширь", оснащались новыми узлами, совершенствуя уже имеющиеся. Кроме того, разработчикам процессоров приходилось постоянно подстраиваться под стремление программистов иметь возможно более мощную и гибкую систему команд. Такие системы команд с разнообразными способами адресации и наборами условных переходов и вызовов подпрограмм, строковыми операциями и префиксациями обеспечивали создание коротких программ, гарантировали меньшее число ошибок в них. И разработчики не могли не считаться с этим.

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

Первые ростки противоречий, приведших к тому, что пути занимающихся разработкой и производством МП компаний разошлись в разные стороны, обнаружились давно. За первые 10 лет существования МП сформировалась архитектура СISC (Complex Instruction Set Computing — вычисления со сложным  набором инструкций). В построенных по её принципам процессорах более 2/3 кристалла занимают логика, реализующая выборку и декодирование сложных инструкций, прямое взаимодействие не только с регистровой памятью, но и с внешней, а также изощрённые схемы адресации. При этом блоки, непосредственно занятые вычислениями занимают лишь 1/3 площади кристалла. На протяжении нескольких десятилетий системы команд эволюционировали, находясь в сложной зависимости от стоимости аппаратных ресурсов, и прежде всего самого дорогого из них – оперативной памяти. Инженерами руководило стремление сократить размер программ, для этого они старались вложить как можно больше функциональности в одну команду. К началу 80-х число таких команд достигло почти 300 сотен, и почти каждая из них имела до 6 типов адресации. К тому же команды не имели фиксированной длины.

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

Осознав указанные факты, многие исследователи уже в 80-е годы начали поиски альтернативных путей повышения производительности процессоров. Было ясно, что нужно попытаться уменьшить «накладные расходы», отъедающие до двух третей полезной площади кристалла, снизив число логических элементов в них до минимума. Для этого было необходимо перенести "центр тяжести" на программные средства, оставив минимально возможное число команд, имеющих простую и регулярную структуру. Другими словами, начала формироваться стратегия "длинная программа — короткие команды" в противовес господствующей «короткая программа — длинные команды». Оставалось только найти разумный компромисс между ресурсами, отводимыми основным вычис­лительным узлам процессора и устройствам управления.

И вскоре этот компромисс был найден. Вначале Джон Кук из IBM Research Labs на своем экспериментальном компьютере "model 801" показал, что при использовании в программе лишь простейших команд формата «регистр—регистр» (операнды извлекаются исключительно из регистров и после выполнения операции помещаются только в регистры) скорость выполнения большинства вычислительных задач возрастает в два-три раза. Затем учеными Стенфордского университета было показано, что исключение из набора команд сложных операций уменьшает число элементов процессора на порядок за счет упрощения схем управления ресурсами процессора (при этом производительность системы остается практически неизменной).

Опыт многочисленных исследователей статистических свойств программ выявил, что 80 % процессорного времени обычно тратится на выполнение всего 20 % от общего числа инструкций обычных CISC-процессоров. Причем все эти 20 % приходятся на команды типа "регистр—регистр".

И наконец, в работах Д. Паттерсона и К. Секуина были сформу­лированы четыре основных принципа, которые должны быть положены в основу процессоров группы RISC (Reduced Instruction Set Computing – вычисления с сокращенным набором команд):

а) любая операция, к какому бы типу она ни принадлежала, должна выполняться за один такт;

б) операции обработки данных реализуются только в формате “регистр—регистр”. Обмен между памятью и регистрами (т. е. модификация памяти и чтение из нее необходимых данных) осуществляется только лишь с помощью специальных команд чтения/записи;

в) система команд должна содержать минимальное число наиболее часто используемых простейших команд одинаковой длины:

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

Кстати, над идеями, вошедшими в концепцию RISC, трудились не только на Западе. Ещё в 70-х годах, когда американские учёные только приблизились к формулировке того, что стало называться RISC, в Советском Союзе уже были построены большие ЭВМ, в которых были реализованы решения, позволившие использовать RISC-архитектуру в области высокопроизводительных вычислений. Например, суперскалярная архитектура была реализована у нас 1978 году, в то время как американцы подошли к ней лишь в начале 90-х годов. А ведь именно суперскалярность называют сегодня 5-ым критерием принадлежности процессора к RISC-архитектуре.

Наиболее сложно выполнимое из упомянутых требований — первое, в соответствии с которым, каждая команда должна выполняться не более чем за один такт. Однако, несмотря на существенное упрощение, необходимо, чтобы устройство управления по-прежнему выполняло операции по чтению кода команды, декодированию, подготовке операндов, собственно выполнению команды и перемещению результата в соответствующий регистр. Если учесть, что каждая из этих операций обязана син­хронизироваться с фронтом (или спадом) сигнала тактового генератора, то единственно возможный вариант реше­ния проблемы - использование так называемого конвейера команд. При этом по первому перепаду сигнала тактового генератора в соответствующем устройстве выделяется код операции, который затем передается в устройство декодирования; по второму - в устройстве извлечения выделяется код операции следующей команды, а в устройстве декодирования происходит декодирование первой команды и передача ее в соответствующее исполнительное устройство - АЛУ, сопроцессор и т. д. Третий перепад сопровождается извлечением кода операции третьей команды, декодированием второй и подготовкой данных для выполнения первой.

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

Лекция "7 - Опорно-двигательная система клетки" также может быть Вам полезна.

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

Третья особенность, вытекающая из предыдущей, - развитые средства прогнозирования ветвлений и переходов. В программах для семейства х86 команда перехода встречается в среднем через каждые шесть, в программах для RISC-процессоров, команды которых проще, - через каждые 10... 12 команд. Встретив команду условного перехода, процессор должен сделать предположение о том, выполнится условие или нет, и в зависимости от этого начать предвыборку команд либо с адреса предполагаемого перехода, либо с адреса, следующего за текущим. Если переход предсказан неправиль­но, процессору необходимо удалить со всех ступеней конвейера команды, отно­сящиеся к неверно сделанному предположению, и перезагрузить конвейер. Это особенно сказывается на работе суперскалярных процессоров - на разных ступенях трех-четырех конвейеров может находиться довольно много команд. Их удаление с последующей перезагруз­кой приводит к тому, что в течение не­скольких тактов конвейер не покидает ни одна команда. Процессор, в котором это случается часто, теряет 20... 30 % своей производительности. Поэтому RISC-процессоры характеризуются весьма эффективными механизмами предсказания ветвлений. Кроме того, они содержат устройства, позволяющие выбрать те из команд в предсказанном переходе, которые можно выполнить прежде, чем станет ясно, правильно ли был предсказан переход.

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

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

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

В настоящее время на основе разработок компаний NexGen и AMD, подхваченных компанией Intel, предпринята попытка решить проблему повышения производительности в рамках архитектуры х86. Эти компании, сохраняя преемственность по системе команд с CISC-микропроцессорами семейства х86, создают новые устройства с использованием элементов RISC-архитектуры, использующие концепцию разделенной (decoupled) архи­тектуры и RISC ядра. В микропроцессор встраивается аппаратный трансля­тор, превращающий команды х86, в команды RISC-процессора. При этом одна команда х86 может порождать до четырех команд RISC-процессора. Исполнение команд происходит как в развитом суперскалярном процессоре.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5138
Авторов
на СтудИзбе
443
Средний доход
с одного платного файла
Обучение Подробнее