RU2780441C2 - Permanent records for non-volatile memory - Google Patents
Permanent records for non-volatile memory Download PDFInfo
- Publication number
- RU2780441C2 RU2780441C2 RU2020110130A RU2020110130A RU2780441C2 RU 2780441 C2 RU2780441 C2 RU 2780441C2 RU 2020110130 A RU2020110130 A RU 2020110130A RU 2020110130 A RU2020110130 A RU 2020110130A RU 2780441 C2 RU2780441 C2 RU 2780441C2
- Authority
- RU
- Russia
- Prior art keywords
- write
- persistent
- host
- nvdimm
- permanent
- Prior art date
Links
- 230000000875 corresponding Effects 0.000 claims abstract description 10
- 230000002085 persistent Effects 0.000 claims description 163
- 230000002441 reversible Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 230000004044 response Effects 0.000 description 25
- UIIMBOGNXHQVGW-UHFFFAOYSA-M buffer Substances [Na+].OC([O-])=O UIIMBOGNXHQVGW-UHFFFAOYSA-M 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 238000000034 method Methods 0.000 description 8
- 230000002688 persistence Effects 0.000 description 8
- 102100011198 EDA Human genes 0.000 description 3
- 101700040954 EDA Proteins 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000006011 modification reaction Methods 0.000 description 2
- 230000000051 modifying Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 101700081816 DDR4 Proteins 0.000 description 1
- 102100008561 PRXL2A Human genes 0.000 description 1
- 108060006028 PRXL2A Proteins 0.000 description 1
- 230000003111 delayed Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000004146 energy storage Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 235000019580 granularity Nutrition 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical Effects 0.000 description 1
- 230000000607 poisoning Effects 0.000 description 1
- 231100000572 poisoning Toxicity 0.000 description 1
- 230000000717 retained Effects 0.000 description 1
Images
Abstract
Description
Область раскрытияdisclosure area
[0001] Раскрытые аспекты направлены на системы памяти. Более конкретно, примерные аспекты направлены на операции постоянной записи и их протоколы для энергонезависимой памяти.[0001] The disclosed aspects are directed to memory systems. More specifically, exemplary aspects are directed to persistent write operations and their protocols for non-volatile memory.
Предшествующий уровень техникиPrior Art
[0002] Память класса хранилища (SCM), в общем, относится к памяти большой емкости, которая может также иметь высокую производительность. SCM может использоваться в приложениях, таких как серверы или другие системы обработки, причем операционный набор данных для процессора или центрального блока обработки может храниться в SCM, в то время как полный набор данных может храниться в резервной памяти или накопителе на жестком диске (HDD). Важным ожиданием от SCM является постоянство записей, что означает, что информация, записанная в SCM, не должна теряться, если, скажем, сервер выйдет из строя или потеряет питание. Традиционная энергонезависимая память, которая может удовлетворять таким ожиданиям касательно постоянства, не может, однако, быть способна удовлетворять метрикам емкости и производительности, которые могут быть желательны для SCM. Поэтому, технологии, такие как память на фазовых переходах (PCM), магнитная память с произвольным доступом с переносом спинового момента (STT MRAM), резистивная RAM (ReRAM) и т.д., становятся более популярными в реализациях SCM.[0002] Storage class memory (SCM) generally refers to a large capacity memory that can also have high performance. The SCM may be used in applications such as servers or other processing systems, wherein the operating data set for a processor or central processing unit may be stored in the SCM while the complete data set may be stored in a back-up memory or hard disk drive (HDD). An important expectation of the SCM is write persistence, which means that information written to the SCM should not be lost if, say, the server crashes or loses power. Traditional non-volatile memory that can meet such persistence expectations may not, however, be able to meet the capacity and performance metrics that SCMs may desire. Therefore, technologies such as phase change memory (PCM), spin moment transfer magnetic random access memory (STT MRAM), resistive RAM (ReRAM), etc., are becoming more popular in SCM implementations.
[0003] При использовании SCM, приложение может использовать операции записи в память для обновления соответствующей постоянной памяти. Чтобы запись в SCM была постоянной, приложение, запрашивающее операцию записи, может ожидать явного подтверждения, что операция записи достигла постоянной памяти. Напротив, операции записи в непостоянную память (такую как динамическая память с произвольным доступом (DRAM) или другую энергозависимую память) традиционно считаются завершенными или проведенными, с точки зрения приложения, когда операция записи и ассоциированные данные были перенесены в память, и не требуется явного подтверждения, что данные были записаны. Таким образом, для приложений, которые используют SCM с ожиданием постоянства, желательны методы с высокой производительностью, которые обеспечивают явное подтверждение операций записи в постоянную память, причем методы с высокой производительностью также совместимы с разными размерами данных, чтобы максимизировать эффективность.[0003] When using the SCM, the application can use memory write operations to update the corresponding persistent memory. For a write to the SCM to be persistent, an application requesting a write operation can wait for explicit confirmation that the write operation has reached persistent memory. In contrast, write operations to non-persistent memory (such as dynamic random access memory (DRAM) or other volatile memory) are traditionally considered complete or done, from the point of view of the application, when the write operation and associated data have been transferred to memory, and no explicit confirmation is required. that the data has been written. Thus, for applications that use SCM with persistence expectation, high performance methods are desirable that provide explicit acknowledgment of writes to persistent memory, and high performance methods are also compatible with different data sizes to maximize efficiency.
[0004] Существуют два типа традиционных схем для операций постоянной памяти. Первая схема предполагает, что вся система памяти (например, двусторонний модуль памяти (DIMM), содержащий последовательность интегральных схем DRAM, как известно в данной области техники) выполнена с энергетической поддержкой. В этом случае, операция записи в промежуточный буфер на принимающем конце DIMM может быть достаточной для удовлетворения ожиданий постоянства. В одной реализации, когда операция записи по интерфейсу канала между приложением, запрашивающим операцию записи, и DIMM успешно завершена, операция записи может рассматриваться как постоянная. Однако реализация таких схем может предусматривать использование устройств накопления энергии, таких как супер-конденсаторы или батареи, которые обеспечивают питание/зарядку для сброса промежуточных буферов на DIMM, когда обнаружен сбой питания. Но такие устройства накопления энергии могут не быть доступны на всех DIMM, и кроме того, даже если доступны, они связаны с высокими затратами.[0004] There are two types of conventional schemes for persistent memory operations. The first scheme assumes that the entire memory system (eg, a dual-sided memory module (DIMM) containing a string of DRAM integrated circuits, as is known in the art) is energy supported. In this case, a write operation to an intermediate buffer at the receiving end of the DIMM may be sufficient to satisfy persistence expectations. In one implementation, when a write operation on the channel interface between the application requesting the write operation and the DIMM is successfully completed, the write operation may be considered to be permanent. However, the implementation of such circuits may involve the use of energy storage devices such as supercapacitors or batteries that provide power/charge to reset intermediate buffers on the DIMM when a power failure is detected. But such power storage devices may not be available on all DIMMs, and furthermore, even if available, they are associated with high costs.
[0005] Во второй схеме, все предыдущие операции записи могут сбрасываться в постоянную память, в то время как приложение ожидает статуса завершения от DIMM. Однако эта схема может повлечь значительную стоимость выполнения. Например, в случаях, в которых приложение может потребовать постоянных записей мелкой гранулярности для DIMM, но могут иметься другие одновременные, но независимые операции записи, выполняющие потоковый перенос в DIMM, сбрасывание всех предыдущих операций записи в постоянную память при ожидании статуса завершения может замедлять на только запросы постоянной записи, но и одновременные операции записи.[0005] In the second scheme, all previous write operations may be flushed to read-only memory while the application is waiting for the completion status from the DIMM. However, this scheme can incur significant implementation costs. For example, in cases where an application may require constant fine-grained writes to a DIMM, but there may be other concurrent but independent writes streaming to the DIMM, flushing all previous read-only writes while waiting for the completion status may only slow down persistent write requests, but also concurrent write operations.
[0006] Соответственно, в данной области техники существует потребность в операциях постоянной записи с высокой производительностью и высокой эффективностью, которые поддерживают разные гранулярности или размеры постоянных записей, избегая вышеупомянутых недостатков традиционных подходов.[0006] Accordingly, there is a need in the art for high performance, high efficiency persistent write operations that support different granularities or sizes of persistent records, avoiding the aforementioned disadvantages of conventional approaches.
Краткое описание сущности изобретенияBrief description of the essence of the invention
[0007] Примерные аспекты изобретения включают в себя системы и способы для постоянных операций. Система памяти, после приема команды постоянной записи и ассоциированных данных записи от хоста, выполняет постоянную запись данных записи в энергонезависимую память в системе памяти на основе команды постоянной записи. Система памяти может также принимать идентификацию записи (WID), ассоциированную с командой постоянной записи, от хоста и обеспечивать, после успешного завершения постоянной записи, указание завершения постоянной записи вместе с ассоциированной WID на хост.[0007] Exemplary aspects of the invention include systems and methods for ongoing operations. The memory system, after receiving the persistent write command and the associated write data from the host, permanently writes the write data to the non-volatile memory in the memory system based on the persistent write command. The memory system may also receive a write identification (WID) associated with the permanent write command from the host and provide, upon successful completion of the permanent write, an indication of completion of the permanent write along with the associated WID to the host.
[0008] Например, примерный аспект направлен на способ выполнения постоянных операций, способ содержит прием, в системе памяти, команды постоянной записи и ассоциированных данных записи от хоста, и выполнение постоянной записи данных записи в энергонезависимую память в системе памяти на основе команды постоянной записи.[0008] For example, an exemplary aspect is directed to a method for performing persistent operations, the method comprising receiving, at the memory system, a persistent write command and associated write data from a host, and performing a persistent write of the write data to non-volatile memory in the memory system based on the persistent write command.
[0009] Другой примерный аспект направлен на способ выполнения постоянных операций, способ содержит обеспечение, от хоста в систему памяти, команды постоянной записи и ассоциированных данных записи, причем команда постоянной записи указывает системе памяти выполнить постоянную запись данных записи в энергонезависимую память.[0009] Another exemplary aspect is directed to a method for performing persistent operations, the method comprising providing, from a host to a memory system, a persistent write command and associated write data, wherein the persistent write command instructs the memory system to permanently write the write data to non-volatile memory.
[0010] Другой примерный аспект направлен на устройство, содержащее систему памяти, сконфигурированную, чтобы принимать команду постоянной записи и ассоциированные данные записи от хоста и выполнять постоянную запись данных записи в энергонезависимую память в системе памяти на основе команды постоянной записи.[0010] Another exemplary aspect is directed to an apparatus comprising a memory system configured to receive a persistent write command and associated write data from a host, and permanently write the write data to non-volatile memory in the memory system based on the persistent write command.
[0011] Другой примерный аспект направлен на устройство, содержащее хост, сконфигурированный, чтобы обеспечивать команду постоянной записи и ассоциированные данные записи в систему памяти, причем команда постоянной записи указывает системе памяти выполнить постоянную запись данных записи в энергонезависимую память.[0011] Another exemplary aspect is directed to an apparatus comprising a host configured to provide a persistent write command and associated write data to a memory system, wherein the persistent write command instructs the memory system to permanently write the write data to non-volatile memory.
[0012] Другой примерный аспект направлен на устройство, содержащее средство для хранения данных, содержащее средство для приема команды постоянной записи и ассоциированных данных записи от хоста и средство для выполнения постоянной записи данных записи в энергонезависимую память в средстве для хранения, на основе команды постоянной записи.[0012] Another exemplary aspect is directed to an apparatus comprising means for storing data, comprising means for receiving a persistent write command and associated write data from a host, and means for performing persistent writing of the write data to non-volatile memory in the storage means, based on the persistent write command. .
[0013] Другой примерный аспект направлен на устройство, содержащее средство для обработки, содержащее средство для обеспечения команды постоянной записи и ассоциированных данных записи в систему памяти, причем команда постоянной записи указывает системе памяти выполнить постоянную запись данных записи в энергонезависимую память.[0013] Another exemplary aspect is directed to an apparatus comprising means for processing comprising means for providing a persistent write command and associated write data to a memory system, wherein the persistent write command instructs the memory system to permanently write the write data to non-volatile memory.
[0014] Другой примерный аспект направлен на Долговременный считываемый компьютером носитель хранения, содержащий код, который, при исполнении процессором, побуждает процессор выполнять постоянные операции, долговременный считываемый компьютером носитель хранения содержит код для приема, в системе памяти, команды постоянной записи и ассоциированных данных записи от хоста, и код для выполнения постоянной записи данных записи в энергонезависимую память в системе памяти на основе команды постоянной записи.[0014] Another exemplary aspect is directed to a non-volatile computer-readable storage medium comprising code that, when executed by a processor, causes the processor to perform persistent operations, the non-volatile computer-readable storage medium comprises code for receiving, in a memory system, a permanent write command and associated write data from the host, and code for permanently writing the recording data to the non-volatile memory in the memory system based on the persistent write command.
[0015] Другой примерный аспект направлен на Долговременный считываемый компьютером носитель хранения, содержащий код, который, при исполнении процессором, побуждает процессор выполнять постоянные операции, долговременный считываемый компьютером носитель хранения содержит код для обеспечения, от хоста в систему памяти, команды постоянной записи и ассоциированных данных записи, причем команда постоянной записи указывает системе памяти выполнить постоянную запись данных записи в энергонезависимую память.[0015] Another exemplary aspect is directed to a non-volatile computer-readable storage medium comprising code that, when executed by a processor, causes the processor to perform persistent operations, the non-volatile computer-readable storage medium comprises code to provide, from the host to the memory system, a persistent write instruction and associated the write data, wherein the permanent write command instructs the memory system to permanently write the write data to the non-volatile memory.
Краткое описание чертежейBrief description of the drawings
[0016] Прилагаемые чертежи представлены для помощи в описании аспектов изобретения и предоставлены только для иллюстрации аспектов, а не для их ограничения.[0016] The accompanying drawings are presented to assist in describing aspects of the invention and are provided to illustrate the aspects only and not to limit them.
[0017] Фиг. 1 иллюстрирует систему обработки в соответствии с аспектами настоящего раскрытия[0017] FIG. 1 illustrates a processing system in accordance with aspects of the present disclosure.
[0018] Фиг. 2A-C иллюстрируют транзакции для обработки постоянных записей, в соответствии с различными аспектами настоящего раскрытия.[0018] FIG. 2A-C illustrate transactions for processing persistent records, in accordance with various aspects of the present disclosure.
[0019] Фиг. 3 иллюстрирует примерное кодирование для команды постоянной записи в соответствии с настоящим раскрытием.[0019] FIG. 3 illustrates an exemplary coding for a persistent write command in accordance with the present disclosure.
[0020] Фиг. 4A-B иллюстрируют последовательности событий касательно примерных способов выполнения постоянных записей, в соответствии с аспектами настоящего раскрытия.[0020] FIG. 4A-B illustrate sequences of events regarding exemplary methods for performing persistent entries, in accordance with aspects of the present disclosure.
[0021] Фиг. 5 изображает примерное вычислительное устройство, в котором предпочтительно может быть использован аспект раскрытия.[0021] FIG. 5 depicts an exemplary computing device in which an aspect of the disclosure may advantageously be used.
Подробное описаниеDetailed description
[0022] Аспекты изобретения раскрыты в последующем описании и связанных чертежах, направленных на конкретные аспекты изобретения. Альтернативные аспекты могут разрабатываться без отклонения от объема изобретения. Дополнительно, хорошо известные элементы изобретения не будут описываться подробно или будут опущены, чтобы не затенять релевантные детали изобретения.[0022] Aspects of the invention are disclosed in the following description and associated drawings, directed to specific aspects of the invention. Alternative aspects may be developed without departing from the scope of the invention. Additionally, well-known elements of the invention will not be described in detail or will be omitted so as not to obscure relevant details of the invention.
[0023] Слово “примерный” используется здесь для обозначения “служащего в качестве примера, образца или иллюстрации”. Любой аспект, описанный здесь как “примерный”, не обязательно должен пониматься как предпочтительный или преимущественный относительно других аспектов. Подобным образом, термин “аспекты изобретения” не требует, чтобы все аспекты изобретения включали в себя обсуждаемый признак, преимущество или режим операции.[0023] The word “exemplary” is used herein to mean “serving as an example, exemplary, or illustrative”. Any aspect described herein as "exemplary" is not necessarily to be understood as being preferred or advantageous over other aspects. Similarly, the term “aspects of the invention” does not require that all aspects of the invention include the feature, advantage, or mode of operation discussed.
[0024] Терминология, используемая здесь, имеет целью только описывать конкретные аспекты и не предназначена, чтобы ограничивать аспекты изобретения. Как использовано здесь, формы единственного числа предназначены, чтобы включать в себя также и формы множественного числа, если контекст явно не указывает иное. Также должно быть понятно, что термины "содержит", "содержащий", "включает в себя" и/или "включающий в себя", при использовании здесь, определяют наличие указанных признаков, целых чисел, этапов, операций, элементов и/или компонентов, но не исключают наличия или добавления одного или нескольких других признаков, целых чисел, этапов, операций, элементов, компонентов и/или их групп.[0024] The terminology used here is only intended to describe specific aspects and is not intended to limit aspects of the invention. As used here, the singular forms are intended to include the plural forms as well, unless the context clearly indicates otherwise. It should also be understood that the terms "comprises", "comprising", "includes" and/or "comprising", when used here, define the presence of the indicated features, integers, steps, operations, elements and/or components. , but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components and/or groups thereof.
[0025] Дополнительно, многие аспекты описаны в терминах последовательностей действий, которые должны выполняться, например, элементами вычислительного устройства. Будет понятно, что различные действия, описанные здесь, могут выполняться конкретными схемами (например, специализированными интегральными схемами (ASIC)), программными инструкциями, исполняемыми одним или несколькими процессорами, или комбинацией того и другого. Дополнительно, эти последовательности действий, описанные здесь, могут рассматриваться как воплощаемые полностью в любой форме считываемого компьютером носителя хранения, имеющего сохраненный в нем соответствующий набор компьютерных инструкций, которые, при исполнении, побуждали бы ассоциированный процессор выполнять функциональность, описанную здесь. Таким образом, различные аспекты изобретения могут быть воплощены во множестве разных форм, все из которых, как предполагается, входят в объем заявленного предмета. К тому же, для каждого из аспектов, описанных здесь, соответствующая форма любых таких аспектов может быть описана, например, как “логика, сконфигурированная, чтобы” выполнять описанное действие.[0025] Additionally, many aspects are described in terms of sequences of actions to be performed, for example, by elements of a computing device. It will be understood that the various actions described herein may be performed by specific circuits (eg, application specific integrated circuits (ASICs)), software instructions executed by one or more processors, or a combination of both. Additionally, these sequences of actions described herein may be considered to be embodied entirely in any form of a computer-readable storage medium having stored therein an appropriate set of computer instructions that, when executed, would cause an associated processor to perform the functionality described herein. Thus, various aspects of the invention may be embodied in a variety of different forms, all of which are intended to be within the scope of the claimed subject matter. In addition, for each of the aspects described here, the corresponding form of any such aspects can be described, for example, as "logic configured to" perform the described action.
[0026] Примерные аспекты настоящего раскрытия направлены на эффективные и высокопроизводительные операции постоянной записи для энергонезависимой памяти, такой как энергонезависимая DIMM (или NVDIMM). Соответственно, постоянная NVDIMM или NVDIMM-P раскрыта в качестве одной примерной системы памяти, которая поддерживает операции постоянной записи в соответствии с примерными аспектами. Устройство хоста может быть сконфигурировано, чтобы обеспечивать примерные запросы/команды, например, для постоянных операций, и соответствующие данные на примерную систему памяти, и система памяти может быть сконфигурирована, чтобы выполнять запрошенные операции постоянной записи и обеспечивать соответствующую сигнализацию на устройство хоста, как будет рассмотрено более подробно в следующих разделах.[0026] Exemplary aspects of the present disclosure are directed to efficient and high performance persistent write operations for non-volatile memory, such as a non-volatile DIMM (or NVDIMM). Accordingly, a persistent NVDIMM or NVDIMM-P is disclosed as one exemplary memory system that supports persistent write operations in accordance with the exemplary aspects. The host device may be configured to provide exemplary requests/commands for, for example, persistent operations and corresponding data to the exemplary storage system, and the storage system may be configured to perform the requested persistent write operations and provide appropriate signaling to the host device, as will discussed in more detail in the following sections.
[0027] Со ссылкой теперь на фиг. 1, показана примерная система 100 обработки, содержащая хост 120 и систему 130 памяти. Хост 120 может содержать один или несколько элементов обработки, таких как универсальный процессор (CPU), цифровой сигнальный процессор (DSP), мультимедийный процессор, системный процессор, графический процессор (GPU), модулятор-демодулятор (модем), процессор приложений и т.д., даже хотя они не были проиллюстрированы явно. Эти элементы обработки могут выполнять запросы на доступ к системе 130 памяти. Контроллер памяти (не показан) может находиться в хосте 120 для управления этими запросами на доступ.[0027] With reference now to FIG. 1, an
[0028] Система 130 памяти может представлять собой постоянную память, например, NVDIMM-P в соответствии с настоящим раскрытием. Система 130 памяти показана как включающая в себя блок 132 ввода/вывода (I/O) и банк 134 памяти. Банк 134 памяти может включать в себя флэш-память, DRAM и т.д.[0028] The
[0029] Механизм 110 связи показан между хостом 120 и системой 130 памяти, с шиной 112 данных (DQ), шиной 114 команд и адресов (CA) и отдельно идентифицированной шиной ответа 116. Хост 120 может быть способен предоставлять команды и связанные адреса для запросов доступа к памяти посредством CA 114 и отправлять/принимать данные посредством DQ 112 (показана как двунаправленная шина). Шина ответа 116, хотя показана отдельно, может быть сконфигурирована как часть CA 114 и может быть реализована как двунаправленная шина в некоторых случаях. Шина ответа 116 может использоваться, чтобы обеспечивать информацию, такую как статус постоянных записей, в некоторых примерных аспектах. Различные другие шины/провода могут также присутствовать в механизме 110 связи, хотя они не идентифицированы отдельно. В некоторых примерах, система 130 памяти может использовать отдельные шины для детерминированных и недетерминированных ответов, что будет пояснено дополнительно ниже.[0029]
[0030] В реализации, в которой система 130 памяти может быть сконфигурирована как NVDIMM, с дополнительной поддержкой конфигурации постоянной NVDIMM (NVDIMM-P) для по меньшей мере некоторых операций, хост 120 может быть способен обеспечивать одну или несколько из следующих примерных команд на систему 130 памяти, например, на CA 114:[0030] In an implementation in which
- команда READ (например, с длиной кодирования, равной кратным значениям 64 B), вместе с идентификацией считывания (RID);- a READ command (for example, with an encoding length equal to multiples of 64 B), together with a read identification (RID);
- команда WRITE (например, традиционная команда записи);- a WRITE command (for example, a traditional write command);
- команда P-WRITE (например, команда постоянной записи, вместе с идентификацией записи (WID) для постоянных записей, вместе с постоянным (persist) битом, который указывает, когда записям с данной WID необходим сигнал завершения постоянной записи (W_PER) (например, обеспечиваемый по шине ответа 116) от системы 130 памяти);- a P-WRITE command (e.g. a permanent write command, together with a write identification (WID) for persistent writes, together with a persistent bit that indicates when records with a given WID need a permanent write complete (W_PER) signal (e.g., provided over the response bus 116) from the memory system 130);
- команда ADRx: расширенная адресация;- ADRx command: extended addressing;
- команда SEND (например, команда для системы 130 памяти, чтобы обеспечивать статус запроса на считывание данных);- a SEND command (for example, a command for the
- команда SEND_Status (например, команда для системы 130 памяти, чтобы обеспечивать вывод отсчета ошибок, WID и т.д., относящихся к постоянным операциям, от системы 130 памяти);- command SEND_Status (for example, a command for the
- команда FLUSH (чтобы сбросить предыдущие записи, подлежащие внесению в постоянную память);- FLUSH command (to reset previous records to be entered into permanent memory);
- NOP (пустой оператор);- NOP (empty statement);
- команда опережающего считывания (например, используемая для считывания кэшированной памяти); и- a read-ahead command (eg, used to read cached memory); and
- другие команды кэширования, которые могут быть специфическими для реализации.- other caching commands that may be implementation specific.
[0031] Как упомянуто ранее, отдельные шины могут быть обеспечены в механизме 110 связи для детерминированных и недетерминированных ответов от системы 130 памяти на хост 120. Детерминированные ответы включают в себя метаданные, информацию об ошибках/четности, такую как кодирование с исправлением ошибок (ECC) касательно считанных данных, отправленных по DQ 112 на хост 120, и т.д., которые могут мультиплексироваться на шинах, исходящих от контактов, соединенных с I/O 132, таких как контакты битов проверки.[0031] As mentioned earlier, separate buses may be provided in
[0032] Среди битов ECC, могут иметься, например, биты ECC носителей, специфические для реализаций системы 130 памяти (например, как NVDIMM), и специфические для канала биты ECC в DQ 112, которые могут быть стандартизированы для обеспечения возможности взаимной совместимости по различным реализациям.[0032] Among the ECC bits, there may be, for example, media ECC bits specific to
[0033] Биты метаданных могут включать в себя задержанные RID для запросов на считывание, отправленных не по порядку программы (причем, для операций по порядку, RID может быть установлена в статус “безразлично”). Биты метаданных могут также включать в себя разрешение записи (WC), которое относится к неиспользованной квоте для операций записи, распределенных по определенным хостам или элементам обработки хоста 120. Биты метаданных могут дополнительно включать в себя биты “отравления” (poisoning) данных для данных от пользовательского оборудования, как известно в данной области техники, и другие определенные пользователем биты.[0033] The metadata bits may include delayed RIDs for read requests sent out of program order (and, for in-order operations, the RID may be set to don't care). The metadata bits may also include write permission (WC), which refers to the unused quota for write operations allocated to certain hosts or processing elements of
[0034] Недетерминированные ответы в соответствии с настоящим раскрытием могут относиться к постоянным операциям и могут отправляться через выделенную сигнализацию, такую как ответ 116 от системы 130 памяти на хост 120, и могут указывать следующее:[0034] Non-deterministic responses in accordance with the present disclosure may relate to persistent operations and may be sent via dedicated signaling, such as
- R_RDY: сигнал от системы 130 памяти на хост 120 для указания, что считанные данные доступны;- R_RDY: signal from
- Wr_Per: сигнал от системы 130 памяти на хост 120 для указания, что постоянная запись завершилась; и- Wr_Per: signal from the
- ERROR: сигнал от системы 130 памяти на хост 120 для указания условий ошибки, таких как проверка CRC, нарушение разрешения (кредита), превышение лимита времени носителей и т.д.- ERROR: Signal from
[0035] Для реализации системы 130 памяти как NVDIMM-P, следующие предусмотренные протоколом контакты могут быть, например, определены в I/O 132. С использованием широтно-импульсной модуляции, могут быть реализованы следующие конфигурации контактов и сигналов ответа. Например, в реализации удвоенной скорости 5 передачи данных (DDR5) NVDIMM-P, один провод, маркированный как RSP_n (один выделен на под-канал), может использоваться, чтобы обеспечивать следующую сигнализацию: 2 тактовых импульса низких для R_RDY, 4 низких тактовых импульса для W_PER и 6 низких тактовых импульсов для MESSAGE. За каждым низким импульсом могут следовать по меньшей мере 2 высоких тактовых импульса. Если необходим отдельный сигнал ERROR, то он может определяться как 8 низких тактовых импульсов.[0035] To implement the
[0036] Для реализации DDR4: два контакта могут использоваться, чтобы решать проблемы производительности с одним контактом (ODT1 и CKE1), причем ODT1 представляет ширину 2 низких тактовых импульсов для R_RDY и 4 низких тактовых импульсов для MESSAGE, и CKE1 представляет 2 низких тактовых импульса для W_PER. За каждым низким импульсом могут следовать по меньшей мере 2 высоких тактовых импульса, и если необходим отдельный сигнал ERROR, то он может определяться как 6 низких тактовых импульсов на ODT1.[0036] For DDR4 implementation: two pins can be used to solve single pin performance issues (ODT1 and CKE1), where ODT1 represents 2 low clock width for R_RDY and 4 low clock for MESSAGE, and CKE1 represents 2 low clock width for W_PER. Each low pulse can be followed by at least 2 high clocks, and if a separate ERROR signal is needed, it can be defined as 6 low clocks on ODT1.
[0037] В примерных реализациях постоянных записей, подходящие комбинации аппаратных средств, программного обеспечения, прошивки и т.д. (например, приложений, драйверов и т.д.) могут быть сконфигурированы, чтобы обеспечивать возможность предоставления уведомлений на хост 120 от системы 130 памяти, когда один или несколько запросов на запись от хоста 120 на систему 130 памяти достигают постоянства. Эти уведомления могут быть специфическими для реализации, как объясняется ниже.[0037] In exemplary implementations of persistent entries, suitable combinations of hardware, software, firmware, etc. (eg, applications, drivers, etc.) may be configured to allow notifications to be provided to host 120 from
[0038] Когда данные, подлежащие записи для операции записи, достигают защищенного от перебоя питания буфера на контроллере носителя (например, защищенной от перебоя питания памяти системы 130 памяти), операция записи может рассматриваться постоянной во время нормальных операций. Однако для определенных нечастых случаев или когда буферы контроллера носителя не защищены от перебоя питания, программное обеспечение будет гарантировать, что записи от начала до конца введены в носитель NVM.[0038] When the data to be written for a write operation reaches the power-failure buffer on the media controller (eg, the fail-safe memory of the memory system 130), the write operation may be considered persistent during normal operations. However, for certain infrequent cases, or when the media controller's buffers are not protected from power failure, the software will ensure that the writes are entered end-to-end into the NVM media.
[0039] Для реализации системы 130 памяти как NVDIMM-P, DIMM с энергетической поддержкой используют конфигурации, в которых вышеупомянутые буферы защищены от перебоя питания, что означает, что команда записи (Write) NVDIMM-P может использоваться, даже когда требуется постоянство для нормальных случаев. Дополнительно, команда сброса (Flush) NVDIMM-P, как определено здесь, может использоваться, чтобы сбрасывать все записи в буферах контроллера носителя в энергонезависимую память. В случае команды сброса, только записи, которые возникли до сброса, гарантируются как созданные постоянными для энергонезависимой памяти. Реализованные в программном обеспечении команды, такие как подходящие барьерные операции, могут использоваться после последней записи и перед выдачей команды сброса для обеспечения того, что поддерживается корректный порядок записей (например, когда хост 120 может быть сконфигурирован, чтобы отправлять запросы на постоянную запись не в порядке программы).[0039] To implement the
[0040] Хотя DIMM без энергетической поддержки могут использоваться менее часто, чем DIMM с энергетической поддержкой, обсуждаемые выше, команда постоянной записи (Persistent Write) NVDIMM-P может использоваться, когда постоянство требуется также для DIMM без энергетической поддержки. Контроллер памяти хоста 120, как упомянуто ранее, может быть сконфигурирован, чтобы определять, когда следует выдать команду постоянной записи. В этом случае, ожидается, что система 130 памяти обеспечит явное уведомление, когда постоянная запись завершена, как будет обсуждено со ссылкой на фиг. 2A. Дополнительно, команда сброса NVDIMM-P может также использоваться, как ранее, чтобы сбрасывать все записи (даже непостоянные записи) в энергонезависимую память.[0040] Although non-power-backed DIMMs may be used less frequently than the power-backed DIMMs discussed above, the NVDIMM-P Persistent Write command may be used when persistence is also required for non-power-backed DIMMs.
[0041] Со ссылкой теперь на фиг. 2A, показан примерный набор транзакций между хостом 120 и системой 130 памяти для иллюстрации аспектов команды постоянной записи. Существуют некоторые признаки примерной команды постоянной записи (Wr_Per) (или просто, “постоянной записи”), которые могут быть общими для вышеописанной команды считывания (Read) от хоста 120. Они включают в себя общую идентификацию записи (WID), которая может представлять собой многобитовый идентификатор, чтобы идентифицировать инструкции, специфические для записи. Показан примерный набор WID 210, из которых каждая может быть до 16 битов шириной, что включает в себя один действительный бит (Valid) “Vld” (соответственно, до 31 WID могут быть представлены в 64-байтном пакете команд, отправляемом на CA 114, например). Команда постоянной записи может также иметь зарезервированное поле в кодировании WID для возвратов статуса команды сброса, что будет дополнительно объяснено в следующих разделах.[0041] With reference now to FIG. 2A, an exemplary set of transactions between
[0042] В одном аспекте, хост 120 может быть сконфигурирован, чтобы выдавать постоянную запись, только когда хост 120 имеет доступными ассоциированные разрешения постоянной записи. Разрешения постоянной записи (аналогично разрешениям считывания, известным в данной области техники) могут определяться во время конфигурации и администрироваться хостом 120 и могут отражать число ожидающих выполнения постоянных записей, которые разрешено выдавать хосту 120.[0042] In one aspect, host 120 may be configured to issue a permanent entry only when
[0043] После выдачи, хост 120 может быть сконфигурирован, чтобы отслеживать ожидающие выполнения постоянные записи на основе их соответственных WID 210. На фиг. 2A (со ссылкой также на фиг. 1), показаны две постоянные записи (P-Write 1 с первым адресом и WID, и P-Write 2 со вторым адресом и WID), обозначенные как 202a и 204a, выданные от хоста 120 на систему 130 памяти по CA 114, вместе с соответственными данными, данными записи 202b и данными записи 204b по DQ 112, например.[0043] Once issued,
[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.[0044] The
[0045] Дополнительно, хост 120 может также быть сконфигурирован, чтобы выдавать команду “Send-Status for WID”, обозначенную ссылочной позицией 206a, в любое время, чтобы определить статус своих ожидающих выполнения постоянных записей. В ответ, система 130 памяти может быть сконфигурирована, чтобы выдавать пакет статуса с WID завершенных постоянных записей, например, при переносе пакета длиной 8 или “BL8” по DQ 112.[0045] Additionally, host 120 may also be configured to issue a “Send-Status for WID” command, denoted at 206a, at any time to determine the status of its pending persistent entries. In response, the
[0046] Как упомянуто ранее, до 31 WID 210 могут быть упакованы в каждый 64 В пакет статуса, причем для каждой WID 210 может иметься всего 16 битов, назначенных для 15-битной WID и бита Valid. Дополнительно, система 130 памяти может также использовать ранее упомянутое поле метаданных, чтобы возвращать статус для других записей. Хост 120 может использовать возвращенные WID 210 в пакете 206b статуса WID, например, чтобы завершать отслеживание ожидающих выполнения постоянных записей.[0046] As previously mentioned, up to 31
[0047] В некоторых аспектах, могут быть сгруппированы две или более постоянные записи. Например, набор из 64 B постоянных записей может группироваться для фиксации (или записи в энергонезависимую память) в случае DIMM без энергетической поддержки, например. Примерная реализация может использовать блок постоянных записей, подлежащий выдаче на систему 130 памяти от хоста 120, причем система 130 памяти может быть сконфигурирована, чтобы собирать воедино блок постоянных записей в буфере и фиксировать весь блок постоянных записей сразу, что может приводить к повышению эффективности. Будет понятно, однако, что группировка постоянных записей и их фиксация в блок не требуется для DIMM с энергетической поддержкой, в которых буферы защищены от перебоя питания.[0047] In some aspects, two or more persistent entries may be grouped. For example, a set of 64B permanent entries may be grouped for commit (or write to non-volatile memory) in the case of DIMMs without power support, for example. An exemplary implementation may use a persistent record block to be issued to
[0048] Следующие модификации могут производиться с командой постоянной записи для реализации фиксаций групп, обсуждаемых выше. Хост 120 может выбирать одну WID (из WID 210, например) для набора из двух или более записей. Дополнительный бит, именуемый “Persist” (постоянный), может добавляться в команду постоянной записи при отправке по CA 114, например. Бит Persist может использоваться, чтобы определять, когда вся группа постоянных записей была отправлена на систему 130 памяти.[0048] The following modifications may be made to the persistent write command to implement the group commits discussed above. Host 120 may select one WID (from
[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, инициировать процессы фиксации постоянства.[0049] For example, three 64 B persistent entries may be grouped together as follows using WID=5 in an illustrative example. The first persistent entry (WID=5, Persist=0), the second persistent entry (WID=5, Persist=0), and the third persistent entry (WID=5, Persist=1) may be sent on the
[0050] В одной реализации, только постоянная запись с битом Persist, установленным в 1, может быть сконфигурирована, чтобы получать отклик Wr_Per от системы 130 памяти (например, только третья постоянная запись в примере выше) для группы постоянных записей. Это может уменьшать трафик по шине ответа 116.[0050] In one implementation, only the persistent entry with the Persist bit set to 1 can be configured to receive a Wr_Per response from the memory system 130 (eg, only the third persistent entry in the example above) for a group of persistent entries. This may reduce traffic on the 116 response bus.
[0051] В некоторых аспектах, постоянные записи с разными WID могут чередоваться, например, по CA 114. Соответственно, группировка постоянных записей для постоянной фиксации не подразумевает, что постоянные записи в группе одной и той же WID отправляются последовательно от хоста 120.[0051] In some aspects, persistent records with different WIDs may be interleaved, for example, across
[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 на основе числа завершений.[0052] In some aspects, to address the problem of race conditions that may occur in Wr_Per responses to persistent entries, the entry group ID (WGID) status method can be used to group the statuses of one or more persistent entries using different bitmaps, such as a completed WGID bitmap and a pending WGID bitmap, as will be explained with reference to FIG. 2B below. Given persistent entries with a corresponding WID,
[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 может затем начать повторно выдавать постоянные записи/сбросы.[0053] In some cases, a fatal error (UE) may occur in transactions, which will be discussed with reference to FIG. 2C. When there is a UE in Send-W_PER-Status, host 120 may stop issuing new persistent writes/resets and Send-W_PER-Status. Host 120 may send a status read command, referred to as Xread-Status, to
[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 применим только для сбросов.[0054] For DIMM implementations with energy support of the
[0055] Разрешения для реализаций WGID могут обрабатываться следующим образом. Отдельные разрешения могут поддерживаться для записей статуса или Xwrites и для постоянных записей, причем хост 120 может определять, как пул разрешений может быть распределен системой 130 памяти. Инкрементный возврат разрешений может обеспечиваться посредством считывания метаданных, причем может использоваться схема кодирования для возвращения разрешений Xwrite или постоянной записи. Возвраты X-Read-Status могут быть доступными для сегментов буфера Xwrite и постоянной записи на основе распределения разрешений.[0055] Permissions for WGID implementations may be processed as follows. Separate permissions may be maintained for status or Xwrites records and for persistent records, where
[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 завершена.[0056] In one implementation, for example, to be described with reference to FIG. 2B-C,
[0057] Со ссылкой теперь на фиг. 2B, будет описана обработка W_PER для нормального случая. Система 250 показана с хостом 120 и системой 130 памяти. Если как разрешения записи, так и свободная WGID доступны, то хост 120 может выдавать одну или несколько команд PWRITE или FLUSH, показанных как 252a, 254a. Хост 120 может отслеживать выданные команды 252a, 254a PWRITE или FLUSH в списке ожидающей WGID хоста (не показано, но может поддерживаться в хосте 120).[0057] With reference now to FIG. 2B, W_PER processing for the normal case will be described.
[0058] Соответственно, система 130 памяти может принимать и отслеживать ожидающие команды 252a, 254a PWRITE или FLUSH в списке ожидающей DIMM-WGID (не показано). Система 130 памяти может исполнять ожидающие команды 252a, 254a PWRITE или FLUSH и утверждать соответствующие W_PER 254b и 252b (показаны в обратном порядке принятых команд 252a, 254a PWRITE или FLUSH) для хоста 120 после соответственного завершения каждой принятой команды.[0058] Accordingly,
[0059] Система 130 памяти может собирать завершенные принятые команды PWRITE или FLUSH 252a, 254a в битовой карте 260 завершенной WGID, для которой показаны различные обновления 260a, 260b, 260c и т.д. Система 130 памяти может также удалять завершенные команды 252a, 254a PWRITE или FLUSH из списка ожидающей DIMM-WGID.[0059] The
[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.[0060]
[0061] В некоторых аспектах, минимум 1 завершение регистрируется в снимке состояния. Система 130 памяти очищает положения битов на битовой карте 260 завершенной WGID на основе завершений, отправленных в WGID_Status 256b, показанных передачей битовой карты 260b завершенной WGID на битовую карту 260c завершенной WGID после сброса или очистки положений битов.[0061] In some aspects, at least 1 termination is registered in the snapshot. The
[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 памяти.[0062]
[0063] В примерных реализациях, хост 120 и система 130 памяти могут продолжать выдавать и исполнять новую PWRITE, в то время как выполняется обработка события W_PER. Хотя W_PER-Count и списки ожидания, такие как список ожидающей WGID хоста, список ожидающей DIMM-WGID и т.д., были обсуждены для примерной реализации, альтернативные структуры для достижения вышеописанной функциональности могут использоваться без отклонения от объема настоящего раскрытия.[0063] In exemplary implementations, host 120 and
[0064] Со ссылкой теперь на фиг. 2C, показана система 270 для обработки неисправимой ошибки канала (UE), следующая за SEND-W_PER-Status от хоста 120, что приводит к потере завершений, отправленных в WGID_Status 256b (поясняется на фиг. 2B выше) от системы 130 памяти. Дополнительно, следует отметить, что система 130 памяти могла быть очищена перед завершениями из битовой карты 260 завершенной WGID на фиг. 2B.[0064] With reference now to FIG. 2C, a
[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.[0065] Accordingly, in a protocol for recovering from such errors in
[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 в ответ.[0066] After a predetermined minimum time delay for the write enable signal, referred to as TWE_Delay, following the last PWRITE, the
[0067] Система 130 памяти может затем возвращать подготовленный пакет 278b статусов, из которого хост 120 может извлечь и обработать битовую карту 280 ожидающей WGID, принятую в пакете 278b статусов. Хост 120 может освобождать подходящие WGID из своего списка отслеживания ожидающих WGID хоста и декрементировать W_PER-Count на число освобожденных WGID. Хост 120 может затем повторять процессы, начиная с выдачи новых команд PWRITE/FLUSH, и обрабатывать ожидающие W_PER в это время как на предыдущий вызов.[0067]
[0068] В некоторых аспектах, пакет 278b статусов сконфигурирован, чтобы указывать, имеет ли он битовую карту 260 завершенной WGID или битовую карту 280 ожидающей WGID. Пакеты статусов отклика W_PER содержат битовую карту 260 завершенной WGID, в то время как все другие пакеты статусов содержат битовую карту 280 ожидающей WGID. Время TWE_Delay сконфигурировано, чтобы учитывать время для получения уведомления об ошибке от системы 130 памяти для последней PWRITE, выданной от хоста 120, и время ожидания от обнаружения UE до XREAD-Status 274a, выданного от хоста 120, может меняться в зависимости от того, когда была выдана последняя PWRITE.[0068] In some aspects,
[0069] Со ссылкой на фиг. 3, показано примерное кодирование для постоянных записей, например, для реализации DDR5 системы 130 памяти. Поле CA1 обычно используется, чтобы проводить различие между командами 1UI и 2UI в технологии DDR5, и может сохраняться для реализаций NVDIMM-P. CA 114 в некоторых реализациях может быть сконфигурировано на скоростях DDR для DDR5 только с 7 контактами, и в таких случаях, кодирование отдельной команды может использоваться для постоянных записей, например, как показано на фиг. 3.[0069] With reference to FIG. 3, exemplary coding for persistent entries is shown, for example, for a DDR5 implementation of
[0070] На фиг. 3, если постоянный бит Persist=1, это указывает, что система 130 памяти должна поместить все постоянные записи, ассоциированные с соответственной WID, в энергонезависимую память. Если существует одна 64 B постоянная запись в группе, бит Persist может быть установлен в 1. Для постоянных записей больше 64 B, все постоянные записи могут иметь одну и ту же WID, причем последняя постоянная запись имеет свой бит Persist, установленный в 1, в то время как оставшиеся постоянные записи имеют свои биты Persist, установленные в 0.[0070] FIG. 3, if the persistent bit Persist=1, this indicates that the
[0071] В дополнение к транзакциям выше, как представлено в предыдущих разделах, другая команда может также использоваться в ассоциации с постоянными записями, именуемая командой FLUSH. Команда FLUSH сконфигурирована, чтобы указывать системе 130 памяти, что все предшествующие буферизованные записи (например, в непостоянной или энергозависимой памяти) должны быть помещены в постоянную память, учитывая, что будущие записи могут не затрагиваться подобным образом или помещаться в постоянную память при использовании команды FLUSH.[0071] In addition to the transactions above, as presented in the previous sections, another command may also be used in association with persistent records, referred to as the FLUSH command. The FLUSH command is configured to indicate to the
[0072] Когда исполнение FLUSH завершено, система 130 памяти может снова утверждать Wr_Per, например, по шине ответа 116 на хост 120, аналогично случаю постоянных записей, обсужденному выше.[0072] When the FLUSH execution is completed, the
[0073] Дополнительно, хост 120 может также обеспечивать команду, Send-Status для WID (аналогично постоянным записям) на систему 130 памяти в случае команды FLUSH, на которую система 130 памяти может отвечать пакетом статусов WID с уникальной зарезервированной WID для указания завершения исполнения FLUSH (например, WID со всеми битами, установленными в 1, может представлять собой такую зарезервированную WID, используемую для указания завершения исполнения FLUSH).[0073] Additionally, host 120 may also provide a Send-Status for WID command (similar to persistent writes) to
[0074] В одной реализации, может быть разрешена только одна ожидающая выполнения команда FLUSH от хоста 120. Таким образом, в этой реализации, хост 120 может быть вынужден ждать ответа завершения FLUSH от системы 130 памяти до отправки другой команды FLUSH. В альтернативных реализациях, команды FLUSH могут сопровождаться соответствующими FLUSH ID (например, выбранными из полей зарезервированных WID), и соответствующий ответ на Send-Status может побуждать систему 130 памяти возвращать FLUSH ID, для которого исполнение FLUSH было завершено.[0074] In one implementation, only one pending FLUSH command from
[0075] Будет понятно, что аспекты включают в себя различные способы для выполнения процессов, функций и/или алгоритмов, раскрытых здесь. Например, фиг. 4A иллюстрирует примерный способ 400 выполнения постоянных операций.[0075] It will be understood that aspects include various methods for performing the processes, functions, and/or algorithms disclosed here. For example, FIG. 4A illustrates an
[0076] Блок 402 содержит прием, в системе памяти (например, системе 130 памяти), команды постоянной записи (например, постоянная запись 202a) и ассоциированных данных записи (например, данных 202b) от хоста (например, хоста 120).[0076]
[0077] Блок 404 содержит выполнение постоянной записи данных записи в энергонезависимую память (например, в энергонезависимую память в системе 130 памяти) в системе памяти на основе команды постоянной записи. Идентификация записи (WID), ассоциированная с командой постоянной записи, может приниматься от хоста, и после успешного завершения постоянной записи, указание (Wr_Per) завершения постоянной записи вместе с ассоциированной WID (например, Wr_Per 202c) может предоставляться на хост.[0077]
[0078] Аналогично, фиг. 4B иллюстрирует другой примерный способ 450 выполнения постоянных операций.[0078] Similarly, FIG. 4B illustrates another
[0079] Блок 452 содержит обеспечение, от хоста (например, хоста 120) на систему памяти (например, систему 130 памяти), команды постоянной записи (например, постоянная запись 202a) и ассоциированных данных записи (например, данных 202b), причем команда постоянной записи указывает системе памяти выполнить постоянную запись данных записи в энергонезависимую память.[0079]
[0080] Блок 454 содержит обеспечение идентификации записи (WID) (например, WID 210), ассоциированной с командой постоянной записи, на систему памяти от хоста.[0080]
[0081] Примерное устройство, в котором могут использоваться аспекты настоящего раскрытия, теперь будет обсуждено в отношении фиг. 5. Фиг. 5 показывает блок-схему вычислительного устройства 500. Вычислительное устройство 500 может соответствовать примерной реализации системы 100 обработки согласно фиг. 1, причем процессор 120’ может представлять собой один из элементов обработки хоста 120. Процессор 120’ в качестве примера показан как соединенный с системой 130 памяти через механизм 110 связи, при этом дополнительные подробности механизма 110 связи опущены на этом представлении в целях ясности. Процессор 120’, механизм 110 связи и система 130 памяти могут быть сконфигурированы, чтобы выполнять способы 400-450, как обсуждается выше. Будет понятно, что другие конфигурации памяти, известные в данной области техники, например, использующие один или несколько уровней кэша, хотя не показаны, могут присутствовать в вычислительном устройстве 500.[0081] An exemplary apparatus in which aspects of the present disclosure may be used will now be discussed with respect to FIG. 5. FIG. 5 shows a block diagram of
[0082] Фиг. 5 также показывает контроллер 526 дисплея, который соединен с процессором 120’ и с дисплеем 528. В некоторых случаях, вычислительное устройство 500 может использоваться для беспроводной связи, и фиг. 5 также показывает опциональные блоки пунктирными линиями, такие как кодер/декодер (кодек) 534 (например, аудио и/или голосовой кодек), связанный с процессором 120’, и динамик 536 и микрофон 538 могут быть соединены с кодеком 534; и беспроводную антенну 542, связанную с беспроводным контроллером 540, который связан с процессором 120’. Когда представлены один или несколько из этих опциональных блоков, в конкретном аспекте, процессор 120’, контроллер 526 дисплея, система 130 памяти и беспроводной контроллер 540 включены в устройство 522 системы в корпусе или системы на чипе.[0082] FIG. 5 also shows a
[0083] Соответственно, в конкретном аспекте, устройство 530 ввода и источник 544 питания соединены с устройством 522 системы на чипе. Более того, в конкретном аспекте, как проиллюстрировано на фиг. 5, где представлены один или несколько опциональных блоков, дисплей 528, устройство 530 ввода, динамик 536, микрофон 538, беспроводная антенна 542 и источник 544 питания являются внешними для устройства 522 системы на чипе. Однако, каждое из дисплея 528, устройства 530 ввода, динамика 536, микрофона 538, беспроводной антенны 542 и источника 544 питания может быть связано с компонентом устройства 522 системы на чипе, таким как интерфейс или контроллер.[0083] Accordingly, in a specific aspect, the
[0084] Следует отметить, что хотя фиг. 5 в общем изображает вычислительное устройство, процессор 120’ и система 130 памяти могут также быть интегрированы в телевизионную приставку, сервер, музыкальный проигрыватель, видеопроигрыватель, развлекательное устройство, навигационное устройство, персональный цифровой ассистент (PDA), блок данных с фиксированным местоположением, компьютер, ноутбук, планшет, устройство связи, мобильный телефон или другие аналогичные устройства.[0084] It should be noted that although FIG. 5 generally depicts a computing device, processor 120' and
[0085] Специалисты в данной области техники поймут, что информация и сигналы могут быть представлены с использованием любых из многообразия различных технологий и методов. Например, данные, инструкции, команды, информация, сигналы, биты, символы и элементарные посылки, ссылки на которые могут делаться во всем вышеизложенном описании, могут быть представлены посредством напряжений, токов, электромагнитных волн, магнитных полей или частиц, оптических полей или частиц или любой их комбинации.[0085] Those skilled in the art will appreciate that information and signals may be represented using any of a variety of different technologies and techniques. For example, the data, instructions, commands, information, signals, bits, symbols, and chips that may be referred to throughout the foregoing description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination of them.
[0086] Дополнительно, специалисты в данной области техники поймут, что различные иллюстративные логические блоки, модули, схемы и этапы алгоритмов, описанные в связи с аспектами, раскрытыми здесь, могут быть реализованы как электронные аппаратные средства, компьютерное программное обеспечение или комбинации обоих. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратных средств и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы были описаны выше в общем с точки зрения их функциональности. То, реализуется ли такая функциональность как аппаратные средства или программное обеспечение, зависит от конкретного приложения и ограничений при проектировании, налагаемых на всю систему. Специалисты в данной области могут реализовывать описанную функциональность разными способами для каждого конкретного приложения, но такие решения реализации не должны интерпретироваться как вызывающие отклонение от объема настоящего изобретения.[0086] Additionally, those skilled in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the aspects disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the particular application and design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in different ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.
[0087] Способы, последовательности и/или алгоритмы, описанные в связи с раскрытыми аспектами, могут быть воплощены непосредственно в аппаратных средствах, в исполняемом процессором модуле программного обеспечения или в комбинации двух. Модуль программного обеспечения может находиться в памяти RAM, флэш-памяти, памяти ROM, памяти EPROM, памяти EEPROM, регистрах, жестком диске, съемном диске, CD-ROM или любой другой форме носителя хранения, известной в данной области техники. Примерный носитель хранения связан с процессором, так что процессор может считывать информацию из и записывать информацию на носитель хранения. Альтернативно, носитель хранения может быть интегрирован в процессор.[0087] The methods, sequences, and/or algorithms described in connection with the disclosed aspects may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. The software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, removable disk, CD-ROM, or any other form of storage media known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. Alternatively, the storage medium may be integrated into the processor.
[0088] Соответственно, аспект изобретения может включать в себя считываемые компьютером носители, воплощающие способ выполнения постоянных записей. Соответственно, изобретение не ограничено проиллюстрированными примерами, и любые средства для выполнения функциональности, описанной здесь, включены в аспекты изобретения.[0088] Accordingly, an aspect of the invention may include computer-readable media embodying a method for performing persistent recordings. Accordingly, the invention is not limited to the illustrated examples, and any means for performing the functionality described herein are included within aspects of the invention.
[0089] Хотя предшествующее раскрытие показывает иллюстративные аспекты изобретения, следует отметить, что различные изменения и модификации могут выполняться без отклонения от объема изобретения, как определено прилагаемой формулой изобретения. Функции, этапы и/или действия пунктов формулы изобретения на способ в соответствии с аспектами изобретения, описанными здесь, не требуется выполнять в каком-либо конкретном порядке. Более того, хотя элементы изобретения могут быть описаны или заявлены в единственном числе, множественное число предполагается, если ограничение единственным числом не выражено явно.[0089] Although the foregoing disclosure shows illustrative aspects of the invention, it should be noted that various changes and modifications may be made without departing from the scope of the invention as defined by the appended claims. The functions, steps and/or actions of the claims on the method in accordance with the aspects of the invention described here do not need to be performed in any particular order. Moreover, while elements of the invention may be described or claimed in the singular, the plural is intended unless limitation to the singular is expressly stated.
Claims (49)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/706,530 | 2017-09-15 | ||
US15/706,530 US11194524B2 (en) | 2017-09-15 | 2017-09-15 | Apparatus and method for performing persistent write operations using a persistent write command |
PCT/US2018/046590 WO2019055164A1 (en) | 2017-09-15 | 2018-08-14 | Persistent writes for non-volatile memory |
Publications (3)
Publication Number | Publication Date |
---|---|
RU2020110130A RU2020110130A (en) | 2021-10-15 |
RU2020110130A3 RU2020110130A3 (en) | 2022-03-29 |
RU2780441C2 true RU2780441C2 (en) | 2022-09-23 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100070631A1 (en) * | 2008-09-15 | 2010-03-18 | Dell Products L.P. | System and Method for Management of Remotely Shared Data |
US20120017038A1 (en) * | 2003-12-30 | 2012-01-19 | Sergey Anatolievich Gorobets | Non-Volatile Memory And Method With Control Data Management |
US20160034225A1 (en) * | 2013-03-14 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Multiversioned nonvolatile memory hierarchy for persistent memory |
US20170147207A1 (en) * | 2015-11-20 | 2017-05-25 | Arm Ltd. | Non-volatile buffer for memory operations |
RU2623801C1 (en) * | 2013-07-26 | 2017-06-29 | Интел Корпорейшн | Interface of non-volatile memory |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120017038A1 (en) * | 2003-12-30 | 2012-01-19 | Sergey Anatolievich Gorobets | Non-Volatile Memory And Method With Control Data Management |
US20100070631A1 (en) * | 2008-09-15 | 2010-03-18 | Dell Products L.P. | System and Method for Management of Remotely Shared Data |
US20160034225A1 (en) * | 2013-03-14 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Multiversioned nonvolatile memory hierarchy for persistent memory |
RU2623801C1 (en) * | 2013-07-26 | 2017-06-29 | Интел Корпорейшн | Interface of non-volatile memory |
US20170147207A1 (en) * | 2015-11-20 | 2017-05-25 | Arm Ltd. | Non-volatile buffer for memory operations |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11650765B2 (en) | Apparatus and method for performing persistent write operations using a persistent write command | |
KR102384907B1 (en) | Record credit management for non-volatile memory | |
KR101861924B1 (en) | Storing parity data separate from protected data | |
US8949492B2 (en) | Apparatus including buffer allocation management and related methods | |
JP5759623B2 (en) | Apparatus including memory system controller and associated method | |
US9076528B2 (en) | Apparatus including memory management control circuitry and related methods for allocation of a write block cluster | |
US8543758B2 (en) | Apparatus including memory channel control circuit and related methods for relaying commands to logical units | |
US20190042413A1 (en) | Method and apparatus to provide predictable read latency for a storage device | |
KR20090019593A (en) | Ecc control circuit and multi channel memory system icluding the same | |
KR102335838B1 (en) | Permanent write data to energy-back memory | |
US20180150233A1 (en) | Storage system | |
EP3696680A1 (en) | Method and apparatus to efficiently track locations of dirty cache lines in a cache in a two level main memory | |
US10180792B1 (en) | Cache management in data storage systems | |
US11500581B2 (en) | Efficient TLP fragmentations in extended LBA environment | |
RU2780441C2 (en) | Permanent records for non-volatile memory | |
CN114730247A (en) | Storage device with minimum write size of data |