- •Предисловие
- •Введение
- •Общие сведения о структурной организации, классификации, хронологии разработки и основных характеристиках вычислительных машин и систем
- •1.1. Теоретические и технические предпосылки разработки электронных вычислительных устройств
- •1.2. Структурная организация
- •1.3. Хронология разработки и эволюции
- •Контрольные вопросы и задания
- •2. Центральные процессоры вычислительных машин
- •2.1. Назначение, состав и основные характеристики процессоров
- •2.2. Архитектурные способы повышения производительности процессоров
- •2.3. История разработки микропроцессоров и эволюции их характеристик
- •2.4. Процессоры для портативных мобильных компьютеров
- •2.5. Процессоры для высокопроизводительных вычислительных машин и систем
- •Контрольные вопросы и задания
- •3. Запоминающие устройства вычислительных машин
- •3.1. Назначение, характеристики, типы запоминающих устройств и основные принципы их построения
- •3.3. Организация, функционирование и характеристики запоминающих устройств основной памяти
- •Важнейшие характеристики основных типов микросхем памяти представлены в табл. 3.1.
- •Характеристики основных типов микросхем памяти
- •3.4. Организация и функционирование кэш-памяти
- •3.5. Внешние запоминающие устройства на магнитных дисках
- •3.6. Внешние запоминающие устройства на магнитных лентах
- •3.7. Внешние запоминающие устройства на оптических дисках
- •3.8. Внешние запоминающие устройства на мобильных носителях информации
- •4. Устройства ввода-вывода информации
- •4.1. Устройства ввода информации
- •4.3. Компоненты аудиоподсистемы вычислительных машин
- •4.4. Печатающие устройства
- •Контрольные вопросы и задания
- •5. Организация коммуникаций функциональных устройств вычислительных машин
- •5.1. Общие понятия
- •5.2. Арбитраж шин
- •5.3. Физические аспекты передачи информации по шинам
- •5.4. Способы повышения эффективности шин
- •5.5. Эволюция и современное состояние шин персональных компьютеров
- •Контрольные вопросы и задания
- •6.1. Классификация вычислительных сетей
- •6.2. Основные понятия многоуровневого сетевого взаимодействия
- •6.3. Общие сведения о телекоммуникационных системах
- •Контрольные вопросы и задания
- •7. Физический уровень сетевых телекоммуникаций
- •7.1. Общие понятия
- •7.2. Кабельные линии связи
- •7.3. Беспроводные линии связи
- •7.4. Характеристики линий связи
- •7.5. Методы передачи дискретных данных на физическом уровне
- •Контрольные вопросы и задания
- •8. Канальный уровень сетевых телекоммуникаций
- •8.1. Организация канального уровня
- •8.2. Протокол передачи данных hdlc
- •8.3. Протокол передачи данных ррр
- •8.4. Управление доступом к среде передачи данных
- •Контрольные вопросы и задания
- •9. Основные типы аппаратных сетевых устройств физического и канального уровней
- •9.1. Сетевые адаптеры
- •9.2. Концентраторы
- •9.3. Мосты и коммутаторы
- •Контрольные вопросы и задания
- •10. Базовые сетевые технологии
- •10.1. Сетевые стандарты и спецификации
- •10.2. Технология локальных сетей Ethernet
- •10.3. Технология локальных сетей Fast Ethernet
- •10.4. Сетевая технология Gigabit Ethernet
- •10.5. Технология Token Ring
- •10.6. Технологии беспроводных локальных сетей
- •10.7. Технология беспроводных региональных сетей
- •10.8. Технология Bluetooth
- •Контрольные вопросы и задания
- •11. Объединение сетей средствами сетевого и транспортного уровней
- •11.1. Общие сведения о протоколах сетевого
- •11.2. Адресация ip-протокола
- •11.3. Маршрутизация и маршрутизаторы
- •Контрольные вопросы и задания
- •12. Технологии удаленного доступа и глобальных сетевых связей
- •12.1. Удаленные соединения
- •12.2. Технологии глобальных сетевых связей
- •Контрольные вопросы и задания
- •13. Организация и характеристики многопроцессорных вычислительных комплексов
- •13.1. Классификация и архитектура многопроцессорных вычислительных комплексов
- •13.2. Организация коммуникационных сред
- •13.3. Способы организации коммутации
- •Контрольные вопросы и задания
- •Заключение
- •Словарь терминов и определений
- •Алфавитно-предметный указатель
- •Вычислительная сеть 9, 197
- •Домен коллизий 250 Доступ к сети удаленный 315
- •Список основных сокращений
Важнейшие характеристики основных типов микросхем памяти представлены в табл. 3.1.
Таблица 3.1
Характеристики основных типов микросхем памяти
Наименование |
Максимальная физическая частота, МГц |
Максимальная эффективная частота, МГц |
Ширина шины, бит |
Пропускная способность, Мбайт/с |
SDR SDRAM
DDR SDRAM
DDR2 SDRAM
|
133
275
133
|
133
550
533
|
64
64
64
|
1064
4400
4256
|
Память типа ПЗУ организована аналогично ОЗУ. Микросхемы ПЗУ также построены по принципу матричной структуры и подключены к адресной линии и разрядной линиям считывания. Основным режимом работы ПЗУ является считывание информации, которое мало отличается от аналогичной операции в ОЗУ как по организации, так и по длительности. В то же время запись в ПЗУ по сравнению с чтением во многих схемах ПЗУ (см. подраздел 3.1) обычно сложнее и связана с большими затратами времени. Микросхема ПЗУ хранит информацию и при отключенном питании. Характерный объем памяти ПЗУ в современных компьютерах обычно составляет от 128 Кб до 2 Мб. Так как быстродействие ПЗУ существенно ниже быстродействия ОЗУ, для повышения производительности компьютера содержимое ПЗУ или его часть копируется в ОЗУ, и при работе непосредственно используется эта копия.
3.4. Организация и функционирование кэш-памяти
Как уже отмечалось, кэш-память строится на базе быстродействующих микросхем статической памяти SRAM. В процессе работы машины в буферную кэш-память копируются те участки ОЗУ, к которым производится обращение со стороны процессора. В общепринятой терминологии – производится отображение участков ОЗУ на кэш-память. Выигрыш достигается за счет ранее рассмотренного свойства локальности – если отобразить участок ОЗУ в более быстродействующую буферную кэш-память и переадресовать на нее все обращения в пределах скопированного участка, можно добиться существенного повышения производительности ВМ в целом.
В общем виде использование кэш-памяти происходит следующим образом. Когда процессор пытается прочитать слово из ОЗУ, сначала осуществляется поиск копии этого слова в кэш-памяти. Если такая копия существует, обращение к ОЗУ не производится, а в процессор передается слово, извлеченное из кэш-памяти. Данную ситуацию принято называть успешным обращением или попаданием (hit). При отсутствии слова в кэш-памяти, то есть при неуспешном обращении – промахе (miss) – требуемое слово передается в процессор из ОЗУ, но одновременно из ОЗУ в кэш-память пересылается блок данных, содержащий это слово.
Подсистема памяти, включающая ОЗУ и кэш-память, представляет собой следующую структуру. ОЗУ состоит из набора адресуемых слов (в количестве 2 в степени n), где каждое слово имеет уникальный n-разрядный адрес. При взаимодействии с кэш-памятью ОЗУ рассматривается как М блоков фиксированной длины по К слов в каждом. Кэш-память состоит из С блоков аналогичного размера (блоки в кэш-памяти принято называть строками), причем их число значительно меньше числа блоков в основной памяти (С « М). При считывании слова из какого-либо блока ОЗУ этот блок копируется в одну из строк кэш-памяти. Поскольку число блоков ОЗУ больше числа строк, отдельная строка не может быть выделена постоянно одному и тому же блоку ОЗУ. По этой причине каждой строке кэш-памяти соответствует тег (признак), содержащий сведения о том, копия какого блока ОЗУ в данный момент хранится в данной строке. В качестве тега обычно используется часть адреса ОЗУ.
На эффективность применения кэш-памяти в иерархической системе памяти влияет целый ряд моментов. К наиболее существенным из них можно отнести емкость кэш-памяти, размер строки, способ отображения ОЗУ на кэш-память, алгоритм замещения информации в заполненной кэш-памяти, алгоритм согласования содержимого ОЗУ и кэш-памяти, число уровней кэш-памяти.
Выбор емкости кэш-памяти – это всегда определенный компромисс. С одной стороны, кэш-память должна быть достаточно мала, чтобы ее стоимостные показатели были близки к величине, характерной для ОЗУ. С другой – она должна быть достаточно большой, чтобы среднее время доступа в подсистеме, состоящей из ОЗУ и кэш-памяти, определялось временем доступа к кэш-памяти. В пользу уменьшения размера кэш-памяти имеется больше мотивировок. Так, чем вместительнее кэш-память, тем больше логических схем должно участвовать в ее адресации. Как следствие, микросхемы кэш-памяти повышенной емкости работают медленнее по сравнению с микросхемами меньшей емкости, даже если они выполнены по одной и той же технологии. Реальная эффективность использования кэш-памяти зависит от характера решаемых задач, и невозможно заранее определить, какая емкость кэш-памяти будет действительно оптимальной. В общем случае, по мере увеличения емкости кэш-памяти вероятность промахов сначала существенно снижается, но при достижении определенного значения эффект сглаживается и становится несущественным.
Размер строки является важным фактором, влияющим на эффективность использования кэш-памяти. Когда в кэш-память помещается строка, вместе с требуемым словом туда попадают и соседние слова. По мере увеличения размера строки вероятность промахов сначала падает, так как в кэш-память, согласно принципу локальности, попадает все больше данных, которые понадобятся в ближайшее время. Однако вероятность промахов начинает расти, когда размер строки становится излишне большим. Это объясняется тем, что, во-первых, большие размеры строки уменьшают общее количество строк, которые можно загрузить в кэш-память, а малое число строк приводит к необходимости частой их смены; во-вторых, по мере увеличения размера строки каждое дополнительное слово оказывается дальше от запрошенного, поэтому такое дополнительное слово менее вероятно понадобится в ближайшем будущем. Зависимость между размером строки и вероятностью промахов во многом определяется характеристиками конкретной исполняемой программы. На практике размер строки обычно выбирают равным ширине шины данных, связывающей кэш-память с основной памятью.
Сущность способов отображения блока ОЗУ на кэш-память состоит в копировании этого блока в какую-то строку кэш-памяти, после чего все обращения к блоку в ОЗУ должны переадресовываться на соответствующую строку кэш-памяти. Удачным может быть признан лишь такой способ отображения, который одновременно отвечает трем требованиям: обеспечивает быструю проверку кэш-памяти на наличие в ней копии блока основной памяти; обеспечивает быстрое преобразование адреса блока ОЗУ в адрес строки кэш-памяти; реализует достижение первых двух требований наиболее экономными средствами.
Основная цель алгоритмов замещения информации в заполненной кэш-памяти – удерживать в кэш-памяти строки, к которым наиболее вероятны обращения в ближайшем будущем, и заменять строки, доступ к которым произойдет в более отдаленном времени или вообще не случится. Очевидно, что оптимальным будет алгоритм, который замещает ту строку, обращение к которой в будущем произойдет позже, чем к любой другой строке кэш-памяти. Такое оптимальное предсказание на практике нереализуемо, однако используются различные алгоритмы, которые в той или иной степени близки к оптимальному. Вне зависимости от используемого алгоритма замещения для достижения высокой скорости такой алгоритм должен быть реализован аппаратными средствами.
Наиболее эффективным является алгоритм замещения на основе «наиболее давнего использования» (Least Recently Used – LRU), при котором замещается та строка кэш-памяти, к которой дольше всего не было обращения. Наиболее известны два способа аппаратурной реализации этого алгоритма. В первом из них с каждой строкой кэш-памяти ассоциируют счетчик. К содержимому всех счетчиков через определенные интервалы времени добавляется единица. При обращении к строке ее счетчик обнуляется. Таким образом, наибольшее число будет в счетчике той строки, к которой дольше всего не было обращений, и эта строка замещается первой. Второй способ реализуется с помощью очереди, куда в порядке заполнения строк кэш-памяти заносятся ссылки на эти строки. При каждом обращении к строке ссылка на нее перемещается в конец очереди. В итоге первой в очереди каждый раз оказывается ссылка на строку, к которой дольше всего не было обращений. Именно эта строка прежде всего и заменяется.
Другой возможный алгоритм замещения – алгоритм, работающий по принципу очереди типа «первый вошел, первый вышел» (First In First Out – FIFO). Здесь заменяется строка, дольше всего находившаяся в кэш-памяти. Алгоритм легко реализуется с помощью рассмотренной ранее очереди, с той лишь разницей, что после обращения к строке положение соответствующей ссылки в очереди не меняется.
Еще один алгоритм – алгоритм замены «наименее часто использовавшейся строки» (Least Frequently Used – LFU). При реализации этого алгоритма каждая строка связывается со счетчиком обращений, к содержимому которого после каждого обращения добавляется единица. Первой заменяется та строка в кэш-памяти, счетчик которой содержит наименьшее число.
Самым простым алгоритмом является реализация произвольного выбора строки для замены случайным образом. Однако этот алгоритм наименее эффективен.
Важную роль играют алгоритмы согласования содержимого кэш-памяти и ОЗУ. В процессе вычислений процессор может не только считывать имеющуюся информацию, но и записывать новую, обновляя тем самым содержимое кэш-памяти. С другой стороны, многие устройства ввода/вывода могут напрямую обмениваться информацией с ОЗУ. В обоих вариантах возникает ситуация, когда содержимое строки кэш-памяти и соответствующего блока ОЗУ перестают совпадать. В результате на связанное с ОЗУ устройство вывода может быть выдана «устаревшая» информация, поскольку все изменения в ней, сделанные процессором, фиксируются только в кэш-памяти, а процессор будет использовать старое содержимое кэш-памяти вместо новых данных, загруженных в ОЗУ из устройства ввода.
Для разрешения первой из рассмотренных ситуаций (когда процессор выполняет операцию записи) в системах с кэш-памятью предусмотрены определенные методы обновления ОЗУ, которые можно разбить на две большие группы: методы сквозной записи (write through) и методы обратной записи (write back). По методу сквозной записи прежде всего обновляется слово, хранящееся в ОЗУ. Если в кэш-памяти существует копия этого слова, то она также обновляется. Если же в кэш-памяти отсутствует нужная копия, то либо из ОЗУ в кэш-память пересылается блок, содержащий обновленное слово (сквозная запись с отображением), либо этого не делается (сквозная запись без отображения). Согласно методу обратной записи, слово заносится только в кэш-память. Если соответствующей строки в кэш-памяти нет, то нужный блок сначала пересылается из ОЗУ, после чего запись все равно выполняется исключительно в кэш-память. При замещении строки ее необходимо предварительно переслать в соответствующее место ОЗУ. Для метода обратной записи, в отличие от алгоритма сквозной записи, характерно то, что при каждом чтении из ОЗУ осуществляются две пересылки между ОЗУ и кэш-памятью.
Для предотвращения ситуации, когда в ОЗУ из устройства ввода, минуя процессор, заносится новая информация и неверной становится копия, хранящаяся в кэш-памяти, также используются разные способы. При одном из них система строится так, чтобы ввод любой информации автоматически сопровождался соответствующими изменениями в кэш-памяти. В другом способе «прямой» доступ к ОЗУ допускается только через кэш-память.
В современных ВМ применяется многоуровневая иерархия кэш-памяти. Так простейшая двухуровневая система включает кэш-память первого уровня (L1), расположенную между процессором и кэш-памятью второго уровня (L2), которая в свою очередь расположена между L1 и ОЗУ. При доступе к памяти процессор сначала обращается к кэш-памяти первого уровня. В случае промаха производится обращение к кэш-памяти второго уровня. Если информация отсутствует и в L2, выполняется обращение к ОЗУ и соответствующий блок заносится сначала в L2, а затем и в L1. Благодаря такой процедуре часто запрашиваемая информация может быть быстро восстановлена из кэш-памяти второго уровня. Потенциальная экономия за счет применения L2 зависит от вероятности попаданий как в L1, так и в L2. В целом практическое использование кэш-памяти второго уровня существенно повышает производительность работы ВМ. Для ускорения обмена информацией процессора с кэш-памятью второго уровня их часто соединяют специальной шиной, так называемой шиной заднего плана, в отличие от шины переднего плана, связывающую процессор с ОЗУ. Дальнейшее увеличение эффективности работы системы памяти достигается введением кэш-памяти третьего (L3) и даже четвертого (L4) уровней. Характер взаимодействия очередного уровня с предшествующим аналогичен описанному для L1 и L2.
Следует отметить, что в последнее время кэш-память (обычно первого уровня) стали разделять на две относительно самостоятельные части – кэш-память для хранения команд и кэш-память для хранения данных. Традиционная так называемая «смешанная» кэш-память (единая для команд и данных) обладает тем преимуществом, что при заданной емкости ей свойственна более высокая вероятность попаданий по сравнению с разделенной, поскольку в единой кэш-памяти оптимальный баланс между командами и данными устанавливается автоматически. Так, если в выполняемом фрагменте программы обращения к памяти связаны в основном с выборкой команд, а доля обращений к данным относительно мала, кэш-память имеет тенденцию насыщаться командами, и наоборот. С другой стороны, при раздельной кэш-памяти выборка команд и данных может производиться одновременно, при этом исключаются возможные конфликты. Последнее обстоятельство существенно в машинах, использующих конвейеризацию команд, где процессор извлекает команды с опережением и заполняет ими буфер или конвейер.
Отметим также, что в некоторых современных ВМ, помимо кэш-памяти команд и кэш-памяти данных, может использоваться и адресная кэш-память (в устройствах управления памятью и при преобразовании виртуальных адресов в физические).