ИСПРАВЛЕНИЕ ОШИБОК ЛИНИИ СВЯЗИ В СИСТЕМЕ ПАМЯТИ
CORRECTION OF COMMUNICATION LINE ERRORS IN A MEMORY SYSTEM

Перекрестная ссылка на родственные заявки
[0001] Настоящая заявка на патент испрашивает приоритет согласно предварительной заявке на патент США № 62/380,104, озаглавленной "ИСПРАВЛЕНИЕ ОШИБОК ЛИНИИ СВЯЗИ В СИСТЕМЕ ПАМЯТИ" ("LINK ERROR CORRECTION IN MEMORY SYSTEM"), поданной 26 августа 2016 года, назначенной на представителя настоящей заявки и полностью включенной в настоящую заявку посредством ссылки.
Область техники, к которой относится раскрытие
[0002] Один или более аспектов настоящего раскрытия в целом относятся к системам памяти и, в частности, к исправлению ошибок в системах памяти.
Уровень техники
[0003] При передачах данных между главным устройством и запоминающими устройствами могут иметься ошибки. Эти ошибки линии связи могут быть обнаружены и часто исправлены посредством встраивания в передачи данных кодов исправления ошибок (ECC). Для реализации ECC традиционно использовались две методики. В первой традиционной методике, чтобы разместить и данные, и код ECC, увеличивается ширина ввода/вывода (I/O). Во второй традиционной методике биты ECC передаются между главным устройством и запоминающим устройством посредством увеличения длины пакета данных.
[0004] В первой традиционной методике традиционный сервер и вычислительные системы, как правило, используют модуль памяти с 72-битной шириной ввода/вывода (64-битные данные и соответствующий 8-битный ECC), чтобы увеличить надежность линии связи памяти и массива элементов памяти. Фиг. 1 иллюстрирует упрощенную схему традиционной подсистемы 100 памяти, которая включает в себя главную систему 110 на кристалле (SOC) с массивом 140 элементов памяти. Главная система 110 SOC включает в себя контроллер 120 памяти с кодером/декодером 125 EEC и блок 130 PHY. Массив 140 элементов памяти включает в себя девять 8-битных запоминающих устройств 150. 8-битный код ECC может быть присвоен каждым 64-битным данным для защиты от ошибки любого бита и в главной системе 110 SOC, и в массиве 140 элементов памяти. Данные могут быть записаны в первые восемь запоминающих устройств 150, и код ECC может быть записан в девятое запоминающее устройство 150.
[0005] Как можно заметить, традиционная конфигурация памяти несет расходы на дополнительное запоминающее устройство. Это также приводит к увеличению стоимости площади печатной платы (PCB), требуя маршрутизации более широкого канала памяти и увеличения расходов электропитания в режиме ожидания и активном режиме из-за дополнительного девятого запоминающего устройства 150. Дополнительная конфигурация памяти непосредственно влияет на производительность. Ширина полосы памяти соответствует тому, сколько корректных битов передается на данное количество времени. Однако дополнительные биты ECC при увеличении надежности сами по себе не имеют значения как данных. Таким образом, первая традиционная методика непосредственно влияет на производительность подсистемы памяти в том, что вся ширина ввода/вывода не используется для передачи полезных данных.
[0006] Фиг. 2 иллюстрирует упрощенную схему традиционной подсистемы 100 памяти, но на этот раз для простоты показывающую только один байт данных (DQ). Запоминающее устройство 150 включает в себя блок 260 ввода/вывода (I/O) и множество банков 270 памяти. Как можно заметить, сигнальные линии, совместно называемые линией 290 связи, используются для обмена данными между главной системой 110 SOC и запоминающим устройством 150. Линия 290 связи включает в себя:
- линии данных (DQ[0:7]): двунаправленная байтовая шина DQ для передачи данных между запоминающими устройствами и SOC;
- линию маски данных (DM): маска данных для данных записи;
- линию синхронизации данных (Data CK): входной сигнал синхронизации для стробирования данных записи;
- линию синхронизации строба чтения (Read Strobe CK): выходной сигнал синхронизации, который должен быть выровнен с таймингом данных чтения (входным сигналом синхронизации для SOC);
- линии команд и адресов (CA[0:n]): команда и адрес;
- линию синхронизации команд и адресов (CA CK): входной сигнал синхронизации команд и адресов для извлечения команд и адресов.
[0007] Следует отметить, что линия DM может представлять собой функцию вывода инверсии и маски данных (DMI) - либо инверсия данных, либо маска данных. Функция вывода DMI зависит от настроечного параметра регистра режима. Однако на фиг. 2 для простоты она показана как линия DM.
[0008] Фиг. 3А иллюстрирует временную диаграмму традиционной операции записи с маскированием. Контроллер 120 памяти выдает команду ЗАПИСЬ запоминающему устройству 150. После некоторой задержки один байт (8 битов) данных передается по каждому из шестнадцати пакетных циклов от главной системы 110 SOC к запоминающему устройству 150. Другими словами, передаются 128-битные данные записи (8 битов DQ x длина пакета импульсов 16). На фиг. 3А каждый бит D0-DF представляет 8 битов (один байт) данных записи DQ[0:7], передаваемый в одном пакетном цикле. Данные записи передаются с некоторыми действиями маскирования данных (DM). В этом примере 16-битная маска DM используется для маскирования каждого байта DQ. Традиционно линия синхронизации строба чтения является бездействующей, поскольку это операция записи.
[0009] Фиг. 3B иллюстрирует временную диаграмму традиционной операции чтения. Контроллер 120 памяти 120 выдает команду ЧТЕНИЕ запоминающему устройству 150. После некоторой задержки запоминающее устройство 150 отвечает посредством отправки 128-битных данных чтения (8 битов DQ x длина пакета импульсов 16) главной системе 110 SOC. Снова каждый из битов D0-DF представляет байт данных чтения DQ[0:7], передаваемый в одном пакетном цикле. Синхронизация строба чтения от запоминающего устройства 150 переключается с данными чтения как входным сигналом синхронизации для главной системы 110 SOC. Линия DM является бездействующей, поскольку это операция чтения.
[0010] Во второй традиционной методике длины пакета импульсов увеличиваются для передачи кодов ECC. Например, длина пакета импульсов может быть увеличена от 16 до 18 (длина 16 -> длина 18), и биты ECC могут передаваться между главной системой 110 SOC и запоминающим устройством 150 в пакетных циклах, не используемых для передачи битов DQ. Эта традиционная методика с увеличением длины пакета данных также непосредственно влияет на производительность в том, что не каждый цикл используется для передачи полезных данных.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0011] Этот раздел сущности изобретения идентифицирует признаки некоторых иллюстративных аспектов и не является исключительным или исчерпывающим описанием раскрытого объекта изобретения. Тот факт, что признаки или аспекты включены в этот раздел или опущены из него, не предусматривает указания относительной важности таких признаков. Описаны дополнительные признаки и аспекты, и они станут очевидны для специалистов в области техники после прочтения последующего подробного описания и рассмотрения чертежей, которые являются его частью.
[0012] Раскрыто иллюстративное запоминающее устройство. Запоминающее устройство может содержать банк памяти, интерфейс стороны запоминающего устройства, кодер стороны запоминающего устройства и декодер стороны запоминающего устройства. Интерфейс стороны запоминающего устройства может быть выполнен с возможностью принимать команду ЗАПИСЬ от главного устройства по линии связи, принимать данные записи и код защиты записи от главного устройства по линии связи и сохранять данные записи в банк памяти в ответ на команду ЗАПИСЬ. Интерфейс стороны запоминающего устройства может также быть выполнен с возможностью принимать команду ЧТЕНИЕ от главного устройства по линии связи, извлекать данные чтения из банка памяти в ответ на команду ЧТЕНИЕ и отправлять данные чтения и код защиты чтения главному устройству по линии связи. Декодер стороны запоминающего устройства может быть выполнен с возможностью обнаруживать, имеют ли данные записи ошибку, на основе кода защиты записи, и кодер стороны запоминающего устройства может быть выполнен с возможностью формировать код защиты чтения на основе данных чтения, извлеченных из банка памяти. Линия связи может содержать множество линий данных, линию маски данных и линию синхронизации строба чтения. Линия маски данных может использоваться при операциях записи с маскированием, и линия синхронизации строба чтения может использоваться запоминающим устройством, чтобы обеспечить тайминг при операциях чтения. Интерфейс стороны запоминающего устройства также может быть выполнен с возможностью принимать данные записи и отправлять данные чтения по множеству линий данных, принимать код защиты записи по линии синхронизации строба чтения и отправлять код защиты чтения по линии маски данных.
[0013] Раскрыто иллюстративное главное устройство. Главное устройство может содержать контроллер памяти, интерфейс стороны главного устройства, кодер стороны главного устройства и декодер стороны главного устройства. Контроллер памяти может быть выполнен с возможностью выдавать команды ЧТЕНИЕ и ЗАПИСЬ. Интерфейс стороны главного устройства может быть выполнен с возможностью отправлять команду ЗАПИСЬ от контроллера памяти запоминающему устройству по линии связи и отправлять данные записи и код защиты записи запоминающему устройству по линии связи. Интерфейс стороны главного устройства также может быть выполнен с возможностью отправлять команду ЧТЕНИЕ от контроллера памяти запоминающему устройству по линии связи, принимать данные чтения и код защиты чтения от запоминающего устройства по линии связи после отправки команды ЧТЕНИЕ и обеспечивать данные чтения контроллеру памяти. Кодер стороны главного устройства может быть выполнен с возможностью формировать код защиты записи на основе данных записи, и декодер стороны главного устройства может быть выполнен с возможностью обнаруживать, имеют ли данные чтения ошибку, на основе кода защиты чтения. Линия связи может содержать множество линий данных, линию маски данных и линию синхронизации строба чтения. Линия маски данных может использоваться при операциях записи с маскированием, и линия синхронизации строба чтения, используемая запоминающим устройством, чтобы обеспечить тайминг при операциях чтения. Интерфейс стороны главного устройства также может быть выполнен с возможностью отправлять данные записи и принимать данные чтения по множеству линий данных, отправлять код защиты записи по линии синхронизации строба чтения и принимать код защиты чтения по линии маски данных.
[0014] Раскрыт иллюстративный способ. Способ может содержать отправку посредством главного устройства команды ЗАПИСЬ запоминающему устройству по линии связи, формирование посредством главного устройства кода защиты записи на основе данных записи и отправку посредством главного устройства данных записи и кода защиты записи запоминающему устройству по линии связи. Способ может также содержать обнаружение посредством запоминающего устройства, имеют ли данные записи ошибку, на основе кода защиты записи и сохранение посредством запоминающего устройства данных записи в банк памяти запоминающего устройства в ответ на команду ЗАПИСЬ. Линия связи может содержать множество линий данных, линию маски данных и линию синхронизации строба чтения. Линия маски данных может использоваться при операциях записи с маскированием, и линия синхронизации строба чтения используется запоминающим устройством, чтобы обеспечить тайминг при операциях чтения. Главное устройство может отправлять данные записи запоминающему устройству по множеству линий данных и может отправлять код защиты записи запоминающему устройству по линии синхронизации строба чтения.
[0015] Раскрыт другой иллюстративный способ. Способ может содержать отправку посредством главного устройства команды ЧТЕНИЕ запоминающему устройству по линии связи, извлечение посредством запоминающего устройства данных чтения из банка памяти запоминающего устройства в ответ на команду ЧТЕНИЕ, формирование посредством запоминающего устройства кода защиты чтения на основе данных чтения и отправку посредством запоминающего устройства данных чтения и кода защиты чтения главному устройству по линии связи. Способ также может содержать обнаружение посредством главного устройства, имеют ли данные чтения ошибку, на основе кода защиты чтения. Линия связи может содержать множество линий данных, линию маски данных и линию синхронизации строба чтения. Линия маски данных может использоваться при операциях записи с маскированием, и линия синхронизации строба чтения, используемая запоминающим устройством, чтобы обеспечить тайминг при операциях чтения. Запоминающее устройство может отправлять данные чтения главному устройству по множеству линий данных и может отправлять код защиты чтения главному устройству по линии маски данных.
[0016] Раскрыто иллюстративное устройство. Устройство может содержать главное устройство и запоминающее устройство, выполненные с возможностью взаимодействовать друг с другом по линии связи. Линия связи может содержать множество линий данных, линию маски данных и линию синхронизации строба чтения. Линия маски данных может использоваться при операциях записи с маскированием, и линия синхронизации строба чтения, используемая запоминающим устройством, чтобы обеспечить тайминг при операциях чтения. Запоминающее устройство может быть выполнено с возможностью принимать команду ЧТЕНИЕ от главного устройства по линии связи, извлекать данные чтения из банка памяти запоминающего устройства в ответ на команду ЧТЕНИЕ, формировать код защиты чтения на основе данных чтения, отправлять данные чтения главному устройству по множеству линий данных и отправлять код защиты чтения главному устройству по линии маски данных. Код защиты чтения может являться кодом с контролем по четности для защиты данных чтения. Главное устройство может быть выполнено с возможностью отправлять команду ЧТЕНИЕ запоминающему устройству по линии связи, принимать данные чтения от запоминающего устройства по множеству линий данных, принимать код защиты чтения от запоминающего устройства по линии маски данных и обнаруживать, имеют ли данные чтения ошибку, на основе кода защиты чтения.
[0017] Раскрыто иллюстративное устройство. Устройство может содержать главное устройство и запоминающее устройство, выполненные с возможностью взаимодействовать друг с другом по линии связи. Линия связи может содержать множество линий данных, линию маски данных и линию синхронизации строба чтения. Линия маски данных может использоваться при операциях записи с маскированием, и линия синхронизации строба чтения, используемая запоминающим устройством, чтобы обеспечить тайминг при операциях чтения. Главное устройство может быть выполнено с возможностью отправлять команду ЗАПИСЬ запоминающему устройству по линии связи, формировать код защиты записи на основе данных записи, отправлять данные записи запоминающему устройству по множеству линий данных и отправлять код защиты записи запоминающему устройству по линии синхронизации строба чтения. Код защиты записи может являться кодом с контролем по четности для защиты данных записи. Запоминающее устройство может быть выполнено с возможностью принимать команду ЗАПИСЬ от главного устройства по линии связи, принимать данные записи от главного устройства по множеству линий данных, принимать код защиты записи от главного устройства по линии синхронизации строба чтения и обнаруживать, имеют ли данные записи ошибку, на основе кода защиты записи.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0018] Прилагаемые чертежи представлены для помощи в описании примеров одного или более аспектов раскрытого изобретения и обеспечены только для иллюстрации примеров, а не ограничения.
[0019] Фиг. 1 иллюстрирует схему традиционной подсистемы памяти с дополнительным запоминающим устройством для обработки кодов исправления ошибок;
[0020] Фиг. 2 иллюстрирует схему традиционной подсистемы памяти с сигналами, передаваемыми между главным устройством и запоминающим устройством;
[0021] Фиг. 3А иллюстрирует временную диаграмму операции записи в традиционной подсистеме памяти;
[0022] Фиг. 3B иллюстрирует временную диаграмму операции чтения в традиционной подсистеме памяти;
[0023] Фиг. 4 иллюстрирует схему иллюстративной подсистемы памяти с сигналами, передаваемыми между главным устройством и запоминающим устройством;
[0024] Фиг. 5А иллюстрирует временную диаграмму операции записи в иллюстративной подсистеме памяти;
[0025] Фиг. 5B иллюстрирует временную диаграмму операции чтения в иллюстративной подсистеме памяти;
[0026] Фиг. 6А и 6B иллюстрируют примеры данных и соответствующих кодов защиты;
[0027] Фиг. 7 иллюстрирует блок-схему последовательности этапов иллюстративного способа для выполнения операции записи;
[0028] Фиг. 8 иллюстрирует блок-схему последовательности этапов иллюстративного способа для выполнения операции чтения; и
[0029] Фиг. 9 иллюстрирует примеры устройств со встроенной в них подсистемой памяти.
ПОДРОБНОЕ ОПИСАНИЕ
[0030] Аспекты объекта изобретения обеспечены в последующем описании и соответствующих чертежах, направленных на конкретные примеры раскрытого объекта изобретения. Дополнительные аспекты могут быть разработаны без отступления от объема раскрытого объекта изобретения. Кроме того, известные элементы не будут описываться подробно или будут опущены, чтобы не затруднять понимание значимых подробностей.
[0031] Слово "иллюстративный" используется здесь для обозначения "служащий примером, экземпляром или иллюстрацией". Любой вариант осуществления, описанный здесь как "иллюстративный", не должен обязательно рассматриваться как предпочтительный или имеющий преимущество по сравнению с другими вариантами осуществления. Аналогичным образом, термин "варианты осуществления" не требует, чтобы все варианты осуществления раскрытого объекта изобретения включали в себя обсуждаемый отличительный признак, преимущество или принцип работы.
[0032] Используемая здесь терминология предназначена только для описания конкретных примеров и не предназначена для ограничения. Подразумевается, что используемые здесь формы единственного числа включают в себя также формы множественного числа, если контекст ясно не указывает иначе. Далее будет подразумеваться, что термины "содержит", "содержащий", "включает в себя" и/или "включающий в себя" при использовании в этом документе определяют наличие изложенных отличительных признаков, чисел, процессов, операций, элементов и/или компонентов, но не препятствуют наличию или добавлению одного или более других отличительных признаков, чисел, процессов, операций, элементов, компонентов и/или их групп.
[0033] Кроме того, многие примеры описываются в терминах последовательностей действий, которые должны быть выполнены, например, посредством элементов вычислительного устройства. Будет понятно, что различные описанные здесь действия могут быть выполнены посредством специализированных схем (например, специализированных интегральных схем (ASIC)), посредством программных инструкций, исполняемых одним или более процессорами, или посредством их комбинации. Кроме того, эти описанные здесь последовательности действий могут рассматриваться как воплощенные полностью в пределах машиночитаемого носителя данных любого вида, хранящего соответствующий набор компьютерных инструкций, которые при их исполнении заставляют соответствующий процессор выполнять описанные здесь функции. Таким образом, различные аспекты изобретения могут быть воплощены во многих различных формах, и все из них рассматриваются как находящиеся в пределах объема заявленного объекта изобретения. Кроме того, для каждого из описанных здесь примеров соответствующая форма любых таких примеров может быть описана здесь, например, как "логическая схема, выполненная с возможностью" выполнять описанное действие.
[0034] Один или более аспектов раскрытия могут быть применены к подсистеме памяти малой мощности в мобильных или вычислительных системах для защиты высокоскоростных линий связи (интерфейсов) запоминающих устройств с помощью кодов обнаружения и/или исправления ошибок. Например, один или более аспектов могут относиться к интерфейсам DDR SPEC и DDR PHY малой мощностью следующего поколения в мобильных или вычислительных наборах микросхем.
[0035] В одном или более аспектах предложено встроить функциональные возможности кодирования и декодирования (например, функциональные возможности ECC) и в главное устройство, и в запоминающее устройство. Посредством встраивания таких функциональных возможностей в запоминающее устройство, а также в главное устройство, могут быть решены некоторые или все проблемы, связанные с традиционными методиками. Во-первых, предложенная методика не требует дополнительного запоминающего устройства. Это означает, что предотвращаются затраты на дополнительные устройства, что в свою очередь ведет к меньшей занимаемой площади кристалла и меньшей требуемой мощности. Таким образом, больше памяти может быть отведено для хранения полезных данных на той же площади кристалла. Во-вторых, не требуется увеличивать длину пакета импульсов, т.е., каждый пакетный цикл может использоваться для передачи данных. Это означает, что также предотвращаются потери производительности, связанные с тем, что некоторые пакетные циклы отводятся для передачи ECC. В-третьих, не требуются какие-либо изменения линии связи между главным устройством и запоминающим устройством.
[0036] Фиг. 4 иллюстрирует пример предложенной подсистемы 400 памяти, которая включает в себя главное устройство 410 и запоминающее устройство 450. Это упрощенная иллюстрация, в которой показано единственное запоминающее устройство 450 для одного байта данных (DQ). Однако единственное главное устройство 410 может взаимодействовать с любым количеством запоминающих устройств 450. Главное устройство 410 (например, система на кристалле (SOC)) может включать в себя контроллер 420 памяти, интерфейс 430 стороны главного устройства (например, блок PHY запоминающего устройства), кодер 432 стороны главного устройства и декодер 434 стороны главного устройства.
[0037] Контроллер 420 памяти может выдавать команды ЧТЕНИЕ (READ) и ЗАПИСЬ (WRITE) запоминающему устройству 450 через интерфейс 430 стороны главного устройства. Когда выдается команда ЗАПИСЬ, контроллер 420 памяти также может обеспечить данные записи интерфейсу 430 стороны главного устройства. Когда выдается команда ЧТЕНИЕ, контроллер 420 памяти может принять данные чтения от интерфейса 430 стороны главного устройства.
[0038] Во время операции записи интерфейс 430 стороны главного устройства может отправить команду ЗАПИСЬ и данные записи запоминающему устройству 450 по линии 490 связи. Кодер 432 стороны главного устройства (например, кодер ECC) может сформировать код защиты записи на основе данных записи, и интерфейс 430 стороны главного устройства также может отправить код защиты записи запоминающему устройству 450 по линии 490 связи. Кодом защиты записи может являться EEC и/или коды с контролем по четности других типов для защиты данных записи. То есть, код защиты записи может позволить запоминающему устройству 450 обнаруживать и даже исправлять ошибки, которые могут присутствовать в данных записи. Например, ошибка может возникнуть при передаче данных записи от главного устройства 410 запоминающему устройству 450.
[0039] В другом аспекте кодер 432 стороны главного устройства может сформировать код защиты записи на основе данных записи и данных маски данных (DM). Таким образом, код защиты записи может защитить биты маски данных (DM) в дополнение к защите данных записи. В этом аспекте, если операция записи не включает в себя маскирование, то код защиты записи может быть сформирован со всеми обнуленными битами DM.
[0040] Во время операции чтения интерфейс 430 стороны главного устройства может отправить команду ЧТЕНИЕ запоминающему устройству 450 по линии 490 связи. Затем интерфейс 430 стороны главного устройства может принять данные чтения от запоминающего устройства 450 по линии 490 связи и обеспечить принятые данные чтения контроллеру 420 памяти.
[0041] Интерфейс 430 стороны главного устройства также может принять код защиты чтения от запоминающего устройства 450 по линии 490 связи вместе с данными чтения. Кодом защиты чтения может являться ECC и/или коды с контролем по четности других типов, которые могут использоваться для защиты данных чтения. Декодер 434 стороны главного устройства может определить, являются ли корректными принятые данные чтения, на основе кода защиты чтения. Другими словами, декодер 434 стороны главного устройства может обнаружить, имеют ли данные чтения ошибку. Кроме того, декодер 434 стороны главного устройства может исправить данные чтения, когда обнаружена ошибка, и интерфейс 430 стороны главного устройства может обеспечить исправленные данные чтения контроллеру 420 памяти.
[0042] На фиг. 4 кодер 432 стороны главного устройства и декодер 434 стороны главного устройства проиллюстрированы как встроенные в интерфейс 430 стороны главного устройства. Это является лишь примером и не должно восприниматься как ограничение. Предполагается, что кодер 432 стороны главного устройства и/или декодер 434 стороны главного устройства могут являться самостоятельными или быть встроены в другие компоненты в главном устройстве 410, такие как контроллер 420 памяти. Кроме того, хотя кодер 432 стороны главного устройства и декодер 434 стороны главного устройства проиллюстрированы индивидуально, они могут быть реализованы в едином устройстве. Также предполагается, что кодер 432 стороны главного устройства и/или декодер 434 стороны главного устройства могут быть реализованы в нескольких устройствах. Действительно, в некотором аспекте (аспектах) реализация кодера 432 стороны главного устройства и/или декодера 434 стороны главного устройства может быть распределена среди нескольких компонентов.
[0043] Запоминающее устройство 450 может включать в себя интерфейс 460 стороны запоминающего устройства (например, блок ввода/вывода (I/O)), банки 470 памяти, кодер 462 стороны запоминающего устройства и декодер 464 стороны запоминающего устройства. Во время операции записи интерфейс 460 стороны запоминающего устройства может принять команду ЗАПИСЬ от главного устройства 410 по линии 490 связи. Интерфейс 460 стороны запоминающего устройства может принять данные записи от главного устройства 410 по линии 490 связи и может сохранить данные записи в банках 470 памяти в ответ на команду ЗАПИСЬ.
[0044] Интерфейс 460 стороны запоминающего устройства также может принять код защиты записи от главного устройства 410 по линии 490 связи вместе с данными записи. Как упомянуто, кодом защиты записи может являться ECC и/или коды с контролем по четности других типов. Декодер 464 стороны запоминающего устройства может определить, являются ли корректными принятые данные записи, на основе кода защиты записи. Таким образом, декодер 464 стороны запоминающего устройства может обнаружить, существуют ли ошибки в данных записи. Кроме того, декодер 464 стороны запоминающего устройства может исправить данные записи, когда обнаружена ошибка, и интерфейс 460 стороны запоминающего устройства может сохранить исправленные данные записи в банках 470 памяти.
[0045] Следует помнить, что в предложенной методике не требуется никакое дополнительное запоминающее устройство. В отличие от традиционной системы памяти, проиллюстрированной на фиг. 1, которая имеет девятое запоминающее устройство 150 для сохранения ECC, в предложенной методике не требуется сохранять код защиты записи в каком-либо из запоминающих устройств 450. Вместо этого все запоминающие устройства 450 могут сохранять полезные данные в аспекте.
[0046] Во время операции чтения интерфейс 460 стороны запоминающего устройства может принять команду ЧТЕНИЕ от главного устройства 410 по линии 490 связи. В ответ на команду ЧТЕНИЕ интерфейс 460 стороны запоминающего устройства может извлечь данные чтения из банков 470 памяти и отправить извлеченные данные чтения главному устройству 410 по линии 490 связи.
[0047] Кодер 462 стороны запоминающего устройства может формировать код защиты чтения на основе данных чтения, извлеченных из банков 470 памяти. В качестве альтернативы кодер 462 стороны запоминающего устройства может формировать код защиты чтения на основе данных чтения, а также на основе данных DM, которые могут быть обнулены. Как упомянуто, кодом защиты чтения может являться ECC и/или коды с контролем по четности других типов. Интерфейс 460 стороны запоминающего устройства может обеспечить главному устройству 410 код защиты чтения вместе с данными чтения по линии связи.
[0048] На фиг. 4 кодер 462 стороны запоминающего устройства и декодер 464 стороны запоминающего устройства проиллюстрированы как встроенные в интерфейс 460 стороны запоминающего устройства. Это является лишь примером и не должно восприниматься как ограничение. Предполагается, что кодер 462 стороны запоминающего устройства и/или декодер 464 стороны запоминающего устройства могут являться самостоятельными или быть встроены в другие компоненты в запоминающем устройстве 450. Кроме того, хотя кодер 462 стороны запоминающего устройства и декодер 464 стороны запоминающего устройства проиллюстрированы индивидуально, они могут быть реализованы в едином устройстве. Также предполагается, что кодер 462 стороны запоминающего устройства и/или декодер 464 стороны запоминающего устройства могут быть реализованы в нескольких устройствах. Действительно, в некотором аспекте (аспектах) реализация кодера 462 стороны запоминающего устройства и/или декодера 464 стороны запоминающего устройства может быть распределена среди нескольких компонентов.
[0049] В аспекте изобретения кодер 432 стороны главного устройства и кодер 462 стороны запоминающего устройства могут работать для формирования идентичных кода защиты записи и кода защиты чтения (например, одинакового ECC), когда им предоставляются идентичные данные. В другом аспекте также возможно, что код защиты записи может отличаться от кода защиты чтения. Однако при условии, что декодеры 464, 434 стороны запоминающего устройства и стороны главного устройства соответственно работают взаимодополняющим образом по отношению к кодерам 432, 462 стороны главного устройства и стороны запоминающего устройства, может иметь место надлежащий обмен данными.
[0050] При сравнении предложенной подсистемы 400 памяти на фиг. 4 и традиционной подсистемы 100 памяти на фиг. 2 можно заметить, что линии 490 и 290 связи могут являться идентичными, т.е., не требуется какое-либо изменение в конфигурации линии 490 связи между главным устройством 410 и запоминающим устройством 450. Таким образом, те же самые сигнальные линии данных (DQ[0:7]), маски данных (DM), синхронизации данных (Data CK), синхронизации строба чтения (Read Strobe CK), команд и адресов (CA[0:n]) и синхронизации команд и адресов (CA CK) могут использоваться для обмена информацией между главным устройством 410 и запоминающим устройством 450. Поскольку могут использоваться те же самые сигнальные линии, не требуются никакие изменения в архитектуре линии 490 связи.
[0051] Желательно, чтобы коды защиты записи и чтения по-прежнему передавались между главным устройством 410 и запоминающим устройством 450 без изменения архитектуры линии связи, без увеличения ширины ввода/вывода и без увеличения длины пакета импульсов. Следует помнить, что в традиционной системе памяти линия синхронизации строба чтения остается бездействующей во время операции записи (см. фиг. 3А), и линия DM остается бездействующей во время операции чтения (см. фиг. 3B). Таким образом, в аспекте изобретения предложено использовать линию синхронизации строба чтения для передачи кода защиты записи во время операции записи и использовать линию DM для передачи кода защиты чтения во время операции чтения. Посредством использования линии синхронизации строба чтения и линии DM не требуются никакие дополнительные сигнальные линии для передачи кодов защиты записи и чтения между главным устройством 410 и запоминающим устройством 450. Данные чтения и данные записи по-прежнему могут передаваться по линиям данных (DQ).
[0052] Фиг. 5А иллюстрирует временную диаграмму примера операции записи с маскированием. На этой иллюстративной диаграмме предполагается, что 128-битные данные записи (8 битов DQ x длина пакета импульсов 16) передаются по линиям DQ от главного устройства 410 к запоминающему устройству 450. Каждый из битов D0-DF может представлять 8 битов (байт) данных записи DQ [0:7], передаваемых в одном пакетном цикле. В этом примере предполагается, что данные записи передаются с некоторыми действиями маски данных (DM). Например, 16-битная маска данных может использоваться для маскирования байтов DQ данных записи. Например, четвертый и девятый биты DM (M3 и M8) могут быть установлены для маскирования четвертого и девятого байтов DQ (D3 и D8). Следует отметить, что для обычной операции записи без маскирования все биты DM будут сброшены, т.е., обнулены.
[0053] Кодер 432 стороны главного устройства может сформировать код защиты записи (например, 8-битный ECC), который затем может быть передан по линии синхронизации строба чтения посредством интерфейса 430 стороны главного устройства. Кодер 432 стороны главного устройства может сформировать код защиты записи на основе данных записи, принятых от контроллера 420 памяти. Например, 8-битный код защиты записи может быть сформирован для защиты 128-битных данных записи. В другом аспекте кодер 432 стороны главного устройства может сформировать код защиты записи на основе битов DM в дополнение к данным записи. Например, 8-битный ECC может быть сформирован для защиты в общей сложности 144 битов (128-битных данных записи и 16-битной маски данных).
[0054] Таким образом, в обычной операции записи (без маскирования) код защиты записи может быть основан только на 128-битных данных записи. В качестве альтернативы в обычной операции записи код защиты записи может быть основан на 128-битных данных записи и обнуленных битах DM. В операции записи с маскированием, если защита данных DM не представляет интереса, то код защиты записи может быть основан только на данных записи. В ином случае при операции записи с маскированием код защиты записи может быть основан на данных записи и данных DM.
[0055] Как можно заметить на фиг. 5А, 8-битный E[0:7] код защиты записи может быть передан таким образом, чтобы он совпадал с пакетными циклами 8-15. В более общем случае код защиты записи может быть передан во время последней части пакетных циклов таким образом, чтобы конец пакетных циклов (например, пакетный цикл 15) совпадал с передачей последнего бита (например, E7) кода защиты записи. Это вызвано тем, что формирование кода защиты записи может занять некоторое время. Посредством передачи кода защиты записи во время последней части пакетных циклов таким образом, чтобы конец передачи данных чтения совпадал с концом передачи кода защиты чтения, может быть обеспечено максимальное количество времени для формирования данных защиты записи без необходимости увеличения длины пакета импульсов.
[0056] Безусловно, передача кода защиты записи может начаться, как только будут доступны индивидуальные биты кода защиты записи. Таким образом, передача кода защиты записи может закончиться до конца пакетных циклов. Но независимо от этого, в общем случае предпочтительно, чтобы передача кода защиты записи закончилась не позднее, чем конец пакетных циклов, чтобы избежать удлинения пакета импульсов.
[0057] Фиг. 5B иллюстрирует временную диаграмму примера операции чтения. Когда контроллер 420 памяти выдает команду ЧТЕНИЕ запоминающему устройству 450, запоминающее устройство 450 может ответить посредством отправки данных чтения главному устройству 410. В этой иллюстративной диаграмме предполагается, что 128-битные данные чтения (8 битов DQ x длина пакета импульсов 16) передаются от запоминающего устройства 450 к главному устройству 410 по линиям DQ. Каждый из битов D0-DF может представлять 8 битов (байт) данных чтения DQ[0:7], передаваемых в одном пакетном цикле.
[0058] Кодер 462 стороны запоминающего устройства может формировать код защиты чтения (например, 8-битный ECC), который затем может быть передан через линию DM посредством интерфейса 460 стороны запоминающего устройства. Кодер 462 стороны запоминающего устройства может формировать код защиты чтения на основе данных чтения, извлеченных из банков 470 памяти. Например, 8-битный код защиты чтения может быть сформирован для защиты 128-битных данных чтения. В другом аспекте код защиты чтения может быть сформирован для защиты в общей сложности 144 битов (128-битных данных записи и 16-битной обнуленной маски DM.
[0059] 8-битный E[0:7] код защиты чтения может быть передан таким образом, чтобы он совпадал с пакетными циклами 8-15. В более общем случае код защиты чтения может быть передан во время последней части пакетных циклов таким образом, чтобы конец пакетных циклов (например, пакетный цикл 15) совпадал с последним битом (например, E7) кода защиты чтения. Посредством передачи кода защиты чтения во время последней части пакетных циклов таким образом, чтобы конец передачи данных чтения совпадал с концом передачи кода защиты чтения, может быть обеспечено максимальное время для формирования данных защиты чтения без необходимости увеличения длины пакета импульсов.
[0060] Передача кода защиты чтения может начаться, как только сформированы индивидуальные биты кода защиты чтения. Таким образом передача кода защиты чтения может закончиться до конца пакетных циклов. Но независимо от этого, в общем случае предпочтительно, чтобы передача кода защиты чтения закончилась не позднее, чем конец пакетных циклов, чтобы избежать удлинения пакета импульсов.
[0061] Фиг. 6А иллюстрирует пример данных (например, данных чтения/записи) и соответствующий код защиты (например, код защиты чтения/записи). В этом примере можно предположить, что 8-битный код защиты (E0-E7) (например, биты ECC) используется для защиты 144-битных данных (128-битные данные чтения/записи (d0-d7F)+16-битные данные DM (M0-MF)). Как упомянуто, все биты DM могут быть обнулены для обычных операций чтения/записи. Это является лишь примером. Любое количество битов данных (например, любая комбинация битов данных чтения/записи и битов маскирования) может быть защищено с помощью кода защиты.
[0062] Количество битов для кода защиты также может быть различным в зависимости от желаемого уровня защиты (например, обнаружения и исправления ошибок). Фиг. 6B иллюстрирует другой пример данных, данных DM и соответствующего кода защиты. В этом примере 9 битов ECC могут быть предназначены для защиты 128-битных данных (например, данных чтения/записи), и 6 битов ECC могут быть предназначены для защиты 16-битных данных DM. Таким образом, в этом примере может передаваться 15-битный код ECC (E0-EE).
[0063] Фиг. 7 иллюстрирует блок-схему последовательности этапов иллюстративного способа 700 для выполнения операции записи. Способ 700 может быть применен к операциям записи с маскированием и/или к обычным операциям записи. На этой фигуре главное устройство 410 может выполнять этапы 710-730, и запоминающее устройство 450 может выполнять этапы 740-780. На стороне главного устройства, на этапе 710, контроллер 420 памяти может выдать команду ЗАПИСЬ стороне запоминающего устройства через интерфейс 430 стороны главного устройства. На этапе 720 кодер 432 стороны главного устройства может сформировать код защиты записи на основе данных записи, обеспеченных контроллером 420 памяти. В качестве альтернативы кодер 432 стороны главного устройства может сформировать код защиты записи для защиты данных записи и данных DM. На этапе 730 интерфейс 430 стороны главного устройства может отправить данные записи и код защиты записи (например, ECC) стороне запоминающего устройства. Данные записи могут быть отправлены по линиям DQ, и код защиты записи может быть отправлен по линии синхронизации строба чтения.
[0064] На стороне запоминающего устройства, на этапе 740, интерфейс 460 стороны запоминающего устройства может принять команду ЗАПИСЬ от стороны главного устройства. После этого, на этапе 750, интерфейс 460 стороны запоминающего устройства может принять данные записи (например, по линиям DQ) и код защиты записи (например, по линии синхронизации строба чтения) от стороны главного устройства. На этапе 760 декодер 464 стороны запоминающего устройства может обнаружить, существует ли ошибка в данных записи, на основе кода защиты записи. В качестве альтернативы декодер 464 стороны запоминающего устройства может обнаружить, существует ли ошибка в данных записи и/или данных DM, на основе кода защиты записи. На этапе 770 декодер 464 стороны запоминающего устройства может при необходимости исправить данные записи, например, когда обнаружена ошибка (ошибки) какого-либо бита. На этапе 780 интерфейс 460 стороны запоминающего устройства может сохранить данные записи в банках 470 памяти. Если декодер 464 стороны запоминающего устройства исправляет данные записи, исправленные данные записи могут быть сохранены в банках 470 памяти.
[0065] Фиг. 8 иллюстрирует блок-схему последовательности этапов иллюстративного способа 800 для выполнения операции чтения. На этой фигуре главное устройство 410 может выполнять этапы 810-850, и запоминающее устройство 450 может выполнять этапы 850-890. На стороны запоминающего устройства, на этапе 860, интерфейс 460 стороны запоминающего устройства может принять команду ЧТЕНИЕ от стороны главного устройства. На этапе 870 интерфейс 460 стороны запоминающего устройства может извлечь данные чтения из банков 470 памяти. На этапе 880 кодер 462 стороны запоминающего устройства может сформировать код защиты чтения на основе извлеченных данных чтения. В качестве альтернативы кодер 462 стороны запоминающего устройства может сформировать код защиты чтения для защиты данных чтения и данных DM, и данные DM могут быть обнулены. На этапе 890 интерфейс 460 стороны запоминающего устройства может отправить данные чтения и код защиты чтения (например, ECC) стороне главного устройства. Данные чтения могут быть отправлены по линиям DQ, и код защиты чтения может быть отправлен по линии DM.
[0066] На стороне главного устройства, на этапе 810, контроллер 420 памяти может выдать команду ЧТЕНИЕ стороне запоминающего устройства через интерфейс 430 стороны главного устройства. После этого, на этапе 820, интерфейс 430 стороны главного устройства может принять данные чтения (например, по линиям DQ) и код защиты чтения (например, по линии DM) от стороны запоминающего устройства. На этапе 830 декодер 434 стороны главного устройства может обнаружить, существует ли ошибка в данных чтения, на основе кода защиты чтения. В качестве альтернативы декодер 434 стороны главного устройства может обнаружить, существует ли ошибка в данных чтения и/или данных DM, на основе кода защиты чтения. На этапе 840 декодер 434 стороны главного устройства может при необходимости исправить данные чтения, например, когда обнаружена ошибка (ошибки) какого-либо бита. На этапе 850 интерфейс 430 стороны главного устройства может обеспечить данные чтения контроллеру 420 памяти. Если декодер 434 стороны главного устройства исправляет данные чтения, исправленные данные чтения могут быть обеспечены контроллеру 420 памяти.
[0067] Хотя специальным образом не показано, главное устройство 410 может взаимодействовать с несколькими запоминающими устройствами 450. Следует отметить, что не обязательно требуется выполнять все этапы способа 700 или способа 800. Кроме того, этапы способа 700 и/или этапы способа 800 не обязательно должны выполняться в каком-либо конкретном порядке.
[0068] Фиг. 9 иллюстрирует различные электронные устройства, которые могут быть интегрированы с упомянутой выше подсистемой 400 памяти. Например, устройство 902 мобильного телефона, устройство 904 ноутбука, терминальное устройство 906, а также носимые устройства, переносные системы, которым требуется миниатюрный форм-фактор, чрезвычайно низкий профиль, могут включать в себя устройство/корпус 900, которые включают в себя подсистему 400 памяти согласно настоящему описанию. Устройство/корпус 900 могут представлять собой, например, любой элемент из интегральных схем, кристаллов, интегрированных устройств, корпусов интегрированных устройств, устройств интегральных схем, корпусов устройств, корпусов интегральных схем (IC), устройств "корпус на корпусе", системы в корпусных устройствах, описанных в настоящем документе. Устройства 902, 904, 906, проиллюстрированные на фиг. 9, являются лишь иллюстративными. Другие электронные устройства также могут представлять собой пример устройства/корпуса 900, в том числе, но без ограничения, группа устройств (например, электронных устройств), которая включает в себя мобильные устройства, переносные личные системы связи (PCS), переносные модули обработки данных, такие как карманные персональные компьютеры, устройства с поддержкой системы глобального позиционирования (GPS), навигационные устройства, телевизионные приставки, аудиопроигрыватели, видеопроигрыватели, системы для развлечений, модули обработки данных в стационарном местоположении, такие как оборудование для считывания показаний счетчиков, устройства связи, смартфоны, планшетные компьютеры, компьютеры, носимые устройства, серверы, маршрутизаторы, электронные устройства, реализованные в автотранспортных средствах (например, в автономных транспортных средствах), или любое другое устройство, которое хранит или извлекает данные или компьютерные инструкции, или любую их комбинацию.
[0069] Неполный перечень эффектов одного или более аспектов предложенной подсистемы памяти состоит в следующем:
- Улучшение надежности применения защиты данных (например, ECC) для высокоскоростной линии связи запоминающего устройства без потери ширины полосы запоминающего устройства и воздействия на стоимость;
- Не требуется никакое дополнительное запоминающее устройство;
- Сохранение количества выводов памяти малой мощности и совместимости корпусов.
[0070] Специалисты в области техники поймут, что информация и сигналы могут быть представлены с использованием любых из множества различных технологий и методик. Например, данные, инструкции, команды, информация, сигналы, биты, символы и элементарные сигналы, которые могут упоминаться в изложенном выше описании, могут быть представлены напряжениями, токами, электромагнитными волнами, магнитными полями или частицами, оптическими полями или частицами, или любой их комбинацией.
[0071] Кроме того, специалисты поймут, что различные иллюстративные логические блоки, модули, схемы и этапы алгоритмов, описанные в связи с раскрытыми здесь примерами, могут быть реализованы как электронное аппаратное оборудование, программное обеспечение или их комбинация. Чтобы ясно проиллюстрировать эту взаимозаменяемость аппаратного оборудования и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и способы были описаны выше в общих чертах в терминах их функциональности. Реализована ли такая функциональность как аппаратное оборудование или программное обеспечение, зависит от конкретного применения и конструктивных ограничений, накладываемых на систему в целом. Специалисты могут реализовать описанную функциональность различными способами для каждого конкретного применения, но такие реализации не должны рассматриваться как вызывающие отход от объема настоящего раскрытия.
[0072] Способы, последовательности и/или алгоритмы, описанные в связи с разрытыми здесь примерами, могут быть воплощены непосредственно в аппаратных средствах, в программном модуле, исполняемом посредством процессора, или в их комбинации. Программный модуль может находиться в оперативном запоминающем устройстве (ОЗУ), флэш-памяти, постоянном запоминающем устройстве (ПЗУ), стираемом программируемом постоянном запоминающем устройстве (СППЗУ), электрически стираемом программируемом постоянном запоминающем устройстве (ЭСППЗУ), регистрах, жестком диске, съемном диске, компакт-диске, предназначенном только для чтения (CD-ROM), или любом другом носителе данных, известном в области техники. Иллюстративный носитель данных соединен с процессором таким образом, что процессор может считывать информацию с носителя данных и записывать информацию на него. В качестве альтернативы носитель данных может являться неотъемлемой частью процессора.
[0073] В соответствии с этим аспект изобретения может включать в себя машиночитаемые носители, воплощающие любое из описанных выше устройств. В соответствии с этим объем раскрытого объекта изобретения не ограничен проиллюстрированными примерами, и любые средства для выполнения описанных здесь функций включены в аспекты изобретения.
[0074] Хотя предшествующее раскрытие показывает иллюстративные примеры, следует отметить, что могут быть выполнены различные изменения и модификации без отступления от объема раскрытого предмета изобретения, заданного посредством приложенной формулы изобретения. Функции, процессы и/или действия способа в соответствии с описанными здесь примерами не обязательно должны выполняться в каком-либо конкретном порядке. Кроме того, хотя элементы раскрытого объекта изобретения могут быть описаны или заявлены в единственном числе, множественное число подразумевается, если явно не указано ограничение единственным числом.