ТОП 10:

Что происходит во время записи?



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

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

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

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

  • сквозная запись (write through, store through) - информация записывается в два места: в блок кэш-памяти и в блок более низкого уровня памяти.
  • запись с обратным копированием (write back, copy back, store in) - информация записывается только в блок кэш-памяти. Модифицированный блок кэш-памяти записывается в основную память только когда он замещается.

 

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

 

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

При промахе во время записи имеются две дополнительные возможности:

  • разместить запись в кэш-памяти (write allocate) (называется также выборкой при записи (fetch on write)). Блок загружается в кэш-память, вслед за чем выполняются действия аналогичные выполняющимся при выполнении записи с попаданием. Это похоже на промах при чтении.
  • не размещать запись в кэш-памяти (называется также записью в окружение (write around)). Блок модифицируется на более низком уровне и не загружается в кэш-память.

 

2) Многоуровневая кэш-память

Кэш центрального процессора разделён на несколько уровней.

В универсальном процессоре в настоящее время число уровней может достигать 3.

Кэш-память уровня N+1 как правило больше по размеру и медленнее по скорости доступа и передаче данных, чем кэш-память уровня N.

Самой быстрой памятью является кэш первого уровня — L1-cache. По сути, она является неотъемлемой частью процессора, поскольку расположена на одном с ним кристалле и входит в состав функциональных блоков. В современных процессорах обычно кэш L1 разделен на два кэша, кэш команд (инструкций) и кэш данных (Гарвардская архитектура).

Вторым по быстродействию является L2-cache — кэш второго уровня, обычно он расположен на кристалле, как и L1. В старых процессорах — набор микросхем на системной плате.

Кэш третьего уровня наименее быстродействующий, но он может быть очень внушительного размера — более 24 Мбайт. L3 кэш медленнее предыдущих кэшей, но всё равно значительно быстрее, чем оперативная память.

Иногда существует и 4 уровень кэша, обыкновенно он расположен в отдельной микросхеме. Применение кэша 4 уровня оправдано только для высоко производительных серверов и Мейнфреймов.

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

Инклюзивная архитектура предполагает дублирование информации кэша верхнего уровня в нижнем (предпочитает фирма Intel).

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

В неэксклюзивной кэши могут вести себя как угодно.

 

Ассоциативность кэша

Одна из фундаментальных характеристик кэш-памяти — уровень ассоциативности — отображает её логическую сегментацию. Дело в том, что последовательный перебор всех строк кэша в поисках необходимых данных потребовал бы десятков тактов и свёл бы на нет весь выигрыш от использования встроенной в ЦП памяти. Поэтому ячейки ОЗУ жёстко привязываются к строкам кэш-памяти (в каждой строке могут быть данные из фиксированного набора адресов), что значительно сокращает время поиска. С каждой ячейкой ОЗУ может быть связано более одной строки кэш-памяти: например, n-канальная ассоциативность (англ. n-way set associative) обозначает, что информация по некоторому адресу оперативной памяти может храниться в n местах кэш-памяти.

При одинаковом объеме кэша схема с большей ассоциативностью будет наименее быстрой, но наиболее эффективной.

 

 

Билет №4

Организация системной шины персональных компьютеров. Взаимодействие основных аппаратных модулей. Управление доступом к основной памяти и подсистеме ввода/вывода. Классификация и адресация портов ввода/вывода.

1) Физически обмен информацией между процессором и памятью осуществляется по множеству проводников, называемых системной шиной. Шина – это группа проводников, соединяющих различные устройства. По шине передаются сами команды или данные, адрес(вспомогательный процесс). Системная шина состоит из трёх линий:

1. линия данных

2. линия адреса

3. линия управления

 

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

 

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

 

Всеми операциями на системной шине управляет центральный процессор.

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

1. запрос системной шины

2. кража системной шины

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

 

Шины могут быть внутренними (внутри процессора) и внешними (соединяют процессор с памятью, устройствами ввода-вывода и т. д.). Мы будем рассматривать только внешние шины. У первых персональных компьютеров была только одна шина и называлась она системной. Современные компьютеры содержат специальную шину между процессором и памятью и по крайней мере еще одну шину для связи с устройствами ввода-вывода. Шины могут быть различны по характеристикам, однако из соображений совместимости и универсальности существуют определенные правила, называемые протоколом шины. В соответствие с этим существует некоторое количество типов шин, например: USB, ISA, SCSI, PC/2, PCI. Рассмотрим принцип работы шины. Некоторые устройства, подключенные к ней могут быть активными и инициировать передачу данных по шине, другие же могут быть только пассивными, т.е. только ожидать запросов по шине, некоторые могут сочетать в себе обе эти характеристики. Память например никогда не может быть задающим (активным) устройством. Двоичные сигналы, выдаваемые компонентами компьютера часто недостаточно интенсивны, для их усиления используется микросхема, называющаяся драйвером шины. Сходным образом работает приемник шины, который усиливает соответственно входной сигнал. Приемопередатчик сочетает в себе обе этих функции. Эти устройства часто имеют возможность отсоединяться когда они не нужны. Если несколько устройств одновременно требуют доступ к шине, то сия информация передается как булево «или» их сигналов.

 

2)Рассмотрим основные характеристики шины.

Ширина шины.

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

Синхронизация шины.

Так же шины делятся на синхронные и асинхронные. В первом случае все операции подчинены импульсам кварцевого генератора, присутствуют 3 линии сигналов: MREQ, RD, WAIT. Первый – сигнал о том что осуществляется доступ к памяти (т.е. что память приняла адрес, предоставленный ей процессором), второй – что осуществляется чтение а не запись и третий – что данные считываются но пока не доступны. В асинхронных же шинах все процессы управляются исключительно линиями сигналов: MREQ, RD, MSYN, SSYN. Когда задающее устройство выставляет адрес, MREQ, RD оно выдает специальный сигнал MSYN (Master SYNchronisation). Когда подчиненное устройство освобождается от предыдущей задачи, то оно выдает SSYN (Slave SYNchronisation). Когда цикл заканчивается то задающее устройство отменяет сигнал MSYN и вслед за этим подчиненное устройство отменяет SSYN.

Арбитраж шины.

Чтобы не возникала путаница при одновременном обращении к шине нескольких устройств, существует специальный механизм – арбитраж шины. Он может быть централизованным или децентрализованным. В первом случае имеется одна (или несколько) линий запроса шины и, опять же, одна или несколько линий приоритета. Устройства последовательно присоединены к этим линиям, образуя очередь, в которой ближайшее к арбитру устройство обладает наибольшим приоритетом. При запросе арбитр запрашивает ближайшее к нему устройство. Если оно выдавало запрос то оно начинает выполнять необходимые действия, в противном же случае оно передает сигнал дальше. Если же имеется несколько линий приоритета, то первая опрашивается линия с более высоким приоритетом и т.д. При децентрализованном арбитраже могут быть следующие варианты: существует множество линий приоритета, и каждое устройство контролирует все линии приоритета, таким образом оно может определить, является ли в данный момент приоритет наивысший или нет. Другой вариант – всего три линии: первая – для запросов, использует логическое ИЛИ, вторая – Busy, запускается текущим задающим устройством шины. Третья – линия арбитража, она последовательно соединяет все устройства шины, и работает также, как и при централизованном арбитраже, только начало задается источником питания, и сигнал либо проходит дальше, либо блокируется.

Примеры шин – PCI, ISA, EISA.

Обращение к памяти мы рассмотрели, а про подсистему ввода – вывода можно добавить то, что она обычно имеет высокий приоритет при арбитраже.

 

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

 

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

Классификация портов:

- порты состояния

- порты управления

- порты данных (буферные порты)

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

 

Способы адресации портов:

 

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

 

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

 

Требует наличия разделенных команд вне работы с ОП и портами в/в:

ОП mov, Dst,Src

Порты in, out, ost, Port, Port, Src.

Dst <-Port; Port <- Src;

 

 

Билет №5







Последнее изменение этой страницы: 2016-08-15; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.204.176.125 (0.01 с.)