К. Касперски - Техника оптимизации программ, Эффективное использование памяти (1127752), страница 27
Текст из файла (страница 27)
Контроллер шины, получив от контроллера памяти уведомление о том, что запрошенные данные готовы, дожидается освобождения шины и передает Оперативная память их процессору в пакетнол1 режиме. В зависимости от типа шины за один такт может передаваться от одной до четырех порций данных. Так, в процессорах Кб, Р-Н и Р-Ш осуществляется одна передача за такт, в процессоре Ай!оп — две, а в процессоре Р-4 — четыре. Все! С этого момента данные поступают в кэш и становятся доступными процессору. Большинство чипсетов (наборов системных логик) состоит из двух микросхем — севернозо и южного мосгпое (рис.
2.10). Северный мост (названный так за свое традиционное расположение на чертежах) включает в себя контроллер системной шины процессора, контроллер памяти, факультативно контроллер порта АЗР, РС1-контроллер или контроллер внутренней шины для общения с южным мостом. Южный мост отвечает за ввод/вывод и включает в себя контроллер ОМА, контроллер прерываний, таймер, контроллеры жестких и гибких дисков, последовательных, параллельных и ()ЗВ-портов. Рис. 2.10. Внешний вид чипсета !пГе! 815ЕР До сих пор мы рассматривали и шинный контроллер, и контроллер памяти как черные ящики.
Сейчас же настало время снять с них крышку и изучить их внутренности. Дабы автора не обвинили в излишней любви к 1пге1, сделаем это на примере чипсета АМР 750 (рис. 2.11), попутно отметив, что по качеству документации собственных чипсетов АМР значительно превосходит своих конкурентов. Контроллер системной шины, отвечающий за обработку запросов и перемещение данных между процессором и чипсетом, состоит из следующих функциональньгх компонентов: трансг(йера даггных (Ргосемог Яаигсе Уупсй С(осй Угаплсегкег), планировщика запросов (Соттапг( Оиеие — С(2), контроллера очередей запросов (Сопггог' оуггет Оиеие — СоД) и агента транзакций (ггапзасг(оп сотЫпег аеепг — ХСА).
Остальные компоненты контроллера шины, присутствующие на рис. 2.11, необходимы для поддержки зондовой отладки, которая к обсуждаемой теме не относится, а потому здесь не рассматривается. 124 Глава 2 Трансгрер данных — в каком-то высшем смысле представляет собой "голый" контроллер шины, понимающий шинный протокол и берущий на себя все заботы по общению с процессором.
Полученные от процессора запросы передаются планировщику запросов, откуда они отправляются соответствующим агентам по мере их освобождения. Ответы агентов сохраняются в трех раздельных очередях: очереди чтения (БузРС Яеад Диеие — Я~Д), очереди записи памяти (Метогу Игг11е Циеие— МИгД) и очереди записи шины РС/(РС!/А-РС1 И'г11е Яиеие — А И'Д). Обратите внимание: в данном случае речь идет о записи/чтении в процессор, а не наоборот! Таким образом, очередь записи памяти хранит данные, передаваемые из памяти в процессор, но не записываемые процессором в память! Агент транзакций (1гопзасйоп сотМпег ояепг — ХСА) извлекает содержимое очередей и преобразует их в командные пакеты, которые передаются трансферу данных для отправки в процессор.
Если же все очереди пусты, процессору передается команда иое. Планировщик запросов памяти (Метогу Яег)иез! О~уопцег — МЯО) принимает заказы на чтение/запись памяти сразу от трех устройств: контроллера шины, шины РС! и порта АОР и стремится обслужить каждого из своих клиентов максимально эффективно, что совсем не просто (память-то одна!). Арбитр очереди памяти (Метогу Диене Агй1ег — МДА) помещает всех клиентов в кольцевую очередь (гоипд-го6!и — ВВУ) и обрабатывает по одной транзакции за такт, в дополнение к этому, преобразуя физический адрес ячейки в тройку чисел; банк РКАМу номер строки и колонки. Обработанные транзакции помегцаются в оду(у из нескольких очередей. В чипсете АМР 750 их пять — четыре очереди по четыре элемента на чтение (МКОО— МКЯЗ) и одна на шесть элементов (М%(1) — на запись.
В данном случае под "чтением" имеется в виду чтение из памяти, а под "записью", соответственно, запись в память. Каждая из очередей чтения хранит запросы, предназначенные исключительно лля "своего" банка памяти, благодаря чему при циклической выборке из очередей (этим занимается агент КВХ) регенерация банков выполняется параллельно с обработкой других запросов.
Контроллер памяти (Метогу Сопгго1!ег — МСТ) отвечает за физическую поддержку модулей оперативной памяти, установленных на компьютере (в чипсете АМР 750 этим занимается ЯЗВАМ Мепюгу Сопгго!!ег — ЯМС, более поздние чипсеты умеют работать с РОК и Кашбцз-памятью). Он же отвечает за инициализацию, регенерацию микросхем памяти и ее конфигурирование — установку задержек КАК го САБ Ре1ау, САЯ Ре!ау, КАК ргесйагйе, выбор рабочей тактовой частоты и др. тгб Оперативная память Арбитр запросов и памяти 1Метогу Аедиезг АгЬпег — МлА) принимает запросы на чтение/запись памяти, поступающие от планировщика запросов памяти МКО и порта АСР, и передает их в контроллер ЯМС.
Передача одного запроса занимает один такт. Данные, записываемые в память, извлекаются из очереди Ж11 контроллера системной шины, а данные, читаемые из памяти, отправляются в очередь М%(.1, откуда они впоследствии передаются процессору. Вычисление полного времени доступа Теперь, познакомившись с механизмом взаимодействия оперативной памяти и процессора, мы можем рассчитать реальную пропускную способность при чтении зависимых данных. Итак, мысленно прокрутим процесс обмена еше раз: 1. Получив запрос на чтение ячейки, процессор выполняет арбитраж и передает чипсету адрес и длину запрошенного блока памяти.
При условии, что шина свободна, эта операция укладывается в четыре такта. 2. Контроллер шины, получив запрос, ставит его в очередь и, если контрол- лер памяти свободен, передает ему запрос с началом следующего такта. 3. В течение следуюшего такта контроллер памяти декодирует адрес и ставит его в свою внутреннею очередь запросов на чтение памяти. 4. В следуюшем такте запрос извлекается из очереди, и контроллер, при необходимости дождавшись прихода фронта тактового импульса микросхемы памяти, передает ей адрес ячейки: !. Если соответствующая страница открыта и банк памяти не находится на регенерации, то чипсет выставляет сигнал САБ и передает сокращенный адрес ячейки. Спустя 2 — 3 такта частоты памяти на шине появляется первая порция считанных данных.
П. Контроллер памяти считывает ее за один такт. Синхронный контроллер памяти с началом следуюшего такта передает считанные данные контроллеру шины и в дальнейшем пересылка осуществляется параллельно с чтением, но с задержкой в один такт. Асинхронный контроллер памяти, "благодаря" расхождению частот не может передавать данные одновременно с чтением и вынужден накапливать их во временном буфере. После завершения пакетного цикла чтения контроллер памяти по приходу фронта следующего синхроимпульса начинает передавать содержимое временного буфера контроллеру шины на требуемой частоте.
126 Глава 2 Некоторые дешевые чипсеты, в частности Ч)А КТ133/КТ266, осуществляют передачу данных внутри чипсета только по фронту импульса, что полностью обесценивает все преимущества шины ЕЧ6, на которой работает А1Ыоп, и ее аффективная часта (определяемая, как известно, самым узким местом системы) оказывается равной всего 100/133 Мгц. Если длина запроса превышает длину пакета, то независимо от типа контроллера памяти, данные всегда передаются через временный буфер. И1. На чтение "хвоста" пакета в зависимости от его длины уходит еще три или семь тактов частоты оперативной памяти. 1Ч.
Если длина запроса превышает длину пакета, то мы возвращаемся к пункту 1. Ч. Контроллер шины, получив считанные данные, формирует запрос на передачу данных от чипсета к процессору и ставит его в очередь, на что расходуется один такт. Ч1. Если в очереди не находится ничего другого, и шина никем не занята, контроллер шины извлекает запрос из очереди и выставляет его на шину, передавая за один такт одну, две или четыре порции данных (на Кб/Р-И/Р-1И, Атп!оп и Р-4 соответственно). ЧИ. Как только запрошенная ячейка попадает в процессор, она становится немедленно доступной для обращения, даже если пакетный цикл передачи еше не завершен. ЧИ1.
Все! Остается лишь добавить латентность кэш-контроллеров всех иерархий и латентность самого процессора, — но это уже тема другого разговора, к оперативной памяти прямого отношения не имеющая. 5. Если требуемая РВАМ-страница закрыта, но банк не находится на регенерации, контроллер памяти передает адрес строки, вырабатывает сигнал ВАБ, ждет 2 или 3 такта пока микросхема его "переварит", и переходит к сценарию 1.