Система памяти

Иллюстрации

Показать все

Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении возможности в единственном сигнале запроса сигнализировать о по меньшей мере одной из множества различных функций. Устройство для использования в модуле памяти, который соединен с хост-контроллером памяти по шине, содержит контроллер модуля памяти, содержащий аппаратное средство для выработки сигнала запроса в хост-контроллер памяти, показывающего, что хост-контроллер памяти может осуществить доступ к модулю памяти, при этом хост-контроллер отправляет запросы на считывание и запись по шине в модуль памяти для сохранения данных в чипах памяти модуля памяти, а сигнал запроса имеет длительность импульса больше или равную минимальной длительности импульса, где минимальная длительность импульса содержит ряд тактовых циклов, необходимых для гарантии того, что хост-контроллер памяти обнаруживает сигнал запроса, и где длительность импульса сигнала запроса показывает по меньшей мере одну функцию в дополнение к сигналу запроса в хост-контроллере памяти. 4 н. и 21 з.п. ф-лы, 23 ил.

Реферат

Область техники, к которой относится изобретение

Варианты осуществления, описанные здесь, в общем, относятся к системам памяти, в которой хост-контроллер памяти поддерживает связь по единственному каналу или шине с помощью многочисленных модулей памяти, которые имеют расположение выводов, совместимое со слотами, соединенными с каналом и хост-контроллером памяти. Хост-контроллер памяти поддерживает протокол, используемый многочисленными модулями памяти, соединенными с каналом, таким как протокол удвоенной скорости передачи данных третьего поколения (DDR3). Если модули памяти, такие как модули памяти с двухрядным расположением выводов (DIMM), имеют различное таймирование для вывода данных по шине, например в случае с различными типами DIMM, то хост-контроллер памяти должен регулировать эти различия при таймировании среди различных соединенных DIMM. Хост-контроллер памяти может передавать одноактные команды.

Перед использованием шины хост-контроллер памяти должен конфигурировать модули памяти для операций. В протоколе DDR3 хост-контроллер памяти можно использовать команду установки регистра режима работы (MRS) для программирования вплоть до восьми регистров режима работы в микросхемах памяти, таких как микросхемы динамической памяти произвольного доступа (DRAM), по отношению к одному корпусу модуля памяти. Команда MRS идентифицирует регистр режима работы в микросхеме памяти и включает в себя разряд инверсии, показывающий, инвертированы ли данные. После того, как шина обучена, хост-контроллер памяти может затем использовать шину для считывания и записи команд и передачи данных.

Команды могут отправлять один разряд в канале в команде. Во время нормального режима таймирования, например, таймирования IN, сигнал выбора чипа размещается на шине в течение цикла команды, чтобы побудить выбранный модуль памяти получать команду. Во время высокоскоростных операций, например, во время таймирования 2N, хост-контроллер памяти размещает сигнал выбора чипа на шине - один тактовый цикл перед командой, чтобы обеспечить дополнительное время установки.

Сигнал разрешения подачи тактовых импульсов, можно использовать для управления внутренними тактовыми сигналами в модуле памяти. Сигнал высокого уровня, разрешающий подачу тактовых импульсов (СКЕ), активирует внутренние тактовые сигналы и поддерживает права доступа на считывание и запись во время действия сигнала высокого уровня. Сигнал СКЕ низкого уровня в модуле памяти деактивирует внутренние тактовые сигналы, буферы на входе устройства и выходные драйверы. При получении сигналов СКЕ низкого уровня отключается электропитание и обновляются операции.

При передаче записей из хост-контроллера памяти в модуль памяти, записи в модуле памяти можно непосредственно записывать в микросхемы памяти. Однако в модулях памяти, имеющих буфер записи, можно реализовать систему кредита в тех случаях, когда хост-контроллер памяти выделяет максимальное количество кредитов записи и не может отправить команду записи, если отсутствуют доступные кредиты записи. Кредиты записи уменьшаются после отправки команды записи. Модуль памяти будет отправлять сообщение по шине после того, как каждая запись завершит возвращение кредита в хост-контроллер памяти, который увеличивает значение счетчика кредита записи после получения сообщения.

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

Подробное описание изобретения

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

Фиг. 1 иллюстрирует вариант осуществления системы, имеющей систему памяти.

Фиг. 2 иллюстрирует вариант осуществления модуля памяти.

Фиг. 3 иллюстрирует вариант осуществления схемы разводки выводов системы памяти.

Фиг. 4 - вариант осуществления операций для выработки и обработки сигнала запроса, используемого для кодирования функции.

Фиг. 5 - иллюстрирует вариант осуществления операций для определения регулировки таймирования для выходного сигнала в модуле памяти.

Фиг. 6 иллюстрирует вариант осуществления команды установки регистра режима работы (MRS).

Фиг. 7 иллюстрирует вариант осуществления операций для выработки и обработки команды MRS.

Фиг. 8 и 9 предоставляют временные диаграммы для вывода команды в виде двух частей.

Фиг. 10 и 11 иллюстрируют варианты осуществления операций для выработки и приема команды, отправленной в многочисленных тактовых циклах.

Фиг. 12 иллюстрирует вариант осуществления операций для указания поддерживаемой конфигурации интерфейса в контроллере модуля памяти.

Фиг. 13 иллюстрирует вариант осуществления операций для контроллера модуля памяти для использования разрядов адреса, основанных на поддерживаемой конфигурации интерфейса.

Фиг. 14 иллюстрирует вариант осуществления операций для использования команд для указания операций управления электропитанием.

Фиг. 15 иллюстрирует вариант осуществления операций для использования кредитов записи для отправки команд записи и возврата кредитов записи в хост-контроллер памяти.

Фиг. 16 иллюстрирует вариант осуществления операций для выработки пакета данных считывания со счетчиком кредита записи.

Фиг. 17 иллюстрирует вариант осуществления операций для обработки пакета данных считывания.

Фиг. 18 иллюстрирует вариант осуществления операций для обработки потока ошибочных операций с использованием сигнала ошибки.

Фиг. 19 иллюстрирует вариант осуществления операций для обработки ошибки записи.

Фиг. 20 иллюстрирует вариант осуществления операций для скремблирования и дескремблирования данных, переданных по шине.

Фиг. 21 иллюстрирует вариант осуществления операций для дескремблирования данных записи в модуле памяти.

Фиг. 22 иллюстрирует вариант осуществления операций для установки параметра, показывающей конфигурацию интерфейса шины.

Фиг. 23 иллюстрирует вариант осуществления операции для выбора конфигурации интерфейса шины для обработки запроса передачи.

Описание вариантов осуществления

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

Ссылки в описании на "один вариант осуществления", "вариант осуществления", "примерный вариант осуществления" и т.д. показывают, что вариант описанный осуществления может включать в себя конкретный признак, структуру или характеристику, но каждый вариант осуществления не обязательно должен включать в себя конкретный признак, структуру или характеристику. Более того, такие фразы не обязательно относятся к одному и тому же варианту осуществления.

В нижеследующем описании и формуле изобретения могут быть использованы термины "соединенный" и "связанный" вместе с их производными. Следует понимать, что эти термины не предназначены для использования в качестве синонимов друг для друга. Термин "соединенный" используется для обозначения того, что два или более элементов, которые могут или не могут находиться в непосредственном физическом или электрическом контакте друг с другом, действуют совместно или взаимодействуют друг с другом. Термин "связанный" используется, чтобы обозначения установления связи между двумя или более элементами, которые соединены друг с другом. Некоторые варианты осуществления относятся к электронным блокам устройств памяти. Варианты осуществления включают как устройства, так и способы для формирования электронных схем.

Фиг. 1 иллюстрирует вариант осуществления вычислительной системы 2, включающей в себя один или более процессоров 4, хост-контроллер 6 памяти и многочисленные модули 8а, 8b памяти, которые, как правило, устанавливаются на материнской плате. Процессоры 4 могут содержать центральное процессорное устройство, многоядерный процессор. Хост-контроллер 6 памяти, в ответ на запросы доступа к памяти от процессоров 4, устанавливает связь с многочисленными модулями 8а, 8b памяти по шине 10, которая также упоминается как канал, интерфейс шины и т.д., где оба модуля 8а, 8b памяти отдельно и независимо подсоединены к одной и той же шине 10. Хост-контроллер6 памяти может включать в себя счетчик 7 запросов, который увеличивает свое значение после приема сигнала запроса для гранта, чтобы использовать после последней выдачи грантов на основании на числа запросов, указанных в счетчике 7 запросов, счетчик 9 кредита записи, показывающий число или кредиты, разрешающие запросы записи, которые будут отправляться в один из модулей 8а, 8b памяти, и начальное значение 11 скремблирования, которое используется для дескремблирования запрошенных данных, считанных из одного из модулей 8а, 8b памяти.

В варианте осуществления, показанном на фиг. 1, модули 8а, 8b памяти установлены в слотах или гнездах памяти на материнской плате системы 2. Модули 8а, 8b памяти могут содержать одинаковые или различные типы модулей памяти, имеющих расположение выводов, совместимое с расположением выводов в слотах памяти на материнской плате. Кроме того, модули памяти могут поддерживать одинаковые или различные протоколы памяти, такие как протокол удвоенной скорости передачи данных четвертого поколения (DDR4), и дополнительные протоколы. Хотя показано только два модуля 8а, 8b памяти, можно предусмотреть многочисленные модули памяти.

Каждый из модулей 8а, 8b памяти включает в себя чипы 12а, 14а, 16а, 18а и 12b, 14b, 16b, 18b памяти, соответственно, на одной или обеих сторонах модуля памяти, для хранения данных. Чипы памяти, например, чипы DRAM, расположенные на одной или обеих сторонах корпуса модуля 8а, 8b памяти, содержат элементы хранения, которые хранят данные, используемые процессором 4.

Каждый модуль 8а, 8b памяти может включать в себя контроллер 20а, 20b модуля памяти для координации управления памяти и операцией доступа с помощью хост-контроллер 6 памяти. Хост-контроллер 6 памяти включает в себя логическую схему для управления операциями считывания и записи и операциями управления памятью по отношению к модулям 8а, 8b памяти, которые подсоединены к шине 10, и взаимодействуют с процессором 4 в модулях 8а, 8b памяти. Хост-контроллер 6 памяти можно выполнить как единое целое с процессором 4 или реализовать в виде логической схемы, отдельной от процессора 4 на материнской плате системы 2.

Материнская плата системы 2 может включать в себя гнездо памяти, совместимое с различными типами чипов памяти, обеспечивая различные типы модулей 8а, 8b памяти, поддерживающих различные типы устройств памяти, поддерживающих различные протоколы памяти до тех пор, пока различные типы модулей 8а, 8b памяти не будут совместимы с архитектурой выводов в гнездах памяти.

В одном варианте осуществления модули 8а, 8b памяти могут содержать один и тот же или другой тип динамических запоминающих устройств с произвольной выборкой (DRAM). В одном варианте осуществления модули 8а, 8b памяти могут содержать модули памяти с двухрядным расположением выводов (DIMM), такие как небуферные DIMM (UDIMM), модуль памяти с двухрядным расположением выводов с пониженной нагрузкой (LRDIMM), малогабаритный модуль памяти с двухрядным расположением выводов (SODIMM) и т.д. Модули 8а, 8b памяти можно реализовать в виде различных типов памяти, включающих в себя, но не ограниченных этим, NAND (флэш) память, ферроэлектрическое оперативное запоминающее устройство (FeTRAM), энергонезависимую память на основе нанопроволок, трехмерную (3D) память на основе точек пересечения, такую как память на фазовых переходах (РСМ), память, включающую в себя технологию мемристора, магниторезистивную память с произвольным доступом (MRAM), перенос спинового момента (STT)-MRAM и т.д.

В некоторых вариантах осуществления, так как различные типы модулей 8а, 8b памяти можно установить и подсоединить к шине 10, модули 8а, 8b памяти могут поддерживать различные протоколы. Например, модуль 8а памяти может содержать тип DIMM, соответствующий протоколу удвоенной скорости передачи данных четвертого поколения (DDR4) для статической DRAM (SDRAM), и модуль 8b памяти может использовать другой протокол, но несовместимый на одной и той же шине 10 с модулем 8а памяти, использующим протокол DDR4. Альтернативные и различные протоколы могут быть также использованы и реализованы в модулях 8а, 8b памяти.

Если модули 8а, 8b памяти поддерживают различные протоколы DRAM, то хост-контроллер 6 памяти выполнен с возможностью поддержания связи с использованием различных протоколов по шине 10, первого протокола, специфического для модуля 8а памяти, например, DDR4, и второго протокола памяти, специфического для модуля 8b памяти. Запросы на считывание и управление для модуля 8а памяти осуществляются с помощью первого протокола памяти и для второго модуля 8b памяти с использованием второго протокола памяти.

На фиг. 2 показаны дополнительные подробности варианта осуществления модуля 8 памяти, такого как модули 8а, 8b памяти, который включает в себя контроллер 20 модуля памяти, выполняющий операции модуля памяти и инструкции с помощью хост-контроллера 6 памяти. В некоторых реализациях, один из модулей памяти, например, 8b, может включать в себя модуль памяти, показанный на фиг. 2, и другой модуль памяти, например, 8а, может не включить в себя контроллер 20 модуля памяти, такой как модуль 8а памяти, соответствующий стандарту DDR4. В таких вариантах осуществления модуль 8а памяти может включать в себя регистр, такой как в случае RDIMM, или буфер, такой как в случае LRDIMM.

Модуль 8 памяти может включать в себя регистры 22 режима работы в контроллере модуля памяти, имеющем данные, которые можно сконфигурировать, используя команду установки регистра режима (MRS), буфер 24 считывания для буферизации данных считывания, возвращенных в хост-контроллер 6 памяти в ответ на команду считывания, регистр 26 операций управления электропитанием, показывающий операции управления электропитанием, которые будут выполняться, буфер 28 записи для буферизации данных записи перед записью в чипы 12, 14, 16, 18 памяти, счетчик 30 кредитов записи, показывающий число кредитов записи, которые необходимо возвратить в хост-контроллер 6 памяти, начальное значение 32 скремблирования, которое используется для рандомизации данных считывания, передаваемых по шине 10 в хост-контроллер 6 памяти, и параметр 34 интерфейса, идентифицирующий поддерживаемую конфигурацию интерфейса шины 10. Буферы и параметры 24, 26, 28, 30, 32 и 34 можно реализовать в контроллере 20 модуля памяти, или в схеме, внешней к контроллеру 20 модуля памяти в модуле 8 памяти. Некоторые из параметров 26, 30, 32 и 34 можно реализовать в регистрах 22 режима.

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

Описанные варианты осуществления контроллера 20 модуля памяти и хост-контроллера 6 памяти могут кодировать в логической схеме аппаратных средств, например, в специализированной интегральной микросхеме (ASIC), программируемой логической матрице типа FPGA (FPGA) и т.д.

Элементы вариантов осуществления настоящего изобретения можно также выполнить в виде машиночитаемого носителя информации для хранения машиноисполняемых инструкций. Машиночитаемый носитель информации может включать в себя, но не ограничиваться этим, флэш-память, оптические диски, постоянное запоминающее устройство на основе компакт-дисков (CDROM), ROM на основе цифровых универсальных/видеодисков (DVD), оперативное запоминающее устройство (RAM), стираемая программируемая постоянная память (EPROM), электрически стираемая программируемая постоянная память (EEPROM), магнитные или оптические карты, среды распространения или другой тип машиночитаемых носителей информации, подходящих для хранения электронных инструкций. Например, варианты осуществления изобретения могут быть загружены в виде компьютерной программы, которая может передаваться из удаленного компьютера (например, сервера) в запрашивающий компьютер (например, клиент) посредством сетевой передачи.

Фиг. 3 иллюстрирует расположение выводов в модуле 8а, 8b памяти с помощью хост-контроллера 6 памяти, линии шины 10 и модулей 8а, 8b памяти, где такие обозначения выводов описаны ниже или известны в технике.

Функции кодирования в сигнале запроса

В некоторых вариантах осуществления контроллер 20 модуля памяти может отправить сигнал запроса, например, REQ# 50, в хост-контроллер 6 памяти, чтобы показать, что существуют данные в буфере 24 считывания для хост-контроллера 6 памяти для возврата в виде части команды считывания. Сигнал запроса может содержать сигнал 50 разрешения подачи тактовых импульсов (СКЕ) REQ#, показанный на схеме расположения выводов, показанной на фиг. 3. Контроллер 18 модуля памяти может передавать сигнал запроса с минимальной длительностью импульса, чтобы гарантировать обнаружение хост-контроллером 6 памяти, который в определенных реализациях может содержать два тактовых цикла. Контроллер 20 модуля памяти может дополнительно кодировать дополнительную функцию в сигнале запроса, которую должен выполнять хост-контроллер 6 памяти. Путем кодирования дополнительных функций в сигнале запроса многочисленные функции можно показать в виде одного сигнала для того, чтобы максимизировать число операций и информацию, передаваемую в одиночном сигнале.

Фиг. 4 иллюстрирует вариант осуществления операций, выполняемых хост-контроллером 6 памяти и контроллером 20 модуля памяти, чтобы использовать сигнал запроса для передачи дополнительных функций в хост-контроллер 6 памяти. После инициирования (на этапе 100) операции для выработки сигнала запроса, который может быть частью команды считывания для передачи данных из буфера 24 считывания обратно в хост-контроллер 6 памяти, контроллер 20 модуля памяти определяет (на этапе 102) функцию, которую будет включать в себя сигнал запроса, причем функцию может показывать дополнительные операции, которые должен выполнить хост-контроллер 6 памяти, такие как специфическое условие ошибки или прерывание или другие функции. Контроллер 20 модуля памяти затем определяет (на этапе 104) длительность импульса, которая используется для того, чтобы показать или закодировать определенную функцию. Например, длительность импульса, равная минимальной длительности импульса, которая должна гарантировать обнаружение с помощью хост-контроллера 6 памяти сигнал запроса, можно использовать для того, чтобы показать или закодировать первую функцию, дополнительные длительности импульса, которые больше, чем минимальная длительность импульса, можно использовать для того, чтобы показать дополнительные функции. Например, если минимальная длительность импульса, которая должна гарантировать обнаружение, равна двум тактовым импульсам, то эта минимальная длительность импульса для сигнала запроса может показывать одну функцию, и длительности импульсов 6, 10 и 14 могут показывать еще одни дополнительные различные функции. Длительность импульса 14 может показывать катастрофический отказ. Кроме того, различные длительности импульсов для сигнала запроса, связанного с различными функциями, можно разделить на минимальное число тактовых импульсов, таких как 3 тактовых импульса в некоторых вариантах осуществления, чтобы гарантировать правильное обнаружение длительности импульса с помощью хост-контроллера 6 памяти. Контроллер 20 модуля памяти вырабатывает (на этапе 106) сигнал запроса, имеющий определенную длительность импульса для отправки в хост-контроллер 6 памяти.

После обнаружения (на этапе 108) сигнала запроса REQ0# на выводе 50, имеющего минимальную или первую длительность импульса, например, 2 тактовых импульса, хост-контроллер 6 памяти увеличивает значение (на этапе 110) счетчика 7 запросов, показывающего число сигналов гранта, которые необходимо отправить в модуль 8b памяти, отправляющий сигнал запроса. После увеличения значения счетчика 7 запросов хост-контроллер 6 памяти может ожидать до тех пор, пока слот на шине 10, то есть, на шине данных, не станет доступным для выдачи многочисленных запросов гранта, чтобы запросы, показанные в счетчике 7 запросов, обрабатывались в пакете в различные случайные периоды времени. После приема сигнала гранта контроллер 20 модуля памяти отправляет (на этапе 112) данные в буфере 24 считывания в хост-контроллер 6 памяти, чтобы обеспечить сбор и буферизацию данных в ответ на запрос считывания из хост-контроллера 6 памяти.

После определения минимальной или первой длительности импульса сигнала 50 запроса, если сигнал 50 запроса (на этапе 114) не продолжаться дольше измеренной минимальной длительности импульса, то управление заканчивается. В противном случае, если (на этапе 116) измеренный сигнал запроса не превышает вторую длительность импульса, например, 6 тактовых импульсов, то хост-контроллер 6 памяти может исполнить (на этапе 118) вторую функцию, связанную со второй длительностью импульса. В противном случае, если (на этапе 120) сигнал 50 запроса не превышает измеренной третьей длительности импульса, например, 10 тактовых импульсов, то хост-контроллер 6 памяти может исполнить (на этапе 122) третью функцию, связанную с третьей длительностью импульса. Если длительность импульса остается прежней, и измерена (на этапе 124) четвертая длительность импульса, например, 14 тактовых импульсов, то хост-контроллер 6 памяти может исполнить (на этапе 126) для хост-контроллера 6 памяти обработку катастрофического отказа, которая должна быть выполнена.

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

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

С помощью описанного варианта осуществления, показанного на фиг. 4, различные функции можно закодировать в виде сигнала запроса с помощью контроллера 20 модуля памяти с использованием различных длительностей импульсов для контроллера модуля памяти, которые можно быть разделить на минимальное число тактовых импульсов, которое гарантируют обнаружение длительности импульса с помощью хост-контроллера 6 памяти. Таким образом, в единственном сигнале запроса контроллер 20 модуля памяти может сигнализировать о сигнале запроса, таком как запрос на возврат данных из буфера 24 считывания, и об одной из множества различных функций.

Регулировка таймирования сигнала на выходе первого модуля памяти на основании различий компонентов с помощью второго модуля памяти для согласования таймирования из второго модуля памяти

В некоторых реализациях, модули 8а и 8b памяти могут содержать различные типы модулей памяти, которые имеют различные компоненты. Например, модуль 8а памяти может или не может включать в себя регистры и буферы данных, не включенные в модуль 8b памяти, и наоборот, и модули 8а, 8b памяти могут поддерживать различные протоколы памяти. Описанные варианты осуществления обеспечивают технологии для одного модуля памяти, такого как 8b, для регулировки его таймирования, чтобы согласовать его с другим модулем памяти, например, 8а, таким образом, чтобы хост-контроллер 6 памяти нельзя было отрегулировать на различные таймирования из различных модулей памяти, таких как различные типы DIMM. При наличии контроллера 20а, 20b модуля памяти, который производит регулировки таймирования, предотвращаются чрезмерные циклы безостановочной работы и потеря производительности в хост-контроллере памяти.

Фиг. 5 иллюстрирует вариант осуществления операций, выполняемых контроллером 20 модуля памяти, таким как контроллер 20b модуля памяти, для регулировки таймирования выходного сигнала на основании различий компонентов с другими модулями 8а, 8b памяти на шине 10. После инициирования (на этапе 200) операция для вывода данных из буфера 24 данных, контроллер 20b модуля памяти определяет (на этапе 202) регулировку таймирования на основании по меньшей мере одного компонента в по меньшей мере одном из модулей 8а, 8b памяти на канале. Этапы 204-208 обеспечивают вариант осуществления операций определения регулировки таймирования. Контроллер 20b модуля памяти может ускорить (на этапе 204) таймирование в ответ на первый модуль 8b памяти, имеющий по меньшей мере один компонент, приводящий в действие таймирование выходного сигнала, который не включен в другой второй модуль 8а памяти. Кроме того, можно добавить (на этапе 206) задержку в таймирование в ответ на другой второй модуль 8а памяти на шине 10, имеющей по меньшей мере один компонент, приводящий в действие таймирование выходного сигнала второго модуля 8b памяти, который не включен в первый модуль 8b памяти.

Контроллер 20b модуля памяти может затем определить (на этапе 208) регулировку чистого таймирования с любой добавленной задержкой или ускорением таймирования. Контроллер 20b модуля памяти регулирует (на этапе 210) таймирование выходного сигнала, поступающего из буфера 24 данных в хост-контроллер 6 памяти, на основании определенной регулировки таймирования для согласования таймирования выходного сигнала во втором модуле 8а памяти.

Например, если модуль 8b памяти, включающий в себя контроллер 8b, выполняющий вычисления, включает в себя буфер 24 данных, необнаруженный в другом модуле 8а памяти, то регулировка таймирования может содержать ускорение таймирования выходного сигнала, когда другой второй модуль 8а памяти не включает в себя буфер данных, такой как включенный в первый модуль 8b памяти. В другой реализации, если другой модуль 8а памяти имеет регистр, не включенный в модуль 8b памяти, выполняющий вычисления, например, в случае RDIMM, то регулировка таймирования содержит задержку таймирования выходного сигнала, предназначенного для регистра в другом модуле 8а памяти, не включенном в модуль 8b памяти, который производит вычисления. Если бы ускорение таймирования для буфера 24 данных было бы больше, чем задержка, добавленная для регистра в другом модуле 8а памяти, то регулировка чистого таймирования содержала бы ускорение таймирования. Аналогично, если бы добавленная задержка была бы больше, чем ускорение, то чистая регулировка содержала бы добавление задержки к таймированию. Если модуль 8b памяти, производящий вычисления, не включает в себя регистры или буферы 24 данных, включенные в другой модуль памяти, например, если другой модуль 8а памяти представляет собой RDIMM и LRDIMM, то контроллер 20b модуля памяти может задержать таймирование с учетом задержек, вызванных дополнительными компонентами в другом модуле 8а памяти.

Модули 8а, 8b памяти могут иметь различные типы компонентов по своей команде, адрес и шины управления в шине 10, если они содержат различные типы DIMM, такие как UDIMM, RDIMM и LRDIMM.

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

Хотя операции, описаны по отношению к одному модулю памяти, выполняющему регулировки таймирования, один или несколько модулей 8а, 8b памяти на шине 10 могут выполнять регулировки таймирования, показанные на фиг. 5.

С помощью описанных регулировок таймирования контроллер 20b модуля памяти может регулировать таймирование на своем выходе, например, на выходе буфера 24 данных, чтобы согласовать сигнал таймирования, подаваемый из другого модуля 8а памяти с аналогичными типами выходных сигналов с тем, чтобы хост-контроллеру 6 памяти не нужно было выполнять какие-либо регулировки таймирования, чтобы приспособиться к различным конфигурациям различных модулей 8а, 8b памяти на шине 10.

Использование кодирования регистров в команде установки регистра режима работы (MRS)

Контроллер 20 модуля памяти может включать в себя регистры 22 режима работы. В некоторых вариантах осуществления контроллер 20b модуля памяти может реализовать первый протокол, который отличается от второго протокола памяти, используемого в другом контроллере 8а, таком как DDR 4. Однако контроллер 20b модуля памяти может поддержать некоторые команды из второго протокола другого модуля 8а памяти, такого как DDR4, например, команду установки регистра режима работы (MRS), и еще использовать команду для различных целей, которая отличается от той, которая используется контроллером 20а модуля памяти, реализующим первый протокол памяти.

Фиг. 6 иллюстрирует вариант осуществления команды 250 MRS, которая может или не может включать в себя поля MRS из другого протокола памяти, такого как DDR4. Команда 250 точно определяет код 252 операции, показывающий операцию MRS. Регистры А0-А13 адреса можно использовать для предоставления данных для одного из регистров 22 режима работы в контроллере 20 модуля памяти, и разряды 254 регистра показывают регистр 22 режима работы, в который необходимо записать данные с адресами А0-А13. Например, если имеется 16 регистров 22 режима работы, то четыре разряда 254 регистров, такие как BA0, ВА1, BG0, BG1, могут показывать один из 16 регистров 22 режима работы в контроллере 20 модуля памяти для дальнейшего использования.

В одном варианте осуществления команда 250 MRS может содержать однотактную команду, которую можно использовать для обеспечения параметров конфигурации в модуле 8 памяти перед подготовкой шины 10 к операциям, производимым на шине, таким как операции считывания и записи, которые могут содержать двухтактные команды. Таким образом, команда 250 MRS использует адресные входные сигналы А0-А17, показанные на схеме разводки выводов (фиг. 3) в виде линии 52, и командные входные сигналы BG1:0 и ВА1:0, которые показаны в виде линий 54 и 56, соответственно, на схеме разводки выводов (фиг. 3). В некоторых вариантах осуществления адресные входные сигналы А14-16 содержат код операции команды MRS.

Фиг. 7 иллюстрирует вариант осуществления операций, выполняемых хост-контроллером 6 памяти и контроллером 20 модуля памяти для программирования регистров 22 режима работы в контроллере 20 модуля памяти. Во время инициализации, например, перед подготовкой шины 10 к считыванию и операциям, которые могут содержать команды, отправленные в двух тактовых импульсах, хост-контроллер 6 памяти может выработать (на этапе 280) и отправлять команду 250 MRS, чтобы показать регистр 22 режима работы в контроллере 20 модуля памяти для конфигурирования с данными, включенными в поля А13:0 адреса, которые может отправить команда 250 MRS в одном тактовом цикле.

Контроллер 20 модуля памяти принимает (на этапе 282) команду 250 MRS и определяет (на этапе 284) регистр 22 режима работы, показанный в разрядах 254 регистра на линиях 34 и 35 (фиг. 3). Контроллер 20 модуля памяти затем считывает (на этапе 286) данные, представленные в разрядах А0:А13 адреса в определенном регистре 22 режима работы.

Хост-контроллер 6 памяти может дополнительно использовать команду 250 MRS согласно протоколу DDR4, которая отправляется в модуль памяти, например, модуль 8а памяти, реализующий протокол DDR4, для программирования один из восьми регистров режима работы на одном из чипов 12а, 14а, 16а, 18а памяти, где разряды ВА0, ВА1, BG0 регистра идентифицируют регистр режима работы в чипе памяти, и разряд BG1 показывает, инвертированы ли разряды. Таким образом, хост-контроллер 6 памяти может использовать тот же самый формат команды MRS для контроллеров 20а, 20b памяти, реализующих различные протоколы памяти для того, чтобы вызвать различные операции согласно различным протоколам. Например, когда команда 250 MRS используется для модуля 8а памяти, поддерживающего DDR4, команда 250 MRS записывает данные в регистр режима работы в одном из чипов 12а, 14а, 16а, 18а памяти. После использования для модуля памяти 8b регистров 22 режима работы в контроллере 20 модуля памяти, команда 250 MRS записывает данные в регистры 22 режима работы в контроллере 20 модуля памяти, а не в чипы 12, 14, 16, 18 DRAM. Таким образом, хост-контроллер 6 памяти может использовать тот же самый формат команды MRS с модулями памяти, поддерживающими различные протоколы памяти, например, DDR4 и некоторый другой протокол.

Прием модулем памяти второй половины команды в случае, когда сигнал выбора чипа принимается только для первой половины команды

Описанные варианты осуществления обеспечивают технологии для модуля памяти для приема команды в многочисленных частях, например, в двух половинах, при наличии только приема одного сигнала выбора чипа для модуля 8 памяти таким образом, чтобы модуль 8 памяти автоматически принимал вторую половину команды в интервале задержки с момента, когда была отправлена первая половина команды. Дополнительные варианты осуществления обеспечивают технологии для слияния задержки для того, чтобы автоматически принимать вторую половину команды в высокоскоростном режиме таймирования, например, таймирования 2N, когда модуль 8а, 8b памяти работает на более высоких скоростях в отличие от режима регулярного таймирования, например таймирования 1N.

В некоторых вариантах осуществления команды занимают два разряда в канале и отправляются с тактовыми импульсами, следующими друг за другом. Это позволяет отправить весь адрес в одной команде вместо двух, например, отправить информации о строках и столбцах в одной команде. Контроллер 20 модуля памяти выполнен с возможностью узнавать о высокоскоростном режиме таймирования (2N) через хост-контроллер 6 памяти, который программирует регистры 22 режима работы в контроллере 20 модуля памяти.

На фиг. 8 представлен вариант осуществления временной диаграммы для режима регулярного таймирования, например таймирования 1N, для команд, таких как команды считывания, которые отправляются в двух частях, показанных как CMD0a, CMD0b, CMD1a, CMD1b, CMD2a, CMD2b. Хост-контроллер 6 памяти может поместить первую половину команды CMD0a и сигнала S0# 302 выбора чипа, также показанного в виде линии 58 S0# на фиг. 3, на шине на тактовом цикле 300 для первого мод