Отображение физических 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

 

 

Типовая схема трансляция процессорных адресов в физические