Настраиваем Barcelona с помощью WPCREDIT.

для раздела Блоги
В данной статье речь пойдёт об одном из важнейших применений WPCREDIT - настройке встроенных контроллеров A64 и Barcelona в частности. Поскольку настольные чипсеты Intel перешли на PCI-E регистры, то можно поставить вопрос об актуальности WPCREDIT в настоящем времени, что и было сделано при обсуждении моей статьи об использовании WPCREDIT. Но есть ещё процессоры AMD, обладающие северным мостом, встроенным в процессор. Одним из важнейших компонентов северного моста является контроллер памяти. И все его настройки находятся как раз в PCI регистрах северного моста (0,0,0).

Barcelona
Какие же интересные новинки представлены в представителе новой архитектуры AMD? В первую очередь это два контроллера памяти, каждый по 64 бит и работает со своим каналом. Это значит, что мы можем выставить разные тайминги для разных каналов памяти, но частота на обоих модулях должна быть одинаковой. Контроллеры могут работать либо как 2 по 64 бита, либо связанно, как один двухканальный 128 битный контроллер, как в процессорах K8. Стоит заметить, что согласно терминологии AMD, канал памяти - это контакты, соединяющие процессор с одной частью модулей DIMM. Процессор поддерживает два канала. В процессоре находятся два контроллера памяти, каждый из которых контролирует один 64-битный канал DDR DIMM (BIOS and Kernel Developer's Guide (BKDG) For AMD Family 10h Processors, стр. 60). Представление о влиянии количества модулей на канал и их тип на максимально возможную частоту можно получить из рисунка:



Перейдём непосредственно к настройке. Скачаем даташит с описанием регистров процессора. Откроем программу и выберем там устройство DevID-VendorID 1202-1022. Хочу заметить, что в даташите описание регистров представлено в 32-битном виде, потому, возможно лучше будет переключить WPCREDIT в аналогичный вид группировки регистров. Не будет проблем с нумерацией.
Взглянем на список наиболее интересных, на мой взгляд, параметров:

78[32:22]=MaxRdLatency: maximum read latency
78[19]=EarlyArbEn: early arbitration enable
78[13:12]=Trdrd[3:2]: read to read timing
78[11:10]=Twrwr[3:2]: write to write timing
78[9:8]=Twrrd[3:2]: write to read DIMM termination turnaround

84[22:20]=Tcwl: CAS write latency
84[6:4]=Twr: write recovery

88[31:24]=MemClkDis: MEMCLK disable
88[23:22]=Trrd: row to row delay (or RAS to RAS delay)
88[21:20]=Twr: write recovery time.
88[19:16]=Trc: row cycle time.
88[15:12]=Tras: row active strobe
88[11:10]=Trtp: read to precharge time
88[9:7]=Trp: row precharge time
88[6:4]=Trcd: RAS to CAS delay
88[3:0]=Tcl: CAS latency

8C[31:29]=Trfc3: auto-refresh row cycle time for logical DIMM 3
8C[28:26]=Trfc2: auto-refresh row cycle time for logical DIMM 2
8C[25:23]=Trfc1: auto-refresh row cycle time for logical DIMM 1
8C[22:20]=Trfc0: auto-refresh row cycle time for logical DIMM 0
8C[17:16]=Tref: refresh rate
8C[15:14]=Trdrd[1:0]: read to read timing
8C[13:12]=Twrwr[1:0]: write to write timing
8C[11:10]=Twrrd[1:0]: write to read DIMM termination turnaround
8C[9:8]=Twtr: internal DRAM write to read command delay
8C[7:4]=TrwtTO: read to write turnaround for data, DQS contention
8C[3:0]=TrwtWB: read to write turnaround for opportunistic write bursting

90[22:21]=IdleCycLowLimit: idle cycle low limit
90[20]=DynPageCloseEn: dynamic page close enable
90[11]=Width128: width of DRAM interface in 128-bit mode

94[31:28]=FourActWindow[3:0]: four bank activate window
94[27:24]=DcqBypassMax: DRAM controller queue bypass maximum
94[20]=SlowAccessMode: slow access mode (a.k.a. 2T mode)
94[19]=DcqArbBypassEn: DRAM controller arbiter bypass enable
94[2:0]=MemClkFreq: memory clock frequency

Полный список намного больше и может быть найден в даташите. Рассмотрим, как же нам работать с ними. Для примера, рассмотрим выставление таймингов на привычные всем 3-3-3-12 1T для DDR2-667. Выбираем регистр 88. Смотрим на расшифровку значений регистров:



Ставим 88[3:0]=0010. То есть должно быть значение "1" в бите 1, а в остальных (3,2,0) - "0". В результате регистр должен иметь следующий вид: 88[9:0]=0000000010. Этим мы получим 3-3-3. 88[15:12]=1001. Это даст нам 3-3-3-12. И, наконец, ставим 94[20]=0. Всё, заветная формула 3-3-3-12 1T получена. Чтобы сменить её на 4-4-4-12 1T, нужно поменять регистр 88; 88[9:0]=0100010011. Аналогичным образом, следуя расшифровке значений регистров в даташите, можно настроить все желаемые тайминги, и не только.

Надеюсь, данная статья пригодится тем, кто занимается глубоким исследованием работы контроллеров памяти A64 и желающим настроить его на максимальную производительность.
Обсудить статью можно здесь.

Antinomy, 16.09.07
Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают