Отображение физических DRAM-адресов на логические
Агент транзакций(transaction combiner agent — ХСА) извлекает содержимое очередей и преобразует их в командные пакеты, которые передаются трансферу данных для отправки в процессор. Если же все очереди пусты, процессору передается команда nop.
Планировщик запросов памяти(Memory Request Organizer — MRO) принимает заказы на чтение/запись памяти сразу от трех устройств: контроллера шины, шины PCIи порта AGP и стремится обслужить каждого из своих клиентов максимально эффективно, что совсем не просто (память-то одна!).
Арбитр очереди памяти(Memory Queue Arbiter — MQA) помещает всех клиентов в кольцевую очередь (round-robin — RBN) и обрабатывает по одной транзакции за такт, в дополнение к этому, преобразуя физический адрес ячейки в тройку чисел: банк DRAM,/HOMep строки и колонки. Обработанные транзакции помещаются в одиу из нескольких очередей. В чипсете AMD 750 их пять — четыре очереди по четыре элемента на чтение (MRQ0— MRQ3) и одна на шесть элементов (MWQ) — на запись. В данном случае под "чтением" имеется в виду чтение из памяти, а под "записью", соответственно, запись в память.
Каждая из очередей чтения хранит запросы, предназначенные исключительно для "своего" банка памяти, благодаря чему при циклической выборке из очередей (этим занимается агент RBN) регенерация банков выполняется параллельно с обработкой других запросов.
Контроллер памяти(Memory Controller — МСТ) отвечает за физическую поддержку модулей оперативной памяти, установленных на компьютере (в чипсете AMD 750 этим занимается SDRAM Memory Controller — SMC, более поздние чипсеты умеют работать с DDR и Rambus-памятью). Он же отвечает за инициализацию, регенерацию микросхем памяти и ее конфигурирование — установку задержек RAS to CAS Delay, CAS Delay, RAS precharge, выбор рабочей тактовой частоты и др.
Арбитр запросов к памяти(Memory Request Arbiter - MRA) принимает запросы на чтение/запись памяти, поступающие от планировщика запросов памяти MRO и порта AGP, и передаёт их в контроллер SMC. Передача одного запроса занимает один такт.
Данные, записываемые в память, извлекаются из очереди SRQ контроллера системной шины, а данные, читаемые из памяти, отправляются в очередь MWQ, откуда они впоследствии передаются процессору.
С точки зрения процессора, оперативная память представляется однородным массивом данных, доступ к ячейкам которого осуществляется посредством 32-разрядных указателей. В то же время адресное пространство физической оперативной памяти крайне неоднородно и делится на банки, адреса страниц и номера столбцов (а также номера модулей памяти, если их установлено более одного). Согласованием интерфейсов оперативной памяти и процессора занимается чипсет, а сам процесс такого согласования называется трансляцией (отображением) физических DRAM-адресов на логические процессорные адреса.
Конкретная схема трансляции зависит и от типа установленной памяти, и от конструктивных особенностей чипсета. Программист полностью абстрагирован от деталей технической реализации всей этой кухни и лишен возможности "потрогать" физическую оперативную память руками. А, собственно, зачем это? Какая разница в какой строке и в каком столбце находится ячейка, расположенная по такому-то процессорному адресу? Достаточно лишь знать, что эта ячейка существует — вот и все. Что ж, абстрагирование от аппаратуры — действительно великая вещь и отличный способ заставить программу работать на любом оборудовании, но насколько эффективно она будет работать?
В разд. "Оптимизация работы с памятью" этой главы показано, что обеспечить эффективную обработку больших массивов данных без учета архитектурных особенностей DRAM — невозможно. Как минимум мы должны иметь представление, по какому именно физическому адресу происходит чтение/запись ячеек памяти.
К счастью, схема трансляции адресов в подавляющем большинстве случаев практически идентична (рис. 2.12). Младшие биты логического адреса представляют собой смещение ячейки относительно начала пакетного цикла обмена и никогда не передаются на шину. В зависимости от модели процессора длина пакетного цикла обмена колеблется от 32 байт (Кб, Р-Н, P-III) до 64 байт (AMD Athlon) и даже до 128 байт (Р-4). Соответственно, количество битов, отводимых под смещение внутри пакета, различно и составляет 4, 5 и 6 битов на K6/P-II/P-III, Athlon и Р-4
Типовая схема трансляция процессорных адресов в физические