Настраиваем Barcelona с помощью WPCREDIT.
Какие же интересные новинки представлены в представителе новой архитектуры 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 и желающим настроить его на максимальную производительность.
Обсудить статью можно здесь.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают