ПОСТОЯННЫЕ ЗАПИСИ ДЛЯ ЭНЕРГОНЕЗАВИСИМОЙ ПАМЯТИ
PERMANENT RECORDS FOR NON-VOLATILE MEMORY

Область раскрытия
[0001] Раскрытые аспекты направлены на системы памяти. Более конкретно, примерные аспекты направлены на операции постоянной записи и их протоколы для энергонезависимой памяти.
Предшествующий уровень техники
[0002] Память класса хранилища (SCM), в общем, относится к памяти большой емкости, которая может также иметь высокую производительность. SCM может использоваться в приложениях, таких как серверы или другие системы обработки, причем операционный набор данных для процессора или центрального блока обработки может храниться в SCM, в то время как полный набор данных может храниться в резервной памяти или накопителе на жестком диске (HDD). Важным ожиданием от SCM является постоянство записей, что означает, что информация, записанная в SCM, не должна теряться, если, скажем, сервер выйдет из строя или потеряет питание. Традиционная энергонезависимая память, которая может удовлетворять таким ожиданиям касательно постоянства, не может, однако, быть способна удовлетворять метрикам емкости и производительности, которые могут быть желательны для SCM. Поэтому, технологии, такие как память на фазовых переходах (PCM), магнитная память с произвольным доступом с переносом спинового момента (STT MRAM), резистивная RAM (ReRAM) и т.д., становятся более популярными в реализациях SCM.
[0003] При использовании SCM, приложение может использовать операции записи в память для обновления соответствующей постоянной памяти. Чтобы запись в SCM была постоянной, приложение, запрашивающее операцию записи, может ожидать явного подтверждения, что операция записи достигла постоянной памяти. Напротив, операции записи в непостоянную память (такую как динамическая память с произвольным доступом (DRAM) или другую энергозависимую память) традиционно считаются завершенными или проведенными, с точки зрения приложения, когда операция записи и ассоциированные данные были перенесены в память, и не требуется явного подтверждения, что данные были записаны. Таким образом, для приложений, которые используют SCM с ожиданием постоянства, желательны методы с высокой производительностью, которые обеспечивают явное подтверждение операций записи в постоянную память, причем методы с высокой производительностью также совместимы с разными размерами данных, чтобы максимизировать эффективность.
[0004] Существуют два типа традиционных схем для операций постоянной памяти. Первая схема предполагает, что вся система памяти (например, двусторонний модуль памяти (DIMM), содержащий последовательность интегральных схем DRAM, как известно в данной области техники) выполнена с энергетической поддержкой. В этом случае, операция записи в промежуточный буфер на принимающем конце DIMM может быть достаточной для удовлетворения ожиданий постоянства. В одной реализации, когда операция записи по интерфейсу канала между приложением, запрашивающим операцию записи, и DIMM успешно завершена, операция записи может рассматриваться как постоянная. Однако реализация таких схем может предусматривать использование устройств накопления энергии, таких как супер-конденсаторы или батареи, которые обеспечивают питание/зарядку для сброса промежуточных буферов на DIMM, когда обнаружен сбой питания. Но такие устройства накопления энергии могут не быть доступны на всех DIMM, и кроме того, даже если доступны, они связаны с высокими затратами.
[0005] Во второй схеме, все предыдущие операции записи могут сбрасываться в постоянную память, в то время как приложение ожидает статуса завершения от DIMM. Однако эта схема может повлечь значительную стоимость выполнения. Например, в случаях, в которых приложение может потребовать постоянных записей мелкой гранулярности для DIMM, но могут иметься другие одновременные, но независимые операции записи, выполняющие потоковый перенос в DIMM, сбрасывание всех предыдущих операций записи в постоянную память при ожидании статуса завершения может замедлять на только запросы постоянной записи, но и одновременные операции записи.
[0006] Соответственно, в данной области техники существует потребность в операциях постоянной записи с высокой производительностью и высокой эффективностью, которые поддерживают разные гранулярности или размеры постоянных записей, избегая вышеупомянутых недостатков традиционных подходов.
Краткое описание сущности изобретения
[0007] Примерные аспекты изобретения включают в себя системы и способы для постоянных операций. Система памяти, после приема команды постоянной записи и ассоциированных данных записи от хоста, выполняет постоянную запись данных записи в энергонезависимую память в системе памяти на основе команды постоянной записи. Система памяти может также принимать идентификацию записи (WID), ассоциированную с командой постоянной записи, от хоста и обеспечивать, после успешного завершения постоянной записи, указание завершения постоянной записи вместе с ассоциированной WID на хост.
[0008] Например, примерный аспект направлен на способ выполнения постоянных операций, способ содержит прием, в системе памяти, команды постоянной записи и ассоциированных данных записи от хоста, и выполнение постоянной записи данных записи в энергонезависимую память в системе памяти на основе команды постоянной записи.
[0009] Другой примерный аспект направлен на способ выполнения постоянных операций, способ содержит обеспечение, от хоста в систему памяти, команды постоянной записи и ассоциированных данных записи, причем команда постоянной записи указывает системе памяти выполнить постоянную запись данных записи в энергонезависимую память.
[0010] Другой примерный аспект направлен на устройство, содержащее систему памяти, сконфигурированную, чтобы принимать команду постоянной записи и ассоциированные данные записи от хоста и выполнять постоянную запись данных записи в энергонезависимую память в системе памяти на основе команды постоянной записи.
[0011] Другой примерный аспект направлен на устройство, содержащее хост, сконфигурированный, чтобы обеспечивать команду постоянной записи и ассоциированные данные записи в систему памяти, причем команда постоянной записи указывает системе памяти выполнить постоянную запись данных записи в энергонезависимую память.
[0012] Другой примерный аспект направлен на устройство, содержащее средство для хранения данных, содержащее средство для приема команды постоянной записи и ассоциированных данных записи от хоста и средство для выполнения постоянной записи данных записи в энергонезависимую память в средстве для хранения, на основе команды постоянной записи.
[0013] Другой примерный аспект направлен на устройство, содержащее средство для обработки, содержащее средство для обеспечения команды постоянной записи и ассоциированных данных записи в систему памяти, причем команда постоянной записи указывает системе памяти выполнить постоянную запись данных записи в энергонезависимую память.
[0014] Другой примерный аспект направлен на Долговременный считываемый компьютером носитель хранения, содержащий код, который, при исполнении процессором, побуждает процессор выполнять постоянные операции, долговременный считываемый компьютером носитель хранения содержит код для приема, в системе памяти, команды постоянной записи и ассоциированных данных записи от хоста, и код для выполнения постоянной записи данных записи в энергонезависимую память в системе памяти на основе команды постоянной записи.
[0015] Другой примерный аспект направлен на Долговременный считываемый компьютером носитель хранения, содержащий код, который, при исполнении процессором, побуждает процессор выполнять постоянные операции, долговременный считываемый компьютером носитель хранения содержит код для обеспечения, от хоста в систему памяти, команды постоянной записи и ассоциированных данных записи, причем команда постоянной записи указывает системе памяти выполнить постоянную запись данных записи в энергонезависимую память.
Краткое описание чертежей
[0016] Прилагаемые чертежи представлены для помощи в описании аспектов изобретения и предоставлены только для иллюстрации аспектов, а не для их ограничения.
[0017] Фиг. 1 иллюстрирует систему обработки в соответствии с аспектами настоящего раскрытия
[0018] Фиг. 2A-C иллюстрируют транзакции для обработки постоянных записей, в соответствии с различными аспектами настоящего раскрытия.
[0019] Фиг. 3 иллюстрирует примерное кодирование для команды постоянной записи в соответствии с настоящим раскрытием.
[0020] Фиг. 4A-B иллюстрируют последовательности событий касательно примерных способов выполнения постоянных записей, в соответствии с аспектами настоящего раскрытия.
[0021] Фиг. 5 изображает примерное вычислительное устройство, в котором предпочтительно может быть использован аспект раскрытия.
Подробное описание
[0022] Аспекты изобретения раскрыты в последующем описании и связанных чертежах, направленных на конкретные аспекты изобретения. Альтернативные аспекты могут разрабатываться без отклонения от объема изобретения. Дополнительно, хорошо известные элементы изобретения не будут описываться подробно или будут опущены, чтобы не затенять релевантные детали изобретения.
[0023] Слово “примерный” используется здесь для обозначения “служащего в качестве примера, образца или иллюстрации”. Любой аспект, описанный здесь как “примерный”, не обязательно должен пониматься как предпочтительный или преимущественный относительно других аспектов. Подобным образом, термин “аспекты изобретения” не требует, чтобы все аспекты изобретения включали в себя обсуждаемый признак, преимущество или режим операции.
[0024] Терминология, используемая здесь, имеет целью только описывать конкретные аспекты и не предназначена, чтобы ограничивать аспекты изобретения. Как использовано здесь, формы единственного числа предназначены, чтобы включать в себя также и формы множественного числа, если контекст явно не указывает иное. Также должно быть понятно, что термины "содержит", "содержащий", "включает в себя" и/или "включающий в себя", при использовании здесь, определяют наличие указанных признаков, целых чисел, этапов, операций, элементов и/или компонентов, но не исключают наличия или добавления одного или нескольких других признаков, целых чисел, этапов, операций, элементов, компонентов и/или их групп.
[0025] Дополнительно, многие аспекты описаны в терминах последовательностей действий, которые должны выполняться, например, элементами вычислительного устройства. Будет понятно, что различные действия, описанные здесь, могут выполняться конкретными схемами (например, специализированными интегральными схемами (ASIC)), программными инструкциями, исполняемыми одним или несколькими процессорами, или комбинацией того и другого. Дополнительно, эти последовательности действий, описанные здесь, могут рассматриваться как воплощаемые полностью в любой форме считываемого компьютером носителя хранения, имеющего сохраненный в нем соответствующий набор компьютерных инструкций, которые, при исполнении, побуждали бы ассоциированный процессор выполнять функциональность, описанную здесь. Таким образом, различные аспекты изобретения могут быть воплощены во множестве разных форм, все из которых, как предполагается, входят в объем заявленного предмета. К тому же, для каждого из аспектов, описанных здесь, соответствующая форма любых таких аспектов может быть описана, например, как “логика, сконфигурированная, чтобы” выполнять описанное действие.
[0026] Примерные аспекты настоящего раскрытия направлены на эффективные и высокопроизводительные операции постоянной записи для энергонезависимой памяти, такой как энергонезависимая DIMM (или NVDIMM). Соответственно, постоянная NVDIMM или NVDIMM-P раскрыта в качестве одной примерной системы памяти, которая поддерживает операции постоянной записи в соответствии с примерными аспектами. Устройство хоста может быть сконфигурировано, чтобы обеспечивать примерные запросы/команды, например, для постоянных операций, и соответствующие данные на примерную систему памяти, и система памяти может быть сконфигурирована, чтобы выполнять запрошенные операции постоянной записи и обеспечивать соответствующую сигнализацию на устройство хоста, как будет рассмотрено более подробно в следующих разделах.
[0027] Со ссылкой теперь на фиг. 1, показана примерная система 100 обработки, содержащая хост 120 и систему 130 памяти. Хост 120 может содержать один или несколько элементов обработки, таких как универсальный процессор (CPU), цифровой сигнальный процессор (DSP), мультимедийный процессор, системный процессор, графический процессор (GPU), модулятор-демодулятор (модем), процессор приложений и т.д., даже хотя они не были проиллюстрированы явно. Эти элементы обработки могут выполнять запросы на доступ к системе 130 памяти. Контроллер памяти (не показан) может находиться в хосте 120 для управления этими запросами на доступ.
[0028] Система 130 памяти может представлять собой постоянную память, например, NVDIMM-P в соответствии с настоящим раскрытием. Система 130 памяти показана как включающая в себя блок 132 ввода/вывода (I/O) и банк 134 памяти. Банк 134 памяти может включать в себя флэш-память, DRAM и т.д.
[0029] Механизм 110 связи показан между хостом 120 и системой 130 памяти, с шиной 112 данных (DQ), шиной 114 команд и адресов (CA) и отдельно идентифицированной шиной ответа 116. Хост 120 может быть способен предоставлять команды и связанные адреса для запросов доступа к памяти посредством CA 114 и отправлять/принимать данные посредством DQ 112 (показана как двунаправленная шина). Шина ответа 116, хотя показана отдельно, может быть сконфигурирована как часть CA 114 и может быть реализована как двунаправленная шина в некоторых случаях. Шина ответа 116 может использоваться, чтобы обеспечивать информацию, такую как статус постоянных записей, в некоторых примерных аспектах. Различные другие шины/провода могут также присутствовать в механизме 110 связи, хотя они не идентифицированы отдельно. В некоторых примерах, система 130 памяти может использовать отдельные шины для детерминированных и недетерминированных ответов, что будет пояснено дополнительно ниже.
[0030] В реализации, в которой система 130 памяти может быть сконфигурирована как NVDIMM, с дополнительной поддержкой конфигурации постоянной NVDIMM (NVDIMM-P) для по меньшей мере некоторых операций, хост 120 может быть способен обеспечивать одну или несколько из следующих примерных команд на систему 130 памяти, например, на CA 114:
- команда READ (например, с длиной кодирования, равной кратным значениям 64 B), вместе с идентификацией считывания (RID);
- команда WRITE (например, традиционная команда записи);
- команда P-WRITE (например, команда постоянной записи, вместе с идентификацией записи (WID) для постоянных записей, вместе с постоянным (persist) битом, который указывает, когда записям с данной WID необходим сигнал завершения постоянной записи (W_PER) (например, обеспечиваемый по шине ответа 116) от системы 130 памяти);
- команда ADRx: расширенная адресация;
- команда SEND (например, команда для системы 130 памяти, чтобы обеспечивать статус запроса на считывание данных);
- команда SEND_Status (например, команда для системы 130 памяти, чтобы обеспечивать вывод отсчета ошибок, WID и т.д., относящихся к постоянным операциям, от системы 130 памяти);
- команда FLUSH (чтобы сбросить предыдущие записи, подлежащие внесению в постоянную память);
- NOP (пустой оператор);
- команда опережающего считывания (например, используемая для считывания кэшированной памяти); и
- другие команды кэширования, которые могут быть специфическими для реализации.
[0031] Как упомянуто ранее, отдельные шины могут быть обеспечены в механизме 110 связи для детерминированных и недетерминированных ответов от системы 130 памяти на хост 120. Детерминированные ответы включают в себя метаданные, информацию об ошибках/четности, такую как кодирование с исправлением ошибок (ECC) касательно считанных данных, отправленных по DQ 112 на хост 120, и т.д., которые могут мультиплексироваться на шинах, исходящих от контактов, соединенных с I/O 132, таких как контакты битов проверки.
[0032] Среди битов ECC, могут иметься, например, биты ECC носителей, специфические для реализаций системы 130 памяти (например, как NVDIMM), и специфические для канала биты ECC в DQ 112, которые могут быть стандартизированы для обеспечения возможности взаимной совместимости по различным реализациям.
[0033] Биты метаданных могут включать в себя задержанные RID для запросов на считывание, отправленных не по порядку программы (причем, для операций по порядку, RID может быть установлена в статус “безразлично”). Биты метаданных могут также включать в себя разрешение записи (WC), которое относится к неиспользованной квоте для операций записи, распределенных по определенным хостам или элементам обработки хоста 120. Биты метаданных могут дополнительно включать в себя биты “отравления” (poisoning) данных для данных от пользовательского оборудования, как известно в данной области техники, и другие определенные пользователем биты.
[0034] Недетерминированные ответы в соответствии с настоящим раскрытием могут относиться к постоянным операциям и могут отправляться через выделенную сигнализацию, такую как ответ 116 от системы 130 памяти на хост 120, и могут указывать следующее:
- R_RDY: сигнал от системы 130 памяти на хост 120 для указания, что считанные данные доступны;
- Wr_Per: сигнал от системы 130 памяти на хост 120 для указания, что постоянная запись завершилась; и
- ERROR: сигнал от системы 130 памяти на хост 120 для указания условий ошибки, таких как проверка CRC, нарушение разрешения (кредита), превышение лимита времени носителей и т.д.
[0035] Для реализации системы 130 памяти как NVDIMM-P, следующие предусмотренные протоколом контакты могут быть, например, определены в I/O 132. С использованием широтно-импульсной модуляции, могут быть реализованы следующие конфигурации контактов и сигналов ответа. Например, в реализации удвоенной скорости 5 передачи данных (DDR5) NVDIMM-P, один провод, маркированный как RSP_n (один выделен на под-канал), может использоваться, чтобы обеспечивать следующую сигнализацию: 2 тактовых импульса низких для R_RDY, 4 низких тактовых импульса для W_PER и 6 низких тактовых импульсов для MESSAGE. За каждым низким импульсом могут следовать по меньшей мере 2 высоких тактовых импульса. Если необходим отдельный сигнал ERROR, то он может определяться как 8 низких тактовых импульсов.
[0036] Для реализации DDR4: два контакта могут использоваться, чтобы решать проблемы производительности с одним контактом (ODT1 и CKE1), причем ODT1 представляет ширину 2 низких тактовых импульсов для R_RDY и 4 низких тактовых импульсов для MESSAGE, и CKE1 представляет 2 низких тактовых импульса для W_PER. За каждым низким импульсом могут следовать по меньшей мере 2 высоких тактовых импульса, и если необходим отдельный сигнал ERROR, то он может определяться как 6 низких тактовых импульсов на ODT1.
[0037] В примерных реализациях постоянных записей, подходящие комбинации аппаратных средств, программного обеспечения, прошивки и т.д. (например, приложений, драйверов и т.д.) могут быть сконфигурированы, чтобы обеспечивать возможность предоставления уведомлений на хост 120 от системы 130 памяти, когда один или несколько запросов на запись от хоста 120 на систему 130 памяти достигают постоянства. Эти уведомления могут быть специфическими для реализации, как объясняется ниже.
[0038] Когда данные, подлежащие записи для операции записи, достигают защищенного от перебоя питания буфера на контроллере носителя (например, защищенной от перебоя питания памяти системы 130 памяти), операция записи может рассматриваться постоянной во время нормальных операций. Однако для определенных нечастых случаев или когда буферы контроллера носителя не защищены от перебоя питания, программное обеспечение будет гарантировать, что записи от начала до конца введены в носитель NVM.
[0039] Для реализации системы 130 памяти как NVDIMM-P, DIMM с энергетической поддержкой используют конфигурации, в которых вышеупомянутые буферы защищены от перебоя питания, что означает, что команда записи (Write) NVDIMM-P может использоваться, даже когда требуется постоянство для нормальных случаев. Дополнительно, команда сброса (Flush) NVDIMM-P, как определено здесь, может использоваться, чтобы сбрасывать все записи в буферах контроллера носителя в энергонезависимую память. В случае команды сброса, только записи, которые возникли до сброса, гарантируются как созданные постоянными для энергонезависимой памяти. Реализованные в программном обеспечении команды, такие как подходящие барьерные операции, могут использоваться после последней записи и перед выдачей команды сброса для обеспечения того, что поддерживается корректный порядок записей (например, когда хост 120 может быть сконфигурирован, чтобы отправлять запросы на постоянную запись не в порядке программы).
[0040] Хотя DIMM без энергетической поддержки могут использоваться менее часто, чем DIMM с энергетической поддержкой, обсуждаемые выше, команда постоянной записи (Persistent Write) NVDIMM-P может использоваться, когда постоянство требуется также для DIMM без энергетической поддержки. Контроллер памяти хоста 120, как упомянуто ранее, может быть сконфигурирован, чтобы определять, когда следует выдать команду постоянной записи. В этом случае, ожидается, что система 130 памяти обеспечит явное уведомление, когда постоянная запись завершена, как будет обсуждено со ссылкой на фиг. 2A. Дополнительно, команда сброса NVDIMM-P может также использоваться, как ранее, чтобы сбрасывать все записи (даже непостоянные записи) в энергонезависимую память.
[0041] Со ссылкой теперь на фиг. 2A, показан примерный набор транзакций между хостом 120 и системой 130 памяти для иллюстрации аспектов команды постоянной записи. Существуют некоторые признаки примерной команды постоянной записи (Wr_Per) (или просто, “постоянной записи”), которые могут быть общими для вышеописанной команды считывания (Read) от хоста 120. Они включают в себя общую идентификацию записи (WID), которая может представлять собой многобитовый идентификатор, чтобы идентифицировать инструкции, специфические для записи. Показан примерный набор WID 210, из которых каждая может быть до 16 битов шириной, что включает в себя один действительный бит (Valid) “Vld” (соответственно, до 31 WID могут быть представлены в 64-байтном пакете команд, отправляемом на CA 114, например). Команда постоянной записи может также иметь зарезервированное поле в кодировании WID для возвратов статуса команды сброса, что будет дополнительно объяснено в следующих разделах.
[0042] В одном аспекте, хост 120 может быть сконфигурирован, чтобы выдавать постоянную запись, только когда хост 120 имеет доступными ассоциированные разрешения постоянной записи. Разрешения постоянной записи (аналогично разрешениям считывания, известным в данной области техники) могут определяться во время конфигурации и администрироваться хостом 120 и могут отражать число ожидающих выполнения постоянных записей, которые разрешено выдавать хосту 120.
[0043] После выдачи, хост 120 может быть сконфигурирован, чтобы отслеживать ожидающие выполнения постоянные записи на основе их соответственных WID 210. На фиг. 2A (со ссылкой также на фиг. 1), показаны две постоянные записи (P-Write 1 с первым адресом и WID, и P-Write 2 со вторым адресом и WID), обозначенные как 202a и 204a, выданные от хоста 120 на систему 130 памяти по CA 114, вместе с соответственными данными, данными записи 202b и данными записи 204b по DQ 112, например.
[0044] Система 130 памяти сконфигурирована, чтобы выдавать отклик “Wr_Per” по шине ответа 116, для конкретной постоянной записи, после того как все данные для этой постоянной записи записаны в энергонезависимую память в системе 130 памяти. Wr_Per 202c и Wr_Per 204c показаны для соответственных постоянных записей 202a и 204a. Однако Wr_Per 202c и Wr_Per 204c показаны как отправляемые в порядке, который отличается от порядка, в котором постоянные записи 202a и 204a были приняты системой 130 памяти, чтобы проиллюстрировать, что ответы не должны находиться в программном порядке или в порядке, в которым запросы на постоянную запись принимаются от хоста 120. В одном аспекте, система 130 памяти может утверждать сигнал “Req” по шине ответа 116 вместе с подходящим кодированием для сообщения “Write_Rdy” для ответов Wr_Per.
[0045] Дополнительно, хост 120 может также быть сконфигурирован, чтобы выдавать команду “Send-Status for WID”, обозначенную ссылочной позицией 206a, в любое время, чтобы определить статус своих ожидающих выполнения постоянных записей. В ответ, система 130 памяти может быть сконфигурирована, чтобы выдавать пакет статуса с WID завершенных постоянных записей, например, при переносе пакета длиной 8 или “BL8” по DQ 112.
[0046] Как упомянуто ранее, до 31 WID 210 могут быть упакованы в каждый 64 В пакет статуса, причем для каждой WID 210 может иметься всего 16 битов, назначенных для 15-битной WID и бита Valid. Дополнительно, система 130 памяти может также использовать ранее упомянутое поле метаданных, чтобы возвращать статус для других записей. Хост 120 может использовать возвращенные WID 210 в пакете 206b статуса WID, например, чтобы завершать отслеживание ожидающих выполнения постоянных записей.
[0047] В некоторых аспектах, могут быть сгруппированы две или более постоянные записи. Например, набор из 64 B постоянных записей может группироваться для фиксации (или записи в энергонезависимую память) в случае DIMM без энергетической поддержки, например. Примерная реализация может использовать блок постоянных записей, подлежащий выдаче на систему 130 памяти от хоста 120, причем система 130 памяти может быть сконфигурирована, чтобы собирать воедино блок постоянных записей в буфере и фиксировать весь блок постоянных записей сразу, что может приводить к повышению эффективности. Будет понятно, однако, что группировка постоянных записей и их фиксация в блок не требуется для DIMM с энергетической поддержкой, в которых буферы защищены от перебоя питания.
[0048] Следующие модификации могут производиться с командой постоянной записи для реализации фиксаций групп, обсуждаемых выше. Хост 120 может выбирать одну WID (из WID 210, например) для набора из двух или более записей. Дополнительный бит, именуемый “Persist” (постоянный), может добавляться в команду постоянной записи при отправке по CA 114, например. Бит Persist может использоваться, чтобы определять, когда вся группа постоянных записей была отправлена на систему 130 памяти.
[0049] Например, три 64 B постоянные записи могут группироваться вместе следующим образом с использованием WID=5 в иллюстративном примере. Первая постоянная запись (WID=5, Persist=0), вторая постоянная запись (WID=5, Persist=0) и третья постоянная запись (WID=5, Persist=1) могут отправляться по CA 114. Система 130 памяти может быть сконфигурирована, чтобы собирать постоянные записи с WID=5 в буфере, пока бит Persist установлен в 0, а когда поступает последняя постоянная запись с битом Persist, установленным в 1, инициировать процессы фиксации постоянства.
[0050] В одной реализации, только постоянная запись с битом Persist, установленным в 1, может быть сконфигурирована, чтобы получать отклик Wr_Per от системы 130 памяти (например, только третья постоянная запись в примере выше) для группы постоянных записей. Это может уменьшать трафик по шине ответа 116.
[0051] В некоторых аспектах, постоянные записи с разными WID могут чередоваться, например, по CA 114. Соответственно, группировка постоянных записей для постоянной фиксации не подразумевает, что постоянные записи в группе одной и той же WID отправляются последовательно от хоста 120.
[0052] В некоторых аспектах, чтобы решить проблему условий состязания, которые могут возникать в откликах Wr_Per на постоянные записи, может использоваться способ статуса ID группы записей (WGID), чтобы группировать статусы одной или нескольких постоянных записей, с использованием разных битовых карт, таких как битовая карта завершенной WGID и битовая карта ожидающей WGID, как будет объяснено со ссылкой на фиг. 2B ниже. С учетом постоянных записей с соответствующей WID, система 130 памяти может утверждать соответственный Wr_Per (упоминаемый как “W_PER” для этого случая) для каждой постоянной записи с Persist=1 и для каждого завершения сброса. Хост 120 может использовать другую команду Send-W_PER-Status после приема одного или нескольких W_PER (причем, хост 120 может также поддерживать счет W_PER, упоминаемый как W_PER-Count). Система 130 памяти может возвращать статус завершенной WGID (WGID-Completed Status) с завершенными битами только на основе уже утвержденных W_PER. В свою очередь, хост 120 может обновлять список для WGID или “WGID list” и декрементировать W_PER-Count на основе числа завершений.
[0053] В некоторых случаях, неисправимая ошибка (UE) может возникать в транзакциях, что будет обсуждено со ссылкой на фиг. 2C. Когда имеется UE в Send-W_PER-Status, хост 120 может остановить выдачу новых постоянных записей/сбросов и Send-W_PER-Status. Хост 120 может отправить команду считывания статуса, упоминаемую как Xread-Status, на систему 130 памяти. Система 130 памяти в ответ собирает все постоянные записи до приема Xread-Status, чтобы возвратить статус ожидающей WGID (WGID-Pending Status) на хост 120 (пакеты статусов охватывают утверждение W_PER до приема RD_RDY), и система 130 памяти может продолжить выдавать W_PER во время считываний статусов. Хост 120 может обновлять список WGID, поддерживаемый хостом 120, и декрементировать W_PER-Count на основе ожидающих записей. Хост 120 может затем начать повторно выдавать постоянные записи/сбросы.
[0054] Для реализаций DIMM с энергетической поддержкой системы 130 памяти, в нормальном протоколе, хост 120 может выдавать команды постоянных записей (с Persist=0/1) и сброса, но система 130 памяти не будет утверждать W_PER для каждой постоянной записи с Persist=1, а система 130 памяти будет утверждать W_PER для команды сброса, когда сброс завершается. В случае реализаций WGID, обработка W_PER системой 130 памяти остается той же самой, что и в нормальном протоколе, только для сбросов. Битовая карта статуса завершенной WGID, обеспеченная системой 130 памяти, будет иметь установленные биты сброса WGID, когда они завершаются. Когда имеется UE в Send-W_PER-Status, операция остается той же самой, что и нормальный случай, за исключением того, что статус ожидающей WGID применим только для сбросов.
[0055] Разрешения для реализаций WGID могут обрабатываться следующим образом. Отдельные разрешения могут поддерживаться для записей статуса или Xwrites и для постоянных записей, причем хост 120 может определять, как пул разрешений может быть распределен системой 130 памяти. Инкрементный возврат разрешений может обеспечиваться посредством считывания метаданных, причем может использоваться схема кодирования для возвращения разрешений Xwrite или постоянной записи. Возвраты X-Read-Status могут быть доступными для сегментов буфера Xwrite и постоянной записи на основе распределения разрешений.
[0056] В одной реализации, например, которая будет описана со ссылкой на фиг. 2B-C, система 130 памяти может завершать постоянные записи (упоминаемые здесь как PWRITE) и сбросы в любом порядке. Чтобы сохранить конкретную PWRITE на носителе, хост 120 может выдать PWRITE для данной WGID с Persist=1 или выдать PWRITE с Persist=0, за которой следует любой из типов сброса. Система 130 памяти может выдать W_PER для каждой завершенной PWRITE, которая имеет Persist=1 в команде, а также каждого завершенного сброса. Если множество PWRITE сгруппированы с одной WGID с Persist=1 только в последней PWRITE, завершающей группу, система 130 памяти может выдать W_PER, только когда вся группа PWRITE завершена.
[0057] Со ссылкой теперь на фиг. 2B, будет описана обработка W_PER для нормального случая. Система 250 показана с хостом 120 и системой 130 памяти. Если как разрешения записи, так и свободная WGID доступны, то хост 120 может выдавать одну или несколько команд PWRITE или FLUSH, показанных как 252a, 254a. Хост 120 может отслеживать выданные команды 252a, 254a PWRITE или FLUSH в списке ожидающей WGID хоста (не показано, но может поддерживаться в хосте 120).
[0058] Соответственно, система 130 памяти может принимать и отслеживать ожидающие команды 252a, 254a PWRITE или FLUSH в списке ожидающей DIMM-WGID (не показано). Система 130 памяти может исполнять ожидающие команды 252a, 254a PWRITE или FLUSH и утверждать соответствующие W_PER 254b и 252b (показаны в обратном порядке принятых команд 252a, 254a PWRITE или FLUSH) для хоста 120 после соответственного завершения каждой принятой команды.
[0059] Система 130 памяти может собирать завершенные принятые команды PWRITE или FLUSH 252a, 254a в битовой карте 260 завершенной WGID, для которой показаны различные обновления 260a, 260b, 260c и т.д. Система 130 памяти может также удалять завершенные команды 252a, 254a PWRITE или FLUSH из списка ожидающей DIMM-WGID.
[0060] Хост 120 может поддерживать счет принятых событий W_PER, например, для приема W_PER 254b, 252b, упоминаемых как W_PER-Count. Одновременно, хост 120 может обрабатывать принятые события W_PER следующим образом: если W_PER-Count>0, то хост 120 может выдавать запрос статуса, показанный как Send-W_PER-Status 256a. Спустя предопределенное время, упоминаемое как время Tsend, система 130 памяти может отправлять снимок состояния битовой карты 260 завершенной WGID в этот момент времени (260b в этом случае) в ответе, показанном как WGID_Status 256b, на хост 120. Снимок состояния может включать в себя завершения для W_PER, выданных до начала переноса WGID_Status 256b на хост 120.
[0061] В некоторых аспектах, минимум 1 завершение регистрируется в снимке состояния. Система 130 памяти очищает положения битов на битовой карте 260 завершенной WGID на основе завершений, отправленных в WGID_Status 256b, показанных передачей битовой карты 260b завершенной WGID на битовую карту 260c завершенной WGID после сброса или очистки положений битов.
[0062] Хост 120 принимает WGID-Status 256b и может выводить информацию касательно завершенных WGID. Соответственно, хост 120 может освобождать завершенные WGID из списка ожидающих WGID хоста и декрементировать W_PER-Count на число завершений, принятых в битовой карте 260 завершенной WGID (например, декрементировать счет на 2 на основе двух принятых W_PER, как указано битовой картой 260b завершенной WGID). Хост 120 может повторять вышеописанный процесс, начиная с мониторинга W_PER-Count, и если W_PER-Count>0, то выдавать другой запрос статуса Send-W_PER-Status 256a на систему 130 памяти.
[0063] В примерных реализациях, хост 120 и система 130 памяти могут продолжать выдавать и исполнять новую PWRITE, в то время как выполняется обработка события W_PER. Хотя W_PER-Count и списки ожидания, такие как список ожидающей WGID хоста, список ожидающей DIMM-WGID и т.д., были обсуждены для примерной реализации, альтернативные структуры для достижения вышеописанной функциональности могут использоваться без отклонения от объема настоящего раскрытия.
[0064] Со ссылкой теперь на фиг. 2C, показана система 270 для обработки неисправимой ошибки канала (UE), следующая за SEND-W_PER-Status от хоста 120, что приводит к потере завершений, отправленных в WGID_Status 256b (поясняется на фиг. 2B выше) от системы 130 памяти. Дополнительно, следует отметить, что система 130 памяти могла быть очищена перед завершениями из битовой карты 260 завершенной WGID на фиг. 2B.
[0065] Соответственно, в протоколе для восстановления от таких ошибок в системе 270, хост 120 может инициировать процесс восстановления путем остановки выдачи новых команд PWRITE или FLUSH (например, PWRITE-3 или FLUSH-3 272a не выдаются, показано пунктирными линиями для указания временной шкалы, когда они были бы выданы, если бы ошибка не произошла), в то время как система 130 памяти может продолжить выдавать события RD_RDY и/или W_PER для завершенных считываний или команд PWRITE или FLUSH (например, W_PER 254b показана, как выдаваемая, в то время как 252b не выдается до восстановления от ошибки). Хост 120 может также продолжить выдавать SEND и обновлять W_PER-Count.
[0066] После предварительно заданной минимальной задержки времени для сигнала разрешения записи, упоминаемой как TWE_Delay, следующей за последней PWRITE, хост 120 выдает XREAD-Status 274a на систему 130 памяти, и система 130 памяти может подготавливать полный пакет статусов со снимком состояния битовой карты 280 ожидающей WGID, которая представляет собой другую битовую карту, обеспечиваемую в дополнение к битовой карте 260 завершенной WGID, обсужденной выше, причем битовая карта 280 ожидающей WGID включает в себя статус всех ожидающих PWRITE/FLUSH. Система 130 памяти может утверждать RD_RDY 276b, и хост 120 может выдавать SEND 278a в ответ.
[0067] Система 130 памяти может затем возвращать подготовленный пакет 278b статусов, из которого хост 120 может извлечь и обработать битовую карту 280 ожидающей WGID, принятую в пакете 278b статусов. Хост 120 может освобождать подходящие WGID из своего списка отслеживания ожидающих WGID хоста и декрементировать W_PER-Count на число освобожденных WGID. Хост 120 может затем повторять процессы, начиная с выдачи новых команд PWRITE/FLUSH, и обрабатывать ожидающие W_PER в это время как на предыдущий вызов.
[0068] В некоторых аспектах, пакет 278b статусов сконфигурирован, чтобы указывать, имеет ли он битовую карту 260 завершенной WGID или битовую карту 280 ожидающей WGID. Пакеты статусов отклика W_PER содержат битовую карту 260 завершенной WGID, в то время как все другие пакеты статусов содержат битовую карту 280 ожидающей WGID. Время TWE_Delay сконфигурировано, чтобы учитывать время для получения уведомления об ошибке от системы 130 памяти для последней PWRITE, выданной от хоста 120, и время ожидания от обнаружения UE до XREAD-Status 274a, выданного от хоста 120, может меняться в зависимости от того, когда была выдана последняя PWRITE.
[0069] Со ссылкой на фиг. 3, показано примерное кодирование для постоянных записей, например, для реализации DDR5 системы 130 памяти. Поле CA1 обычно используется, чтобы проводить различие между командами 1UI и 2UI в технологии DDR5, и может сохраняться для реализаций NVDIMM-P. CA 114 в некоторых реализациях может быть сконфигурировано на скоростях DDR для DDR5 только с 7 контактами, и в таких случаях, кодирование отдельной команды может использоваться для постоянных записей, например, как показано на фиг. 3.
[0070] На фиг. 3, если постоянный бит Persist=1, это указывает, что система 130 памяти должна поместить все постоянные записи, ассоциированные с соответственной WID, в энергонезависимую память. Если существует одна 64 B постоянная запись в группе, бит Persist может быть установлен в 1. Для постоянных записей больше 64 B, все постоянные записи могут иметь одну и ту же WID, причем последняя постоянная запись имеет свой бит Persist, установленный в 1, в то время как оставшиеся постоянные записи имеют свои биты Persist, установленные в 0.
[0071] В дополнение к транзакциям выше, как представлено в предыдущих разделах, другая команда может также использоваться в ассоциации с постоянными записями, именуемая командой FLUSH. Команда FLUSH сконфигурирована, чтобы указывать системе 130 памяти, что все предшествующие буферизованные записи (например, в непостоянной или энергозависимой памяти) должны быть помещены в постоянную память, учитывая, что будущие записи могут не затрагиваться подобным образом или помещаться в постоянную память при использовании команды FLUSH.
[0072] Когда исполнение FLUSH завершено, система 130 памяти может снова утверждать Wr_Per, например, по шине ответа 116 на хост 120, аналогично случаю постоянных записей, обсужденному выше.
[0073] Дополнительно, хост 120 может также обеспечивать команду, Send-Status для WID (аналогично постоянным записям) на систему 130 памяти в случае команды FLUSH, на которую система 130 памяти может отвечать пакетом статусов WID с уникальной зарезервированной WID для указания завершения исполнения FLUSH (например, WID со всеми битами, установленными в 1, может представлять собой такую зарезервированную WID, используемую для указания завершения исполнения FLUSH).
[0074] В одной реализации, может быть разрешена только одна ожидающая выполнения команда FLUSH от хоста 120. Таким образом, в этой реализации, хост 120 может быть вынужден ждать ответа завершения FLUSH от системы 130 памяти до отправки другой команды FLUSH. В альтернативных реализациях, команды FLUSH могут сопровождаться соответствующими FLUSH ID (например, выбранными из полей зарезервированных WID), и соответствующий ответ на Send-Status может побуждать систему 130 памяти возвращать FLUSH ID, для которого исполнение FLUSH было завершено.
[0075] Будет понятно, что аспекты включают в себя различные способы для выполнения процессов, функций и/или алгоритмов, раскрытых здесь. Например, фиг. 4A иллюстрирует примерный способ 400 выполнения постоянных операций.
[0076] Блок 402 содержит прием, в системе памяти (например, системе 130 памяти), команды постоянной записи (например, постоянная запись 202a) и ассоциированных данных записи (например, данных 202b) от хоста (например, хоста 120).
[0077] Блок 404 содержит выполнение постоянной записи данных записи в энергонезависимую память (например, в энергонезависимую память в системе 130 памяти) в системе памяти на основе команды постоянной записи. Идентификация записи (WID), ассоциированная с командой постоянной записи, может приниматься от хоста, и после успешного завершения постоянной записи, указание (Wr_Per) завершения постоянной записи вместе с ассоциированной WID (например, Wr_Per 202c) может предоставляться на хост.
[0078] Аналогично, фиг. 4B иллюстрирует другой примерный способ 450 выполнения постоянных операций.
[0079] Блок 452 содержит обеспечение, от хоста (например, хоста 120) на систему памяти (например, систему 130 памяти), команды постоянной записи (например, постоянная запись 202a) и ассоциированных данных записи (например, данных 202b), причем команда постоянной записи указывает системе памяти выполнить постоянную запись данных записи в энергонезависимую память.
[0080] Блок 454 содержит обеспечение идентификации записи (WID) (например, WID 210), ассоциированной с командой постоянной записи, на систему памяти от хоста.
[0081] Примерное устройство, в котором могут использоваться аспекты настоящего раскрытия, теперь будет обсуждено в отношении фиг. 5. Фиг. 5 показывает блок-схему вычислительного устройства 500. Вычислительное устройство 500 может соответствовать примерной реализации системы 100 обработки согласно фиг. 1, причем процессор 120’ может представлять собой один из элементов обработки хоста 120. Процессор 120’ в качестве примера показан как соединенный с системой 130 памяти через механизм 110 связи, при этом дополнительные подробности механизма 110 связи опущены на этом представлении в целях ясности. Процессор 120’, механизм 110 связи и система 130 памяти могут быть сконфигурированы, чтобы выполнять способы 400-450, как обсуждается выше. Будет понятно, что другие конфигурации памяти, известные в данной области техники, например, использующие один или несколько уровней кэша, хотя не показаны, могут присутствовать в вычислительном устройстве 500.
[0082] Фиг. 5 также показывает контроллер 526 дисплея, который соединен с процессором 120’ и с дисплеем 528. В некоторых случаях, вычислительное устройство 500 может использоваться для беспроводной связи, и фиг. 5 также показывает опциональные блоки пунктирными линиями, такие как кодер/декодер (кодек) 534 (например, аудио и/или голосовой кодек), связанный с процессором 120’, и динамик 536 и микрофон 538 могут быть соединены с кодеком 534; и беспроводную антенну 542, связанную с беспроводным контроллером 540, который связан с процессором 120’. Когда представлены один или несколько из этих опциональных блоков, в конкретном аспекте, процессор 120’, контроллер 526 дисплея, система 130 памяти и беспроводной контроллер 540 включены в устройство 522 системы в корпусе или системы на чипе.
[0083] Соответственно, в конкретном аспекте, устройство 530 ввода и источник 544 питания соединены с устройством 522 системы на чипе. Более того, в конкретном аспекте, как проиллюстрировано на фиг. 5, где представлены один или несколько опциональных блоков, дисплей 528, устройство 530 ввода, динамик 536, микрофон 538, беспроводная антенна 542 и источник 544 питания являются внешними для устройства 522 системы на чипе. Однако, каждое из дисплея 528, устройства 530 ввода, динамика 536, микрофона 538, беспроводной антенны 542 и источника 544 питания может быть связано с компонентом устройства 522 системы на чипе, таким как интерфейс или контроллер.
[0084] Следует отметить, что хотя фиг. 5 в общем изображает вычислительное устройство, процессор 120’ и система 130 памяти могут также быть интегрированы в телевизионную приставку, сервер, музыкальный проигрыватель, видеопроигрыватель, развлекательное устройство, навигационное устройство, персональный цифровой ассистент (PDA), блок данных с фиксированным местоположением, компьютер, ноутбук, планшет, устройство связи, мобильный телефон или другие аналогичные устройства.
[0085] Специалисты в данной области техники поймут, что информация и сигналы могут быть представлены с использованием любых из многообразия различных технологий и методов. Например, данные, инструкции, команды, информация, сигналы, биты, символы и элементарные посылки, ссылки на которые могут делаться во всем вышеизложенном описании, могут быть представлены посредством напряжений, токов, электромагнитных волн, магнитных полей или частиц, оптических полей или частиц или любой их комбинации.
[0086] Дополнительно, специалисты в данной области техники поймут, что различные иллюстративные логические блоки, модули, схемы и этапы алгоритмов, описанные в связи с аспектами, раскрытыми здесь, могут быть реализованы как электронные аппаратные средства, компьютерное программное обеспечение или комбинации обоих. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы были описаны выше в общем с точки зрения их функциональности. То, реализуется ли такая функциональность как аппаратные средства или программное обеспечение, зависит от конкретного приложения и ограничений при проектировании, налагаемых на всю систему. Специалисты в данной области могут реализовывать описанную функциональность разными способами для каждого конкретного приложения, но такие решения реализации не должны интерпретироваться как вызывающие отклонение от объема настоящего изобретения.
[0087] Способы, последовательности и/или алгоритмы, описанные в связи с раскрытыми аспектами, могут быть воплощены непосредственно в аппаратных средствах, в исполняемом процессором модуле программного обеспечения или в комбинации двух. Модуль программного обеспечения может находиться в памяти RAM, флэш-памяти, памяти ROM, памяти EPROM, памяти EEPROM, регистрах, жестком диске, съемном диске, CD-ROM или любой другой форме носителя хранения, известной в данной области техники. Примерный носитель хранения связан с процессором, так что процессор может считывать информацию из и записывать информацию на носитель хранения. Альтернативно, носитель хранения может быть интегрирован в процессор.
[0088] Соответственно, аспект изобретения может включать в себя считываемые компьютером носители, воплощающие способ выполнения постоянных записей. Соответственно, изобретение не ограничено проиллюстрированными примерами, и любые средства для выполнения функциональности, описанной здесь, включены в аспекты изобретения.
[0089] Хотя предшествующее раскрытие показывает иллюстративные аспекты изобретения, следует отметить, что различные изменения и модификации могут выполняться без отклонения от объема изобретения, как определено прилагаемой формулой изобретения. Функции, этапы и/или действия пунктов формулы изобретения на способ в соответствии с аспектами изобретения, описанными здесь, не требуется выполнять в каком-либо конкретном порядке. Более того, хотя элементы изобретения могут быть описаны или заявлены в единственном числе, множественное число предполагается, если ограничение единственным числом не выражено явно.