Ваш город Санкт-Петербург?
Да
Нет, выбрать свой
Вступление

Магниторезистивная память произвольного доступа с переносом спинового момента (STT-MRAM) – это технология, обеспечивающая производительность, энергонезависимость, долговечность и представлена в виде памяти типа DDR3, которая получила название ST-DDR3. Интерфейс, разработанный в рамках стандартов JEDEC, позволяет применять STT-MRAM в составе различных систем с учетом описанных модификаций их контроллеров памяти, где требуется энергонезависимая память STT-MRAM. Данный документ может быть использован в качестве руководства для инженеров по использованию контроллера памяти FPGA Xilinx при взаимодействии с энергонезависимой памятью ST-DDR3 от Everspin.

Включение ST-DDR3

ST-DDR3 - это STT-MRAM, которая использует интерфейс DDR3. Это означает, что ST-DDR3 от Everspin является энергонезависимой памятью, и инженер обязан понимать различия между традиционной энергозависимой памятью DDR3 и ST-DDR3. Инициализация процесса начинается с известного генератора интерфейса памяти (MIG) 4Gb DDR3 SDRAM-1333, полученного из среды разработки Xilinx Vivado. Основные отличия от 4Gb DDR3 SDRAM-контроллера:

  1. Тайминг (ускорение синхронизации со строками, увеличение ширины счетчика, уменьшение размеров CAS-страницы).
  2. Включение питания (калибровка – использование режима «анти-скрибблинг» в процессе калибровки).
  3. Отключение питания (скремблирование либо перемещение соответствующих объектов данных в массив постоянного запоминающего устройства).
  4. Производительность: увеличение глубины пайплайнов (наборов последовательно подключенных элементов обработки данных), увеличение эффективности передачи данных.

Примечание: также в целях реализации надежной системы энергонезависимой памяти ST-DDR3, однако не в рамках действия текущего документа, была создана схема двойной коррекции ошибок (DEC). Подробная информация будет приведена в документации на ECC-память.

Интерфейс памяти DDR3 SDRAM-1333 от Everspin

Логика интерфейса DDR3 в среде проектирования Xilinx будет создана на основе входных параметров, которыми являются скорость чтения и тайминг 4Gb SDRAM DDR3-1333. Первым предварительным шагом является реализация JEDEC-совместимого контроллера DDR3, поскольку MIG не может реализовывать логику интерфейса с параметрами, не соответствующими текущему стандарту JEDEC. Поскольку устройства Everspin 256Mb ST-DDR3 1333 и DDR3-1333 SDRAM 4Gb наиболее близки по своим характеристикам, используйте параметры тайминга, применимые к 4Gb DDR3 SDRAM 1333 spec SDRAM DDR3L-1333 (Таблица 8, Параметры тайминга, используемые для измерений IDD – единицы измерения тактовой частоты (Clock Units), при этом руководствуйтесь только ссылкой на часть 15). Если устройство №15 недоступно, выберите 15E, а также убедитесь, что параметр CL (задержка чтения) равен 10. После создания логики интерфейса DDR3, для включения энергонезависимой ST-DDR3 памяти, вы сможете изменить характеристики параметров тайминга, включения и отключения питания, а также производительности.

Настоятельно рекомендуем создать экземпляр «тестбенч» (среда проверки корректности созданной модели) в Vivado после реализации MIG. Для этого кликните правой кнопкой мыши по файлу с расширением «.xci» и выберите пункт «Open IP Example Design ...». Vivado автоматически создаст новый проект со всеми необходимыми файлами тестирования, которые необходимы для имитации вашего нового MIG. Подробная информация по созданию MIG в Xilinx представлена в учебных пособиях: emory Interfaces Design Hub - UltraScale DDR3/DDR4 Memory;

Designing a Memory Interface and Controller with Vivado MIG for UltraScale

Примечание: при создании и внесении изменений в MIG был использован Vivado версий 2017.2 и 2018.1.

Модификации контроллеров Xilinx FPGA

Все изменения в существующем контроллере Xilinx MIG DDR3 с целью включения в работу ST-DDR3, как уже говорилось ранее, классифицируются как тайминг, включение, отключение и производительность.

Тайминги

В Таблице 1 перечислены основные параметры тайминга для устройства SDRAM-1333 4Gb и связанные с ним изменения, необходимые для использования устройства STT-MRAM STDDR3-1333. Убедитесь, что реализованный MIG соответствует всем приведенным в таблице значениям.

Символьное обозначение DDR3 1333 SDRAM ST-DDR-3 1333 STTMRAM
Наносекунды (минимум) Такты (минимум) Наносекунды (минимум) Такты (минимум)
Такт tCK 1,5   1,5  
Задержка чтения CL   10   10
Задержка записи CWL   7   7
Минимальное время между двумя командами CAS tCCD   4   4
Внутренняя команда чтения для первичных данных tAA 15 10 14 10
Задержка между активизацией и внутренними командами чтения или записи tRCD 15 10 95 64
Время команды предзагрузки tRP 15 10 66 44
Промежуток времени между соседними командами активизации tRC 51 34 170 114
Период времени между командами предзагрузка и активация tRAS 36 24 103 69
Восстановление записи, задержка между командами предзагрузка и запись tWR 15 10 15 10
Промежуток времени между командами активизации, различные банки tRRD 6 4 30 20
Минимальное время активности четырех окон (активных строк) tFAW 30 20 120 80
Задержка между командами регенерация и активизация (от 1 Гб до 8 Гб) tRFC   74-234   Не используется

Ширина столбца и разность счетчиков

В приведенной выше Таблице 1 перечислены все ключевые тайминги, а в Таблице 2 приведены соответствующие различия столбцов и счетчиков.

Параметр (биты) JEDEC DDR3 256Mb ST-DDR3
Ширина входа/выхода x8 x8
Размер страницы 8192 512
tRASf 3 6
TXN_FIFO_DEPTH 4 8
TXN_FIFO_PWIDTH 2 3
CAS_FIFO_DEPTH 4 8
CAS_FIFO_PWIDTH 2 3
trcd_cntr / trcd_cntr_nxt 4 6
trp_cntr 5 7
tras_cntr_rb / tras_cntr_rb_nxt 4 6
Ширина адреса столбца (биты) А0 – А9 (10) А 0 – А 5 (6)

На производительность оказывают влияние снижение размеров CAS-страницы и увеличение ширины счетчиков. Об этом будет рассказано в разделе Производительность.

Включение питания

Более подробная информация о последовательности включения питания памяти DDR находится в документации от Micron под названием TN-46-08: Initialization Sequence for DDR SDRAM.

В процессе включения питания данная последовательность, состоящая из 20 шагов, должна обрабатываться в документированном порядке с целью обеспечения правильного функционирования с учетом следующих исключений:

  1. В ST-DDR3 команда Обновить не используется. Шаги 15 и 17 – это команды автоматического обновления, которые игнорируются устройствами STT-MRAM.
  2. Во время выполнения шага калибровки, который является следующим после шагов инициализации, переключите устройство ST-DDR3 в режим NOMEM через Регистр Режима 2 или MR2 [8] = 1 до калибровки и отключите после калибровки MR2 [8] = 0 во избежание повреждения данных в процессе выравнивания записи. Иначе этот процесс называется «анти-скрибблинг». Поскольку ST-DDR3 – это энергонезависимая память, процесс записи в момент калибровки может привести к перезаписи уже существующих данных. Поэтому в процессе калибровки данная функция должна быть отключена.

Настройки регистра Mode Register

Поддержка полного Mode Register доступна и должна устанавливаться в качестве следующего этапа в процессе инициализации включения питания либо после сброса в целях корректного функционирования ST-DDR3 1333. При программировании Mode Register необходимо опираться на следующую последовательность:

  1. Mode Register 2 (MR2) – 0x0110, MR2[8] = 1
  2. Mode Register 3 (MR3) – 0x0000
  3. Mode Register 1 (MR1) – 0x0044
  4. Mode Register 0 (MR0) – 0x0b60
  5. После калибровки и до нормально функционирования.
  6. Mode Register 2 (MR2) – 0x0010, MR2[8] = 0

Примечание: MR2 [8] = 1 это NOMEM-режим (режим «анти-скрибблинг»), предотвращающий перезапись имеющихся данных в массиве энергонезависимой памяти. MR2 [8] = 0 отключает NOMEM-режим до момента записи в массив энергонезависимой памяти.

Отключение питания (Scram)

Scram не является командой либо кодом операции. Scram – процедура отключения питания. Буквально это означает, что питание больше не будет подаваться, и контроллер должен гарантировать энергонезависимость всех открытых страниц, буферов, содержимого DRAM и произвести запись в энергонезависимый массив в максимально сжатые сроки. Чтобы гарантировать энергонезависимость, требуется выполнение команд Precharge(PRE) - "Предзагрузка" или Precharge All(PREA) - "Предзагрузка Всего" с целью переноса данных в массив энергонезависимой памяти.

В некоторых системах, использующих совместно DRAM/MRAM, емкость DRAM, превышает емкость MRAM. Контроллер должен гарантировать (в процессе нормального функционирования) тот факт, что объем важных данных, которые содержатся в DRAM и должны быть сохранены после отключения питания, не превышает размер массива MRAM. Если указанное выше условие соблюдается, нормальный процесс отключения питания должен длиться не более 10 микросекунд в большинстве ситуаций. Однако эта величина зависит от устройства системы и должна быть рассчитана, смоделирована и измерена с целью гарантирования записи данных в массив энергонезависимой памяти при выполнении команд PRE или PREA. Последовательность выполнения процедуры Scram:

  1. Контроллер получил команду отключения или обнаружил, что входное напряжение (12 В, постоянный ток) стало падать, определил перенапряженность, перегрузку тока или перегрев. Объемная емкость на выходе DC-to-DC должна обеспечивать работоспособность FPGA и MRAM и/или DRAM достаточное время для завершения последующих четырех этапов. Многие системы обеспечивают достаточную емкость для выполнения описанного выше требования, однако пренебрегать этим параметром не рекомендуется. Смотрите контрольный список уровня платы в одном из разделов ниже.
  2. Завершение всех ожидающих запросов доступа к MRAM на верхнем уровне MIG. Алгоритм управления завершает перенос всех данных и информации о состоянии в интерфейс MRAM MIG.
  3. Включение и удерживание в активном состоянии входного сигнала MRAM MIG power_fail_has_scramed . Тем самым MIG получает информацию о том, что алгоритм управления завершен, и он также должен выполнить команду Scram и перенести все команды записи в энергонезависимый массив MRAM. Также MIG должен отключить периодические команды чтения. Логика управления должна запретить работу команд чтения и записи в MRAM MIG, если сигнал power_fail_has_scramed активен.
  4. inflight_writes является выходным сигналом состояния. После выполнения команд записи MIG выполняет команду Предзагрузка Всего (PREA), чтобы закрыть все открытые страницы и сохранить данные в массиве энергонезависимой памяти.
  5. Ожидание выходного сигнала ddr3_cntr_power_fail_complete . Он указывает на то, что все ожидающие команды записи MIG уже находятся в энергонезависимой памяти MRAM, а все страницы закрыты. Продолжайте подачу power_fail_ has_scramed для входного сигнала MRAM MIG, поскольку он также отключает периодические команды чтения.
  6. Все готово для безопасного отключения питания для MRAM без потери данных.
  7. Если алгоритм управление принимает решение о повторном запуске (например, если произошел сбой мощности) без выполнения перезагрузки, сигнал power_fail_has_scramed может быть отменен, а MIG в свою очередь выполнит отмену ddr3_cntr_power_fail_complete . Периодические команды чтения будут перезапущены, а команды чтения и записи смогут снова выполняться.

Производительность

Ниже приведен список оптимизаций STT-MRAM для повышения производительности системы:

  1. Отключенный или значительно расширенный интервал обновления (tREFI), поскольку ST-DDR3 не требует регенерации.
  2. Наличие адресного упорядочивания/сопоставления для максимизации производительности минимизации износа для ROW-BANK-COL.
  3. Увеличение глубины очереди команд/данных для активизации/предзагрузки с целью управления задержками доступа к более длинной строке и CAS-странице меньших размеров для STT-MRAM.
  4. Увеличение нагрузки на шину благодаря доступу к данным во время выполнения каждого такта.

Изменения в DDR3 MIG

В Таблице 3 перечислены все изменения в MIG для каждой категории, а также измененные модули, входящие в состав контроллера DDR3 MIG для XCKU060-2FFVA1156E. Everspin представил результат работы функции diff (Linux) в виде файла патча для каждого из измененных модулей. Внесение этих изменений в каждый модуль позволит использовать все параметры тайминга, включения и отключения питания, а также производительности, которые были описаны выше.

MRAM_ddr3_v2_0.sv MRAM_ddr3_v2_0_ddr3.sv MRAM_ddr3_v2_0_ddr3_mem_infc.sv ddr3_v1_4_cal.sv ddr3_v1_4_mc.sv ddr3_v1_4_mc_arb_mux_p.sv ddr3_v1_4_mc_group.sv ddr3_v1_4_mc_ref.sv ddr3_v1_4_ui.sv ddr3_v1_4_ui_rd_data.sv ddr3_v1_4_ui_wr_data.sv
  Номер файла 1 2 3 4 5 6 7 8 9 10 11
Тайминг Установки тайминга и изменения ширины счетчика   ×     × × ×        
Включение Изменения «анти-скрибблинг» (режим NOMEM)       ×              
Отключение Входной сигнал SCRAM для сброса команд записи с закрытием страницы CAS × × ×   ×     ×      
Отключение Сигналы статуса выхода Scram × × ×   ×   ×   ×    
Производительность Автоматические предзагрузки на 8-м BL8 CAS-страницы   ×     ×       × × ×
Производительность Дублирование FIFO-DEPTH             ×        
Производительность Изменения для ускоренной отправки запросов             ×        

Файлы с результатами работы функции diff для DDR3 MIG

На сайте Everspin можно скачать 11 файлов патчей для реализации системы. Каждый из этих файлов является результатом вывода функции diff (Linux) и был создан в процессе сопоставления 4Gb DDR3 MIG и 256Mb ST-DDR3 MIG и имеет расширение «.patch». Файлы патчей могут быть выполнены инженером вручную для внесения соответствующих модификаций или с использованием встроенной в Linux функции patch для обновления существующих модулей и создания соответствующих файлов, на основе которых может быть реализован модуль контроллера MIG, совместимый с ST-DDR3. Процесс проектирования состоит из следующих этапов:

  1. Создание совместимого с 4Gb DDR3 MIG в Vivado.
  2. Создание «тестбенча» путем нажатия правой кнопкой мыши на файл с расширением «.xci» и выбором пункта меню «Open IP Example Design ...». В результате Vivado создаст новый каталог проекта с названием, окончанием которого будут символы «_0_ex». Новый каталог проекта будет выглядеть примерно так:
    /<home directory>/<user defined MIG name>_0_ex
    /<user defined MIG name>_0_ex.srcs/sources_1/ip/<user defined MIG name>/rtl
    
  3. Процесс симуляции с помощью «тестбенча», созданного Xilinx, для того, чтобы убедиться в работоспособности 4Gb DDR3 MIG.
  4. Запуск 11 файлов патчей.
  5. Повторный синтез и симуляция среды для обеспечения функционирования 256Mb STT-DDR3 MIG.

В подкаталоге rtl найдите 5 следующих подкаталогов:

Cal, clocking, controller, ip_top, ui.

Переместите патчи 1-3 в каталог ip_top, переместите четвертый патч в каталог cal, 5-8 патчи – в каталог controller и патчи 9-11 – в каталог ui.

Запускайте каждый патч для соответствующих DDR3 MIG. Каждый новый созданный файл является новым модулем, совместимым с ST-DDR3.

$patch [original file] -i [patch file] -o [output file]

Исходный файл соответствует исходному файлу модуля DDR3 MIG. Все файлы патчей перечислены ниже:

  • 1-ddr3_0.sv.patch
  • 2-ddr3_0_ddr3.sv.patch
  • 3-ddr3_mem_intfc.sv.patch
  • 4-ddr3_v1_4_cal.sv.patch
  • 5-ddr3_v1_4_mc.sv.patch
  • 6-ddr3_v1_4_mc_arb_mux_p.sv.patch
  • 7-ddr3_v1_4_mc_group.sv.patch
  • 8-ddr3_v1_4_mc_ref.sv.patch
  • 9-ddr3_v1_4_ui.sv.patch
  • 10-ddr3_v1_4_ui_rd_data.sv.patch
  • 11-ddr3_v1_4_ui_wr_data.sv.patch

Каждый файл патча соответствует модулю, указанному в Таблице 1. После успешного выполнения команды patch должен быть получен выходной файл с тем же именем, что и исходное соответствующее имя файла DIG3 MIG. Для обеспечения безопасного резервного копирования каждого файла перед внесением изменений можно использовать следующую инструкцию:

$cp filename.sv filename.sv.org
$patch filename.sv.org
-i filename.sv.patch
-o filename.sv.save
$cp filename.sv.save filename.sv

Если команда patch отработала с ошибкой, необходимо внести соответствующие изменения вручную. Обратите внимание: правильность выполнения процесса не гарантируется, все изменения должны быть внесены корректно.

Файлы схемы nvNITRO

nvNITRO - это эталонная платформа, разработанная Everspin, которая использовалась для создания платы PCIe Gen3 x8 PCIe на базе STT-MRAM. Контроллер Xilinx представляет собой FPGA XCKU060-2FFVA1156E, поддерживающий 36 устройств STT-MRAM и использующий 4 разряда для энергонезависимой памяти общим объемом 1 Гб. Файлы системы Orcad можно найти на веб-сайте Everspin.

Схемы nvNITRO

Файлы схем nvNITRO в формате «.pdf» доступны на сайте Everspin.

Дополнительные элементы

Вы можете найти дополнительные элементы на сайте Everspin:

  • Файлы патчей MIG
  • Файлы схем Orcad для nvNITRO
  • Схемы nvNITRO в формате «.pdf»
  • Файлы визуализации Allegro

Контрольный список уровня платы

Ниже приведен список элементов уровня платы, которые должны быть учтены инженером для успешной реализации системы:

  1. Следуйте инструкциям по реализации высокоскоростной маршрутизации и аппаратного проектирования от PCI-Sig, JEDEC, Xilinx и Micron для проектирования на основе PCIe и DDR3.
  2. В ST-DDR3 также применяются те же правила компоновки высокоскоростной передачи сигналов и лучшие достижения, которые используются в DDR3. Смотрите DDR3 SDRAM Unbuffered DIMM Design Specification(требуется логин JEDEC). В этой же спецификации указаны соответствующие объемная и развязывающая емкости для каждого устройства (см. Таблицу 12 спецификации DDR3 Unbuffered DIMM Design Specification).
  3. Xilinx предлагает руководство по созданию высокоскоростной системы PCB, которая также включает в себя развязывающую и объемную емкости для каждого устройства (см. Таблицы 1-12 в UltraScale Architecture PCB User Guide). Xilinx также предлагает руководство по реализации высокоскоростных PCB, используемых для других семейств устройств.
  4. Требования к питанию STT-DDR3 (смотрите Таблицу 10 в спецификации ST-DDR3 256 Мб https://www. Everspin.com/file/156503/download).
  5. Требования к питанию FPGA от Xilinx представлены в Xilinx Power Estimator (XPE) для оценки наихудшего использования мощности.
  6. Реализация схемы захвата и пина FPGA с использованием среды разработки Xilinx Vivado должна выполняться при постоянном проведении анализов полученных результатов (итеративно) для гарантии обеспечения требуемой функциональности FPGA и маршрутизации внешнего сигнала.
  7. Как уже было сказано ранее в разделе Отключение питания, грамотно реализованная последовательность скремблирования не должна превышать по длительности 10 мкс. Требования к развязывающим и объемным емкостям для переходных изменений нагрузки всегда будут выше, чем к объемной емкости, необходимой для удовлетворения условия, что время удержания не превысит 10 мкс. Этими значениями нельзя пренебрегать, также как и проведением расчетов, симулированием и измерением времени удержания для каждой системы.
  8. VDDQ, VDD, VrefDQ, VrefCA и ZQ для ST-DDR3 соответствуют казанным в спецификации к DDR3 1.5V (смотрите Таблицу 4).
Параметр JEDEC DDR3 256Mb ST-DDR3
VDDQ, VDD, Vrefdq,
Vrefca, ZQ
1.5V, 1.5V, VDDQ/2,
VDDQ/2, VSSQ
1.5V, 1.5V, VDDQ/2,
VDDQ/2, VSSQ
Заключение

STT-MRAM от Everspin - превосходная альтернатива архитектурам контроллеров на основе DRAM для решения проблем детерминизма ввода-вывода, обеспечения высокой производительности и надежности в устройствах корпоративного класса без необходимости использования альтернативных источников энергии, таких как аккумуляторы/суперконденсаторы, или для использования адресной энергонезависимой памяти. STT-MRAM позволяет оптимизировать скорость, производительность, выносливость, время задержки и надежность, параллельно уменьшая сложность и обеспечивая расширенные функциональные возможности.

Автор:
Джеймс Сингер - директор, разработчик приложений Everspin Technologies.
Перевод:
Макро Групп

Упоминаемые производители

Подписка на новости