RU2666241C2 - Перераспределение сегментов памяти для решения проблемы фрагментации - Google Patents
Перераспределение сегментов памяти для решения проблемы фрагментации Download PDFInfo
- Publication number
- RU2666241C2 RU2666241C2 RU2015118415A RU2015118415A RU2666241C2 RU 2666241 C2 RU2666241 C2 RU 2666241C2 RU 2015118415 A RU2015118415 A RU 2015118415A RU 2015118415 A RU2015118415 A RU 2015118415A RU 2666241 C2 RU2666241 C2 RU 2666241C2
- Authority
- RU
- Russia
- Prior art keywords
- memory
- redistribution
- segment
- metadata
- failed
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 350
- 238000013467 fragmentation Methods 0.000 title description 14
- 238000006062 fragmentation reaction Methods 0.000 title description 14
- 238000001514 detection method Methods 0.000 claims abstract description 19
- 238000000034 method Methods 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 8
- 230000007704 transition Effects 0.000 claims description 4
- 238000013500 data storage Methods 0.000 abstract description 6
- 239000000126 substance Substances 0.000 abstract 1
- 230000008569 process Effects 0.000 description 33
- 238000005516 engineering process Methods 0.000 description 25
- 238000012937 correction Methods 0.000 description 15
- 238000002135 phase contrast microscopy Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007787 long-term memory Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/808—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout using a flexible replacement scheme
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/816—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
- G11C29/82—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0004—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/004—Reading or sensing circuits or methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Chemical & Material Sciences (AREA)
- Crystallography & Structural Chemistry (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Hardware Redundancy (AREA)
- Retry When Errors Occur (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
Группа изобретений относится к области запоминающих устройств. Техническим результатом является увеличение надежности хранения данных в устройствах памяти. Система содержит аппаратный модуль памяти, включающий в себя множество областей памяти, причем отдельные области памяти включают в себя множество сегментов; модуль обнаружения отказов, который обнаруживает вышедший из строя сегмент в области памяти из данного множества областей памяти; модуль кластеризации, который логически кластеризует вышедший из строя сегмент посредством перераспределения вышедшего из строя сегмента в рабочий сегмент, расположенный на краю упомянутой области памяти, причем рабочий сегмент выбирается для максимизации непрерывного пространства памяти в пределах данной области памяти. 3 н. и 17 з.п. ф-лы, 5 ил.
Description
УРОВЕНЬ ТЕХНИКИ
В связи с проблемами масштабирования современные технологии могут перейти от использования устройств памяти на основе электрического заряда, таких как динамическое оперативное запоминающее устройство (DRAM), к резистивным и магниторезистивным устройствам памяти, таким как память на основе фазового перехода (PCM). Однако многие такие устройства памяти имеют тенденцию к изнашиванию.
Память может изнашиваться тогда, когда система записывает в память, так как запись может изменять физическую конфигурацию материала в памяти или ухудшать его некоторым другим образом. Устройства памяти, восприимчивые к этой проблеме, упоминаются как изнашиваемые устройства памяти. Из-за постепенного ухудшения параметров изнашиваемые устройства памяти подвергаются отказам памяти, которые могут воспрепятствовать надежному хранению в памяти данных для системы после большого количества операций записи, производимых системой. Например, ячейка РСМ может, как правило, выдерживать порядка 108 операций записи перед изнашиванием (то есть перед отказом), тогда как ячейка DRAM может, как правило, выдерживать порядка 1015 операций записи перед отказом.
Память для системы можно разбить на множество областей, причем каждая область имеет многочисленные сегменты. Система может использовать области памяти в качестве блока для выделения памяти (например, во время исполнения) и/или переноса данных между основной памятью и вспомогательной памятью, такой как жесткий диск. Так как отдельные сегменты областей памяти начинают выходить из строя из-за большого количества записей, происходит фрагментация памяти. Фрагментация памяти возникает в тех случаях, когда область памяти разделена на меньшие участки используемой памяти (например, один или более соседних "рабочих" сегментов), которые разделятся вышедшим из строя или изношенным сегментом, который нельзя больше использовать. Хотя малые участки используемой памяти между вышедшими из строя сегментами являются по-прежнему надежными для выделения памяти, они не используются эффективным образом в системе, так как малые участки по отдельности являются слишком малыми для хранения более крупных объектов, например, данных, чье хранение требует непрерывной памяти (например, многочисленные смежные сегменты). Другими словами, система не может поместить более крупные объекты между двумя вышедшими из строя сегментами памяти из-за фрагментации.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Технологии, которые обсуждаются в данном документе, позволяют увеличить срок службы изнашиваемых устройств памяти за счет решения проблемы фрагментации. Технологии реализованы в объединенной аппаратной и программной системе, которая идентифицирует вышедшие из строя сегменты памяти в области памяти. Технология позволяет в дальнейшем управлять вышедшими из строя сегментами памяти путем логической кластеризации вышедших из строя сегментов памяти на участке, находящемся за пределами области памяти, с использованием процесса перераспределения. Процесс перераспределения может включать в себя создание и сохранение метаданных перераспределения, определяющих информационные записи перераспределения сегментов в области памяти. Соответственно, кластеризация отказов логически исключает или уменьшает фрагментацию памяти таким образом, чтобы система могла выделять более крупные участки непрерывной памяти для хранения объектов.
По меньшей мере в одном варианте осуществления программное обеспечение системы (например, операционная система) и/или контроллер памяти могут в дальнейшем осуществлять доступ к, использовать и обновлять метаданные перераспределения во время выделения памяти, считываний из памяти, записи в память или их комбинации. Например, программное обеспечение системы или контроллер памяти может выделять память во время исполнения путем сообщения об отказах памяти и указания величины пространства непрерывной памяти в пределах области памяти после перераспределения и кластеризации отказов памяти.
Это краткое изложение сущности изобретения предоставлено, чтобы ввести подборку концепций в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Данное краткое изложение сущности изобретения не предназначено ни для идентификации ключевых или существенных признаков заявляемого изобретения, ни для использования в качестве помощи при определении объема заявляемого изобретения. Например, термин "технологии" может относиться к системе(ам), аппаратным средствам, способу(ам), машиночитаемым инструкциям, модулю(ям) и/или алгоритмам, как это разрешено вышеупомянутым контекстом и на всем протяжении документа.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Подробное описание представлено со ссылкой на сопроводительные фигуры. На фигурах левая крайняя цифра(ы) ссылочной позиции идентифицирует фигуру, на которой ссылочная позиция появляется первой. Одинаковые ссылочные позиции на различных фигурах используются для обозначения аналогичных или идентичных элементов.
Фиг. 1 иллюстрирует примерную архитектуру системы для реализации технологии кластеризации и перераспределения в соответствии с различными вариантами осуществления, раскрытыми в данном документе.
Фиг. 2 иллюстрирует примерную область памяти на различных этапах в случае, когда примерная архитектура системы реализует технологию кластеризации и перераспределения в соответствии с различными вариантами осуществления, раскрытыми в данном документе.
Фиг. 3 иллюстрирует две последовательных примерных области памяти в соответствии с различными вариантами осуществления, описанными в данном документе.
Фиг. 4 иллюстрирует примерный процесс выделения памяти, который создает и/или обновляет метаданные перераспределения в соответствии с различными вариантами осуществления, описанными в данном документе.
Фиг. 5 иллюстрирует примерный процесс выделения памяти, который использует метаданные перераспределения, чтобы считывать данные из области памяти в соответствии с различными вариантами осуществления, описанными в данном документе.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Обзор
В приведенном ниже описании изложены технологии, которые позволяют логически уменьшить и/или устранить фрагментацию в пределах области памяти, которая получилась в результате вышедших из строя сегментов. Когда система обнаруживает выход из строя сегмента в пределах области памяти, технологии логически перераспределяют отказ на участок, расположенный за пределами области памяти (например, верхняя или нижняя часть области памяти). Технологии позволяют также создавать метаданные перераспределения, показывающие переключения местоположений сегментов и смещения сегментов, с тем чтобы система могла выделить более крупные участки непрерывной памяти, которые получаются в результате перераспределения вышедших из строя сегментов, участку, расположенному за пределами области памяти. По меньшей мере в одном варианте осуществления метаданные перераспределения являются уникальными для области памяти, и технологии хранят метаданные перераспределения в пределах области памяти. Система может в дальнейшем использовать метаданные перераспределения во время процесса выделения памяти.
Как описано выше, изнашиваемые устройства памяти подвержены отказам памяти, которые могут воспрепятствовать надежному хранению в памяти данных после большого количества записей. Отказы памяти могут представлять собой изначально присутствующие отказы или статические отказы, либо отказы памяти могут представлять собой динамические отказы. В различных вариантах осуществления память представляет собой основную память, которая может включать в себя большой участок изнашиваемой памяти (которая, как правило, предполагается более плотной и более эффективной в плане затрат памятью) и меньший участок DRAM, который хранит данные и операции, которые не могут допускать отказа (например, операции, которые могут быть существенными для операционной системы). Изнашиваемые устройства памяти могут обеспечивать стабильные сегменты хранения, которые выходят из строя с меньшей степенью детализации по сравнению с более крупными областями основной памяти. В контексте данного документа более крупные области памяти описаны в качестве страниц памяти, и сегменты страниц памяти упоминаются как строки. Однако, в контексте данного документа понятно, что области памяти могут представлять собой любой модуль или блок памяти, используемый для выделения памяти в изнашиваемой памяти или устройствах памяти, выполненных по другой технологии. Более того, области памяти и строки могут изменяться по размеру или объему для хранения объектов (например, области и/или строки могут быть более детализированными или менее детализированными).
Когда в системе, которая использует DRAM в качестве основной памяти, происходит отказ памяти, отключается вся область памяти (например, страница). Однако продолжительный отказ памяти, где используется DRAM, является очень редким. Напротив, в изнашиваемых устройствах памяти продолжительные отказы памяти происходят чаще. Если бы одинаковое или аналогичное выведение из строя всей области памяти проявлялось бы для изнашиваемых устройств памяти, то объем памяти быстро бы израсходовался даже в том случае, если бы каждая область памяти по-прежнему имела бы все, а не один функциональный сегмент. По этой причине, вместо отключения памяти с детализацией на уровне области, системы, использующие изнашиваемые устройства памяти, могут отключать память с меньшей степенью детализации на уровне сегмента (например, с детализацией на уровне строки). Однако, так как трансляцию памяти из виртуальных адресов в физические адреса можно все еще выполнить с детализацией на уровне области в системах с изнашиваемой памятью (и это обычно выполняется при детализациях на уровне областей по причинам непроизводительных затрат), это может привести к виртуальному адресному пространству, которое нельзя сделать полностью непрерывным, и, следовательно, к фрагментации.
Таким образом, технологии, обсуждаемые в данном документе, обращают внимание на вышеупомянутые проблемы фрагментации памяти путем кластеризации вышедших из строя строк памяти на участке, находящемся за пределами отдельных страниц памяти (например, верхняя или нижняя часть страниц памяти). Для того чтобы выполнить кластеризацию вышедших из строя строк памяти, способы позволяют реализовать процесс перераспределения в пределах каждой страницы памяти. В результате, предложенной технологией логически создаются более крупные участки непрерывной памяти, поэтому объекты, более крупные, чем рабочая память между любыми двумя вышедшими из строя сегментами, можно по-прежнему хранить на странице, когда начинают происходить отказы сегментов. Это увеличивает срок службы области.
В некоторых вариантах осуществления способы позволяют выполнить кластеризацию вышедших из строя строк памяти на участках, находящихся за пределами большей области перераспределения памяти. Например, способы можно выполнить с возможностью размещения вышедших из строя строк памяти на верхней или нижней части каждой второй, четвертой, восьмой и т.д. страниц памяти вместо каждой отдельной страницы памяти. Поэтому эти технологии можно выполнить с возможностью реализации процессов перераспределения и кластеризации в отношении "перераспределяемой" области памяти, которая кратна размеру области модуля памяти аппаратных средств (например, двум страницам памяти, четырем страницам памяти, восьми страницам памяти и т.д.). Это позволяет дополнительно исключить фрагментацию и создать более крупные участки непрерывных блоков хранения.
В различных вариантах осуществления процесс кластеризации и перераспределения отказов, описанный в данном документе, можно реализовать после того, как система использует и израсходует другие ресурсы исправления ошибок памяти. Например, другие ресурсы исправления ошибок памяти могут включать в себя стандартные технологии исправления ошибок, такие как код с исправлением ошибок (ECC) (которые, как правило, используются в настоящее время для DRAM) и информационные записи указателей исправления ошибок.
Иллюстративная архитектура
На Фиг. 1 изображена примерная системная архитектура 100 для реализации технологий, которые обсуждаются в данном документе. Системная архитектура 100 может быть сконфигурирована в виде любого подходящего вычислительного устройства, которая использует технологии памяти, которые допускают фрагментацию. В качестве примера, а не ограничения, системная архитектура 100 может включать в себя персональные вычислительные устройства, портативные вычислительные устройства, смартфоны, серверные вычислительные устройства, группы серверов, центры обработки данных или любые другие устройства, которые используют и/или выделяют память. Соответственно, системная архитектура 100 может включать в себя системное программное обеспечение 102, контроллер 104 памяти и модуль 106 памяти. Системное программное обеспечение 102, контроллер 104 памяти и/или модуль 106 памяти могут быть соединены и могут осуществлять связь в виде множества различных конфигураций (например, системная шина, сеть и т.д.).
В различных вариантах осуществления системное программное обеспечение 102 может включать в себя операционную систему, такую как операционная система Microsoft Windows®, операционная система смартфона, операционная система, работающая в режиме реального времени, или любой другой тип операционной системы, соединенный с модулем 106 памяти. Более того, системное программное обеспечение 102 может включать в себя любой тип динамических исполняемых сред (например, виртуальные машины, управляемый код и т.д.). По меньшей мере в одном варианте осуществления операционная система может сообщать об отказах памяти в динамические исполняемые среды, с тем чтобы динамически исполняемые среды могли выделять память в окрестности вышедших из строя частей памяти.
В различных вариантах осуществления системное программное обеспечение 102 и/или контроллер 104 памяти выполнены с возможностью управления потоком данных в и из модуля 106 памяти (например, физической памяти). Модуль 106 памяти может представлять собой аппаратный модуль памяти, который включает в себя множество страниц 108(1)…108(N), где каждая страница 108(1)…108(N) может представлять собой более крупную область памяти, обсужденную выше. В связи с этим системное программное обеспечение 102 и/или контроллер 104 памяти можно выполнить с возможностью выделения пространства памяти на страницах 108(1)…108(N) для объектов, ассоциированных с программами или приложениями, исполняемыми на одном или более процессорных ядрах 110(1)…110(М), управление которыми осуществляется с помощью системного программного обеспечения 102. Следовательно, системное программное обеспечение 102 можно выполнить с возможностью предоставления сервисов одному или более процессорным ядрам 110(1)…110(М), и каждое процессорное ядро 110(1)…110(М) может иметь кэш 112(1)…112(L), в который кэшируются одна или более страниц 108(1)…108(N), которые в текущий момент времени доступны системному программному обеспечению 102 и/или контроллеру 104 памяти. Более того, в кэшах 112(1)…112(L) может также кэшироваться информация об отказах памяти или ошибках, которая сообщается с помощью системного программного обеспечения 102. По меньшей мере в одном варианте осуществления кэши 112(1)…112(L) могут представлять собой статическое оперативное запоминающее устройство (SRAM).
В различных вариантах осуществления модуль 106 памяти представляет собой основную память для системной архитектуры 100 системного программного обеспечения 102. Системное программное обеспечение 102 можно хранить в модуле 106 памяти или можно хранить в отдельной памяти в пределах системной архитектуры 100, которая отличается от модуля 106 памяти. Контроллер 104 памяти может представлять собой часть аппаратных средств компьютера, которые расположены на печатной плате с модулем 106 памяти, контроллер 104 памяти может быть расположен на той же самой подложке, что и модуль 106 памяти, или контроллер 104 памяти может быть расположен на подложке микросхемы с процессорными ядрами 110(1)…110(М). По меньшей мере в одном варианте осуществления контроллер 104 памяти встроен в программно-аппаратные средства (firmware) или в программируемую пользователем вентильную матрицу (FPGA). В другом варианте осуществления контроллер может представлять собой специализированную интегральную схему (ASIC), ассоциированную с модулем 106 памяти, или драйвер устройства, ассоциированный с модулем 106 памяти. Таким образом, контроллер 104 памяти может располагаться на стороне обработки системной архитектуры 100, или контроллер 104 памяти может локально располагаться на модуле 106 памяти.
Как описано выше, каждая из страниц 108(1)…108(N) включает в себя многочисленные строки, которые системное программное обеспечение 102 и/или контроллер 104 памяти могут использовать для выделения памяти. Размер страницы памяти и число страниц памяти в модуле памяти может изменяться в зависимости от системной архитектуры. Например, размер страницы памяти может находиться в диапазоне от приблизительно одного килобайта до двух мегабайтов. Более того, по меньшей мере в одном примере, каждая строка на странице памяти может иметь размер 512 битов, однако в других примерах страницы и строки могут быть меньше или больше.
В различных вариантах осуществления каждое из процессорных ядер 110(1)…110(М) может включать в себя один или более процессоров. Процессоры могут представлять собой одиночное процессорное устройство или ряд из двух или более устройств, любые или все из которых могут включать в себя многочисленные вычислительные устройства. Процессоры можно реализовать в виде одного или более микропроцессоров, микрокомпьютеров, микроконтроллеров, процессоров для цифровой обработки сигналов, центральных процессорных устройств, конечных автоматов, логических схем, процессоров с общей памятью и/или любых устройств, которые манипулируют сигналами на основании рабочих инструкций. Среди других возможностей, процессоры можно выполнить с возможностью извлечения и исполнения машиночитаемых инструкций, которые хранятся в системном программном обеспечении 102, контроллере 104 памяти или любом другом приложении или программе, доступной системной архитектуре 100.
Как дополнительно обсуждено здесь, страницы памяти 108(1)…108(N) в модуле 106 памяти могут представлять собой страницы изнашиваемой памяти, такой как PCM. Однако технология, описанная в данном документе, широко применима к системам, использующим другие типы технологий памяти аппаратных средств, включая, но не ограничиваясь, флэш-память, подсистемы RAM, магниторезистивное оперативное запоминающее устройство с переносом спинового момента (STT-MRAM), ферроэлектрическое оперативное запоминающее устройство (FRAM), резистивное оперативное запоминающее устройство (RRAM) или любые другие магниторезистивные устройства памяти. Более того, технологии, обсужденные в данном документе, могут быть также применимы к устройству памяти на основе заряда, таким как DRAM.
В различных вариантах осуществления системное программное обеспечение 102 может включать в себя модуль 114 выделения памяти, и контроллер 104 памяти может включать в себя модуль 116 обнаружения отказов, модуль 118 кластеризации и кэш 120 информации об отказах. Модуль 114 выделения памяти можно выполнить с возможностью управления потоком данных (например, объектов), поступающих на и из страниц 108(1)…108(N) в модуле 106 памяти. Модуль 116 обнаружения отказов можно выполнить с возможностью обнаружения вышедших из строя строк в пределах каждой из страниц 108(1)…108(N). Например, модуль 116 обнаружения отказов обнаруживает и подтверждает, что строка вышла из строя и не является больше надежной в случае, когда контроллер 104 памяти записывает данные в строку в странице 108(N), к которой в текущий момент времени осуществляется доступ, при одновременном временном сохранении другой версии этих данных в буфере. Затем контроллер 104 памяти считывает данные обратно (например, непосредственно считывает данные обратно) со страницы 108(N), к которой в текущий момент времени осуществляется доступ, и модуль 116 обнаружения отказов сравнивает считанные данные с другой версией данных, которые временно хранятся в буфере. Если данные, считанные обратно из страницы 108(N), к которой в текущий момент времени осуществляется доступ, не являются такими же, как данные, временно хранящиеся в буфере, то модуль 116 обнаружения отказов идентифицирует строку в пределах страницы 108(N), к которой в текущий момент времени осуществляется доступ, в качестве вышедшей из строя строки.
В различных вариантах осуществления модуль 116 обнаружения отказов можно выполнить с возможностью сохранения информации об отказах области в кэше 120 информации об отказах. Информация об отказах областей включает в себя то, имеет или не имеет каждая из отдельных страниц 108(1)…108(N) постоянный отказ строки. Если страница 108(N) имеет постоянный отказ строки, контроллер 104 памяти может кэшировать метаданные 122 перераспределения для страницы 108(N) в кэше 120 информации об отказах, а также адрес для страницы 108(N). Соответственно, модуль 114 выделения памяти может использовать метаданные 122 перераспределения, которые хранятся в кэше 120 информации об отказах, для управления запросами на считывание и/или запись в отношении страниц 108(1)…108(N), которые имеют по меньшей мере один постоянных отказ строки.
Как дополнительно обсуждено ниже, в различных вариантах осуществления модуль 118 кластеризации выполнен с возможностью создания метаданных 122 перераспределения, которые переназначают вышедшие из строя строки краям каждой из отдельных страниц 108(1)…108(N) (например, верхней части страницы или нижней части страницы) или краям страницы 108(1)…108(N), которая находится в конце более крупной области перераспределения памяти (например, четыре страницы или восемь страниц). В некоторых вариантах осуществления модуль 118 кластеризации может создавать метаданные 122 перераспределения для отдельной страницы 108(N) или более крупную область перераспределения памяти, когда модуль 116 обнаружения отказов первым идентифицирует постоянный отказ строки (то есть вышедшую из строя строку) в пределах отдельной страницы 108(N).
В различных вариантах осуществления, когда страница 108(N) используется в текущий момент времени, предполагается к использованию или недавно использовалась системным программным обеспечением 102 совместно с одним или более процессорными ядрами 110(1)…110(М), модуль 114 выделения памяти может временно хранить метаданные 122 перераспределения для текущей страницы 108(N) в кэш 120 информации об отказах, как будет дополнительно обсуждено здесь. В альтернативных вариантах осуществления, метаданные 122 перераспределения будут также храниться в одном или более кэшах 112(1)…112(L).
Хотя модуль 116 обнаружения отказов и модуль 118 кластеризации изображены в контроллере 104 памяти, в контексте данного документа понятно, что некоторые или все функциональные возможности, выполняемые этими отдельными модулями, можно дополнительно или альтернативно сохранить где-нибудь еще или расположить на или распространить через системное программное обеспечение 112 (например, некоторые функциональные возможности можно выполнить с помощью операционной системы). Более того, в различных вариантах осуществления системное программное обеспечение 102 может также поддерживать отдельный кэш соотнесения отказов, в котором хранится информация об отказах памяти и который передает эту информацию в динамические исполняемые среды в точках выделения памяти, с тем чтобы можно было избежать отказа памяти. В результате, по меньшей мере в некоторых вариантах осуществления системное программное обеспечение 102 и контроллер 104 памяти могут осуществлять связь друг с другом и обмениваться информацией для выполнения технологий, обсуждаемых в данном документе.
Фиг. 2 иллюстрирует различные стадии для отдельной страницы 108(N) памяти, когда страница памяти изнашивается, и операционная система 102 и контроллер 104 памяти реализуют примерный процесс перераспределения во времени. Как обсуждено выше, отдельная страница 108(N) памяти может включать в себя многочисленные различные строки. Объем памяти каждой строки и число строк на каждой странице может зависеть от типа используемой памяти. По меньшей мере в одном варианте осуществления размер строки может составлять 512 битов, и страница 108(N) может представлять собой страницу размером четыре килобайта.
Однако, как показано на Фиг. 2, страница 108(N) включает в себя восемь строк, индексированных 0, 1, 2, 3, 4, 5, 6 и 7 в иллюстративных целях и для облегчения понимания. Хотя строки на Фиг. 2 проиндексированы последовательно с использованием числовых значений от 0 до 7, в контексте документа понятно, что можно использовать любую схему адресации сегментов или строк для более крупных областей памяти. Более того, как показано на Фиг. 2, каждую строку можно разбить на участок хранения данных и участок исправления ошибок. Участок хранения данных хранит объекты или части объектов, выделенных модулю 106 памяти, и участок исправления ошибок зарезервирован для возможного исправления ошибок для каждой отдельной строки. Когда исправление ошибок полностью исчерпано (например, участок исправления ошибок полностью заполнен на Фиг. 2), модуль 116 обнаружения идентифицирует строку как вышедшую из строя строку, как обсуждено выше. В альтернативных вариантах осуществления отдельные строки могут не включать в себя участок исправления ошибок.
Как показано на этапе 200(А), страница 108(N) является идеальной страницей, так как она еще не включает в себя каких-либо вышедших из строя строк, и каждая строка имеет полный набор доступных ресурсов исправления ошибок. Однако, так как системное программное обеспечение 102 и/или контроллер 104 памяти начинают выполнять запись 108(N) во время процессов выделения памяти, проводимых с течением времени, и из-за изменения в пределах отдельных ячеек, которые образует изнашиваемая память, отдельные строки в пределах страницы 108(N) могут иметь различный уровень износа.
Как показано на этапе 200(В), строка 1 и строка 3, помеченные "отказ 1" и "отказ 2", соответственно, исчерпали все доступные ресурсы исправления ошибок. Таким образом, модуль 116 обнаружения отказов может обнаружить, что эти строки вышли из строя, и в целях этого обсуждения предполагается, что строка 1 вышла из строя первой, а строка 3 вышла из строя второй после выхода из строя строки 1.
В различных вариантах осуществления, когда модуль 116 обнаружения отказов обнаруживает, что первая строка (например, строка 1) в пределах отдельной страницы 108(N) вышла из строя, модуль 118 кластеризации на этапе 200(С) создает метаданные 122 перераспределения и выделяет строку памяти (например, строку 7) в пределах страницы 108(N) для метаданных 122 перераспределения. Таким образом, когда первая строка 108(N) выходит из строя в результате износа (например, строка 1) модуль 118 кластеризации может также создать в то же самое время второй "ложный" отказ. Вторая строка с ложным отказом, которая хранит метаданные 122 перераспределения, может быть расположена на участке за пределами страницы 108(N) (например, строка 7). Модуль 118 кластеризации устанавливает метаданные 122 перераспределения на верхней части или на нижней части страницы 108(N), с тем чтобы не прерывалось непрерывное пространство для хранения данных.
В различных вариантах осуществления метаданные 122 перераспределения включают в себя ряд информационных записей, которые отражают число строк на странице 108(N). Например, метаданные 122 перераспределения имеют информационную запись 0, соответствующую строке 0, информационную запись 1, соответствующую строке 1, информационную запись 2, соответствующую строке 2 и т.д. Метаданные 122 перераспределения сконфигурированы для логической реорганизации строк в пределах страницы 108(N) путем переключения или смещения информационных записей таким образом, чтобы надежные или рабочие строки создавали логическое непрерывное пространство в пределах страницы 108(N), и ненадежные или вышедшие из строя строки логически перенаправлялись на участок, расположенный за пределом страницы 108(N), где были также установлены метаданные 122 перераспределения. Величина пространства для хранения данных, которое требуется для каждой информационной записи в метаданных 122 перераспределения, может быть равна числу битов, основывающемуся на логарифме от числа строк на странице 108(N). Так как метаданные 122 перераспределения управляют и перенаправляют пространство хранения данных для страницы 108(N), метаданные 122 перераспределения можно сохранять с избыточностью в случае, когда некоторые из битов, где были сохранены метаданные 122 перераспределения, отказали или повреждены. Более того, модуль 118 кластеризации можно выполнить с возможностью восстановления метаданных 122 перераспределения, если метаданные 122 перераспределения повреждены в результате тестирования аппаратных средств с помощью операций записи.
Как показано на этапе 200(D), модуль 118 кластеризации переключает информационную запись для строки 1 (например, фактический отказ на стадии 200(С)) на информационную запись для строки 6 в нижней части страницы. Таким образом, согласно метаданным 122 перераспределения с переключенными информационными записями, строка 6 становится логической вышедшей из строя строкой, и строка 1 становится логической рабочей строкой. Контроллер 104 памяти сохраняет данные в фактической строке 6, которая была логически переключена на строку 1, с тем чтобы создать непрерывное пространство для хранения данных.
Далее, при выходе из строя фактической строки 3, модуль 118 кластеризации переключает информационную запись для вышедшей из строя строки 3 на информационную запись для рабочей строки 5, которая представляет собой следующую рабочую строку, доступную для переключения на нее во время процесса перераспределения. Опять же, путем переключения информационных записей модуль 118 кластеризации создает логический участок непрерывного пространства памяти, который не является вызванным или разделенным вышедшими из строя строками памяти.
В различных вариантах осуществления каждую информационную запись в метаданных 122 перераспределения можно индексировать для отражения сдвига физического адреса (например, физическое местоположение первоначальной строки, связанной с информационной записью) и логического сдвига строки (например, физическое местоположение перераспределенной строки в случае, когда первоначальная строка вышла из строя). Таким образом, в различных вариантах осуществления метаданные 122 перераспределения обеспечивают преобразование адреса или местоположения путем указания того, что вышедшая из строя строка 1 была логически переключена на рабочую строку 6, и вышедшая из строя строка 3 была логически переключена на рабочую строку 5, как показано в виде реорганизации (например, переупорядочивания) информационных записей метаданных 122 перераспределения на стадии 200(D). Так как метаданные 122 перераспределения были созданы для и установлены на строке 7, информационная запись для строки 7 может быть пустой (например, "*") и не включать в себя какой-либо перенаправляющей информационной записи. В различных вариантах осуществления информационная запись для строки 7 может хранить избыточные метаданные перераспределения, как упомянуто выше.
Таким образом, исходные информационные записи в метаданных 122 перераспределения, соответствующие рабочим строкам на странице 108(N), на которые не были логически переключены вышедшие из строя строки, остаются такими же. Например, на стадии 200(D) информационные записи для строк 0, 2 и 4 в метаданных 122 перераспределения не были модифицированы или изменены, потому что они не поменялись местами с информационными записями для вышедшей из строя строки.
В различных вариантах осуществления метаданные 122 перераспределения используют указатель 202 границы, с тем чтобы модуль 118 кластеризации мог идентифицировать следующую доступную рабочую строку, чтобы логически поменять ее местами с вышедшей из строя строкой. Поскольку модуль 118 кластеризации логически объединяет вместе вышедшие из строя строки на участке, расположенном за пределами страницы 108(N), указатель 202 границы указывает на следующую рабочую строку, которая отделяет логическое непрерывное пространство от логического вышедшего из строя пространства. Например, на стадии 200(D) указатель 202 границы указывает на фактическую строку 4 как на следующую рабочую строку, которая ограничивает и отделяет логические отказы (например, строки 5, 6 и 7), объединенные в нижней части страницы 108(N). Соответственно, когда модуль 116 обнаружения отказов обнаруживает другой отказ строки, модуль 118 кластеризации реорганизует страницу 108(N) памяти путем логического перенаправления, в метаданных 122 перераспределения, адреса или индекса вышедшей из строя строки на строку, идентифицируемую указателем 202 границы. Модуль 118 кластеризации может затем продвигать указатель 202 границы на следующую рабочую строку и обновлять метаданные 122 перераспределения.
В различных вариантах осуществления каждая строка на странице 108(N) выполнена с индикатором, который дает возможность модулю 114 выделения памяти, во время начального доступа, идентифицировать, была ли логически перераспределена эта строка в процессе кластеризации. Например, индикатор может представлять собой один бит, зарезервированный на участке исправления ошибок, показывающий "да" в том случае, когда строка вышла из строя и была перераспределена, или "нет", когда строка не вышла из строя и данные, к которым осуществляется доступ, хранятся в строке. Когда строка вышла из строя, модуль 118 кластеризации может установить этот индикатор для указания того, что строка была перенаправлена или перераспределена. По меньшей мере в одном варианте осуществления модуль 114 выделения памяти и/или контроллер 104 памяти может определить местоположение метаданных 122 распределения, так как модуль 114 выделения памяти и/или контроллер 104 памяти знают, что метаданные 122 перераспределения можно расположить на первой строке в верхней части страницы 108(N) или на последней строке в нижней части страницы 108(N). В других вариантах осуществления индикатор для каждой строки можно дополнительно выполнить таким образом, чтобы он имел дополнительную возможность указывать метаданные 122 перераспределения в пределах страницы 108(N).
Исходя из различий между стадией 200(В) и стадией 200(D) видно, что процессы кластеризации и перераспределения, обсужденные в данном документе, логически создают большее количество непрерывного пространства для более крупного выделения объектам. Например, если бы модуль 114 выделения памяти должен был выделить память в окрестности вышедших из строя строк 1 и 3 на стадии 200(В), модуль 114 выделения памяти мог бы сохранить данные в 1) строке 0, 2) строке 2 или 3) строках 4-7 (например, четыре непрерывных строки). После выполнения процессов кластеризации и перераспределения модуль 114 выделения памяти может сохранить данные в логически рабочих строках 0-4 (например, пять непрерывных строк). Как упомянуто выше, страница 108(N) на Фиг. 2 включает в себя восемь строк в иллюстративных целях и для облегчения понимания. Соответственно, выгода и преимущества процессов кластеризации и перераспределения могут быть более очевидными за счет использования примеров, где имеется больше строк (например, 64 строки на странице), больше вышедших из строя строк, рассредоточенных в пределах страницы, и т.д.
Фиг. 3 иллюстрирует две соседние страницы 2N и 2N+1 300, которые хранятся в модуле 106 памяти. Для дальнейшей максимизации величины непрерывного пространства памяти, модуль 118 кластеризации можно выполнить с возможностью кластеризации вышедших из строя строк и метаданных 122 перераспределения на верхней части четных страниц (например, страниц 2N) в модуле 106 памяти и в нижней части нечетных страниц (например, страниц 2N+1) в модуле 106 памяти или наоборот. Таким образом, количество непрерывного пространства памяти может охватывать две последовательные страницы - нижнюю часть страницы 2N и верхнюю часть страницы 2N+1, как иллюстрировано на Фиг. 3.
В различных вариантах осуществления модуль 118 кластеризации может выполнить положительное или отрицательное приращение указателя 204 границы и организовать информационные записи в метаданных 122 перераспределения для каждой страницы 108(N) в зависимости от того, происходит ли кластеризация в верхней части страницы (например, метаданные 122 перераспределения сохраняются в строке 0) или в нижней части страницы (например, метаданные 122 перераспределения сохраняются в последней строке страницы, то есть строке 7 в примере по Фиг. 2).
Примеры, приведенные выше, в отношении Фиг. 2 и 3, описывают области перераспределения памяти в виде отдельных страниц, которые соответствуют областям системы памяти (например, страницы 108(1)…108(N)). Однако другие реализации процессов перераспределения и кластеризации памяти могут не использовать области перераспределения памяти, которые имеют такую же степень детализации, как и области системы памяти. Например, модуль 118 кластеризации может реализовать область перераспределения памяти, которая кратна числу областей памяти, используемых в модуле 106 аппаратной памяти. Таким образом, модуль 118 кластеризации может разместить метаданные 122 перераспределения, например, в верхней части или в нижней части каждой второй, четвертой, восьмой страницы. Более того, метаданные 122 перераспределения и указатель 102 границы можно сконфигурировать для ссылки на конкретную страницу, а также строку, которая была переключена. Это позволяет дополнительно устранить фрагментацию и создать более крупные участки непрерывной памяти.
По меньшей мере в одном варианте осуществления модуль 118 кластеризации можно выполнить с возможностью перехода с одного размера области перераспределения памяти (например, с одной страницы) на другой размер области перераспределения памяти (например, на восемь страниц). Например, модуль 118 кластеризации может изначально кластеризировать вышедшие из строя строки в соответствии с детализацией на уровне отдельной страницы, но после того, как каждая группа страниц будет иметь вышедшие из строя строки, модуль 118 кластеризации может, вместо этого, кластеризовать вышедшие из строя строки в соответствии с детализацией на уровне восьми страниц (например, область перераспределения памяти восьми страниц) устранить бóльшую фрагментацию. В данном случае, системное программное обеспечение 102 и контроллер 104 памяти позволяют затем, соответственно, реконфигурировать систему и обновить метаданные 122 перераспределения, чтобы отразить переход с одного размера области перераспределения памяти на другой размер области перераспределения памяти.
Иллюстративные процессы
Примерные операции описаны ниже со ссылкой на Фиг. 4 и 5. Процессы, иллюстрированные в виде блок-схемы логической последовательности операций, которая изображает последовательность операций, которую можно реализовать в виде аппаратных средств, программного обеспечения или их комбинации. В контексте программного обеспечения операции представляют собой машиноисполняемые инструкции, которые при их исполнении одним или более процессорами выполняют перечисленные операции. В общем машиноисполняемые инструкции включают в себя подпрограммы, программы, объекты, компоненты, модули, структуры данных и т.п., которые выполняют конкретные функции или реализуют конкретные абстрактные типы данных. Порядок, в котором описаны эти операции, не следует истолковывать как ограничивающий, и любое количество описанных операций можно объединить в любом порядке и/или параллельно для реализации процесса.
Фиг. 4 иллюстрирует примерный процесс 400, направленный на создание и/или обновление метаданных 122 перераспределения для отдельной страницы 108(N) в модуле 106 памяти. Например, примерный процесс 400 может быть связан с операцией записи, которая выполняется с помощью модуля 114 выделения памяти, расположенного в системном программном обеспечении 102, контроллере 104 памяти или их комбинации. Более того, контроллер 104 памяти может быть расположен в модуле 106 памяти или отдельно от модуля 106 памяти на стороне обработки системы наряду с системным программным обеспечением 102.
На этапе 402 контроллер 104 памяти принимает выданную инструкцию для записи, и контроллер 104 памяти пытается записать данные в строку на странице 108(N). Например, контроллер 104 памяти может принимать выданную инструкцию, когда иерархия кэш-памяти хочет исключить «грязную» (dirty) строку и поэтому запрашивает обратную запись. Контроллер 104 памяти можно затем выполнить с возможностью идентификации страницы 108(N) и строки для обратной записи.
На этапе 404 модуль 116 обнаружения отказов обнаруживает, что строка представляет собой вышедшую из строя строку. Например, модуль 116 обнаружения отказов обнаруживает и подтверждает, что строка является вышедшей из строя строкой и не является больше надежной для целей хранения, когда контроллер 104 памяти фактически записывает данные в строку и также временно сохраняет другую версию данных в буфере. Когда контроллер 104 памяти считывает данные обратно из строки, модуль 116 обнаружения отказов сравнивает считанные данные с другой версией данных, временно хранящихся в буфере. Если данные, считанные обратно из строки, не являются такими, как данные, временно хранящиеся в буфере, то модуль 116 обнаружения отказов определяет, что строка представляет собой вышедшую из строя строку.
На этапе 406 контроллер 104 памяти может передать отказ строки и данные, которые нельзя записать, в системное программное обеспечение 102. Например, контроллер 104 памяти может использовать буфер неудачных операций записи и сгенерированное прерывание для передачи информации об отказе в операционную систему. Контроллер 104 памяти передает эту информацию, так как вышедшие из строя строки на странице 108(N) могут содержать один или более объектов, которые используются компонентом управляемой среды исполнения или другим системным компонентом.
На этапе 408 модуль 114 выделения памяти системного программного обеспечения 102 может затем перевыделить или переместить, например, для управляемой среды выполнения, один или более объектов на странице 108(N) в другие участки памяти в модуле 106 памяти (например, на другие страницы). Это перевыделение освобождает всю страницу 108(N). В различных вариантах осуществления модуль 114 выделения памяти может затем запустить процесс перераспределения и инструктировать контроллер 104 памяти реорганизовать страницу 108(N) с помощью логической кластеризации вышедших из строя строк на участке, расположенном за пределами страницы 108(N).
Соответственно, на этапе 410 модуль 118 кластеризации контроллера 104 памяти создает и обновляет метаданные 122 перераспределения для страницы 108(N) и выполняет кластеризацию вышедших из строя строк на участке, расположенном за пределами страницы 108(N), как обсуждено выше в отношении Фиг. 2 и 3. Например, модуль 118 кластеризации может определить, является ли вышедшая из строя строка первой вышедшей из строя строкой для отдельной страницы 108(N). Если модулем 118 кластеризации определено, что вышедшая из строя строка является первой вышедшей из строя строкой, модуль 118 кластеризации создает метаданные 122 перераспределения для страницы 108(N) в соответствии с обсуждением, приведенным выше в отношении Фиг. 2 и 3. Соответственно, модуль 118 кластеризации может создать информационные записи для каждой строки на странице 108(N), реализовать "ложный" отказ на верхней части или в нижней части страницы 108(N), с тем чтобы метаданные 122 перераспределения можно было сохранить в пределах страницы 108(N), переключить информационную запись для вышедшей из строя строки на информационную запись для рабочей строки на верхней части или на нижней части страницы, следующей за метаданными 122 перераспределения, и установить индикатор на вышедшей из строя строке, чтобы указать, что вышедшая из строя строка была перераспределена. Таким образом, модуль 118 кластеризации начинает выполнять логическую кластеризацию вышедших из строя строк на участке, расположенном за пределами страницы (например, в верхней части или нижней части в зависимости от того, является ли страница четной или нечетной страницей в модуле 106 памяти), тем самым создавая большее количество непрерывного пространства на странице 108(N).
В различных вариантах осуществления, если модулем 118 кластеризации определено, что вышедшая из строя строка не является первой вышедшей из строя строкой, то модуль 118 кластеризации обращается к указателю 202 границы для определения следующей доступной рабочей строки, которая отделяет вышедший из строя кластер строк от логического непрерывного пространства памяти. Модуль 118 кластеризации может затем переключить информационную запись для последующей (например, после первой вышедшей из строя строки и "ложной" вышедшей из строя строки) вышедшей из строя строки на информационную запись для следующей доступной рабочей строки, идентифицируемой указателем 202 границы, и установить индикатор на последующей вышедшей из строя строке для указания того, что вышедшая из строя строка была перераспределена.
В различных вариантах осуществления, например, процесс 400 может повторяться каждый раз, когда выходит из строя строка в пределах отдельной страницы 108(N). Более того, в различных вариантах осуществления этот примерный процесс 400 выполняется для каждой из многочисленных различных страниц 108(1)…108(N), которые хранятся в модуле 106 памяти.
Фиг. 5 иллюстрирует примерный процесс 500, направленный на использование метаданных 122 перераспределения во время операции считывания памяти. Например, примерный процесс 500 может быть связан с операцией считывания, выдаваемой одним из процессорных ядер 110(1)…110(М) (или средством предварительной выборки), которая пропускает иерархию кэш-памяти и поэтому передается в контроллер 104 памяти, который будет производить считывание из модуля 116 памяти. Контроллер 104 памяти может быть расположен в модуле 106 памяти или отдельно от модуля 106 памяти на стороне обработки системы наряду с системным программным обеспечением 102.
На этапе 502 контроллер 104 памяти пытается считывать данные из строки на странице 108(N). Например, контроллер 104 памяти может принимать выданный из одного из процессорных ядер 110(1)…110(М) запрос доступа к объекту или части объекта, который хранится в модуле 106 памяти.
На этапе 504 контроллер 104 памяти идентифицирует строку в качестве перераспределенной строки (например, вышедшей из строя строки). По меньшей мере в одном варианте осуществления контроллер 104 памяти может определить, что строка представляет собой перераспределенную строку, путем обращения с использованием физического адреса к фактической строке, и проверить индикатор (например, один бит, зарезервированный на участке исправления ошибок), чтобы определить, что строка изношена и вышла из строя и что она была перераспределена.
В другом варианте осуществления контроллер 104 памяти хранит метаданные 122 перераспределения для одной или более страниц 108(1)…108(N) локальным образом в кэше 120 информации об отказах (например, метаданные 122 перераспределения для страниц, к которым в текущий момент времени осуществляется доступ страниц, к которым недавно осуществлялся доступ, и/или страниц, к которым предположительно будет осуществляться доступ в будущем), и контроллер памяти и/или модуль 114 выделения памяти может проверить метаданные 122 перераспределения, которые хранятся в кэше 120 информации об отказах, чтобы определить, была ли перераспределена строка, и определить перенаправление адреса.
На этапе 506 контроллер 104 памяти обращается к метаданным 122 перераспределения и использует метаданные 122 перераспределения, чтобы определить перенаправленную новую строку, которая была локальным образом переключена с вышедшей из строя строки и которая фактически хранит данные или часть объекта (например, строки 5 и 6 на Фиг. 2).
На этапе 508 контроллер 104 памяти считывает данные из новой строки.
Примерный процесс 500 по Фиг. 5 можно также повторять каждый раз, когда строка в пределах отдельной страницы 108(N) связана с доступом для чтения или запросом на чтение.
В различных вариантах, где метаданные 122 перераспределения кэшируются в кэше 120 информации об отказах, который может поддерживаться в контроллере 106 памяти, системная архитектура может иметь возможность сохранения времени и энергии при выполнении доступа для чтения. Например, для того чтобы контроллер 104 памяти располагал и считывал данные из новой строки, когда метаданные 122 перераспределения не хранятся в кэше 120 информации об отказах, контроллер 104 памяти может понадобиться осуществить доступ к модулю 106 памяти в трех различных случаях: (1) первый доступ, которым идентифицируется, что первоначальная строка была перераспределена, (2) второй доступ к местоположению метаданных 122 перераспределения в верхней или нижней части страницы и (3) третий доступ к перенаправленной строке, на которую указывают метаданные 122 перераспределения. Это позволяет увеличить время задержки на считывание для системы. Напротив, когда метаданные 122 перераспределения кэшируются в кэше 120 информации об отказах, контроллер 104 памяти может определить локальным образом перенаправление и затем выполнить один доступ к модулю 106 памяти для считывания данных из новой строки.
Примерные процессы, иллюстрированные на Фиг. 4 и Фиг. 5, можно реализовать с помощью системного программного обеспечения 102, контроллера 104 памяти или их комбинации совместно с управляемой средой исполнения. Более того, в дополнение к выполнению процесса кластеризации и перераспределения, которые уменьшают или устраняют фрагментацию, как обсуждено выше, системное программное обеспечение 102 и/или контроллер 104 памяти можно также выполнить с возможностью отслеживания отказов строк на отдельных страницах 108(1)…108(N) и сохранять карту отказов (например, в кэше 120 информации об отказах). В различных вариантах осуществления отказы строк могут сообщаться в системы со средой исполнения во избежание отказов строк при выделении памяти.
В некоторых вариантах осуществления процессы кластеризации и перераспределения, обсужденные в данном документе, могут работать совместно с другими технологиями обработки отказов, выполняемыми для систем памяти. Например, контроллер 104 памяти может осуществлять доступ к метаданным 122 перераспределения для одной или более страниц 108(1)…108(N) после перераспределения и кластеризации вышедших из строя строк в пределах отдельных страниц. Так как, по меньшей мере, некоторые страницы 108(1)…108(N) не являются больше идеальными, а скорее являются несовершенными, так как они имеют вышедшие из строя строки, система программного обеспечения 102 или контроллер 104 памяти может объединить или разделить страницы, основываясь на том, являются ли страницы идеальными или несовершенными, и количество непрерывного пространства, которое может быть обеспечено несовершенной страницей, может быть сообщено, например, с управляемой средой исполнения. В другом примере, контроллер 104 памяти может перевыделить данные, которые хранятся на странице 108(1)…108(N), в случае когда строка выходит из строя.
В различных вариантах осуществления процессы перераспределения и кластеризации, описанные в данном документе, можно также использовать в процессе сбора ненужных данных (мусора), который высвобождает строки памяти и перемещает данные и объекты в пределах модуля 106 памяти. Например, средство сбора ненужных данных может использовать карту отказов, полученную из системного программного обеспечения 102 при выделении памяти. В результате, средство сбора ненужных данных позволяет избежать вышедших из строя строк при выделении памяти в процессе сбора ненужных данных.
Хотя страницы 108(1)…108(N) в модуле 106 памяти, обсужденные в данном документе, можно описать как PCM, следует понимать, что технологии, описанные в данном документе, также применимы и к другим типам изнашиваемой памяти и что области памяти и сегменты памяти можно изменять, основываясь на системной архитектуре (например, сегменты могут иметь большую или меньшую степень детализации по сравнению со строками, и области могут иметь большую или меньшую детализацию по сравнению со страницами). Более того, модуль 106 памяти и любая другая память, которая может хранить системное программное обеспечение 102 и/или контроллер 104 памяти, могут также содержать машиночитаемые носители информации, включающие в себя по меньшей мере два типа машиночитаемых носителей информации, а именно компьютерные носители информации и коммуникационные носители информации.
Компьютерные носители информации включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или с помощью любой технологии для хранения информации, такой как машиночитаемые инструкции, структуры данных, модули программ или другие данные. Компьютерные носители информации включают в себя, но не ограничиваются этим, оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память или любую другую технологию памяти, постоянное запоминающее устройство на компакт-диске (CD-ROM), цифровые универсальные диски (DVD) или другое оптическое запоминающее устройство, кассеты с магнитной лентой, магнитную ленту, запоминающее устройство на основе магнитного диска или другие магнитные запоминающие устройства, или любую другую непередающую среду, которую можно использовать для хранения информации для доступа к вычислительному или серверному устройству.
Напротив, коммуникационные носители информации позволяют реализовать машиночитаемые инструкции, структуры данных, модули программ или другие данные в виде модулированного сигнала данных, такого как несущая волна или другой механизм передачи. Как определено в данном в данном документе, компьютерные носители информации не исключают коммуникационные носители информации.
Заключение
Хотя изобретение было описано на языке, характерном для структурных признаков и/или методологических действий, должно быть понятно, что объем изобретения, определяемый прилагаемой формулой изобретения, необязательно ограничен конкретными признаками или операциями, описанными выше. Скорее, конкретные признаки и операции, описанные выше, приведены в виде примеров для реализации пунктов формулы изобретения.
Claims (33)
1. Система для обработки сегментов памяти, вышедших из строя, содержащая:
аппаратный модуль памяти, включающий в себя множество областей памяти, причем отдельные области памяти включают в себя множество сегментов;
модуль обнаружения отказов, который обнаруживает вышедший из строя сегмент в области памяти из данного множества областей памяти;
модуль кластеризации, который логически кластеризует вышедший из строя сегмент посредством перераспределения вышедшего из строя сегмента в рабочий сегмент, расположенный на краю упомянутой области памяти, причем рабочий сегмент выбирается для максимизации непрерывного пространства памяти в пределах данной области памяти.
2. Система по п.1, в которой модуль кластеризации дополнительно создает метаданные перераспределения для области памяти и сохраняет метаданные перераспределения для области памяти в пределах области памяти, причем метаданные перераспределения включают в себя информационную запись для каждого из множества сегментов в области памяти.
3. Система по п.2, в которой модуль кластеризации сохраняет метаданные перераспределения в первом сегменте верхней части области памяти или в последнем сегменте в нижней части области памяти.
4. Система по п.2, в которой модуль кластеризации переключает, в метаданных перераспределения, первую информационную запись, связанную с вышедшим из строя сегментом, на вторую информационную запись, связанную с рабочим сегментом.
5. Система по п.1, в которой модуль кластеризации дополнительно создает метаданные перераспределения для области перераспределения памяти, которая включает в себя упомянутую область памяти и дополнительную область памяти из упомянутого множества областей памяти и сохраняет метаданные перераспределения для области перераспределения памяти в верхней части упомянутой области памяти или в нижней части упомянутой области памяти, причем метаданные перераспределения включают в себя информационную запись для каждого из сегментов в упомянутых области памяти и дополнительной области памяти, и упомянутое непрерывное пространство памяти охватывает эти область памяти и дополнительную область памяти.
6. Система по п.1, при этом рабочий сегмент, расположенный на краю области памяти, представляет собой по меньшей мере одно из самого верхнего имеющегося в наличии рабочего сегмента области памяти и самого нижнего имеющегося в наличии рабочего сегмента области памяти.
7. Система по п.1, в которой аппаратный модуль памяти содержит память на основе фазового перехода.
8. Система по п.1, дополнительно содержащая модуль выделения памяти, который выделяет пространство хранения в упомянутом множестве сегментов памяти, при этом модуль выделения памяти представляет собой часть операционной системы.
9. Система по п.1, в которой по меньшей мере один из модуля обнаружения отказов и модуля кластеризации представляет собой часть контроллера памяти.
10. Система по п.9, в которой контроллер памяти размещен на аппаратном модуле памяти.
11. Система по п.1, в которой каждая из упомянутого множества областей памяти содержит страницу памяти и каждый сегмент содержит строку памяти.
12. Система по п.1, в которой модуль кластеризации использует указатель границы, чтобы идентифицировать рабочий сегмент как следующий логический рабочий сегмент, смежный с последним логическим вышедшим из строя сегментом, кластеризованным на упомянутый край области памяти.
13. Система по п.1, в которой модуль кластеризации создает большую величину пространства непрерывной памяти в пределах упомянутого множества областей памяти.
14. Способ обработки сегментов памяти, вышедших из строя, содержащий этапы, на которых:
принимают запрос доступа к данным, хранящимся в сегменте, который является частью области памяти, поддерживаемой в модуле памяти;
идентифицируют данный сегмент в качестве вышедшего из строя сегмента, который был перераспределен в рабочий сегмент, расположенный на краю упомянутой области памяти, чтобы максимизировать непрерывное пространство памяти в пределах данной области памяти;
обращаются к метаданным перераспределения, которые показывают местоположение на упомянутом краю области памяти для рабочего сегмента; и
считывают данные из рабочего сегмента.
15. Способ по п.14, в котором:
метаданные перераспределения хранятся в кэше, локальном по отношению к контроллеру памяти;
при упомянутой идентификации сегмента в качестве вышедшего из строя сегмента проверяют метаданные перераспределения, хранящиеся в этом кэше, локальном по отношению к контроллеру памяти; и
упомянутое обращение к метаданным перераспределения, которые показывают упомянутое местоположение на краю области памяти для рабочего сегмента, выполняется локальным образом в контроллере памяти.
16. Способ по п.14, в котором метаданные перераспределения хранятся в верхней части упомянутой области памяти или в нижней части упомянутой области памяти.
17. Способ по п.14, в котором метаданные перераспределения кластеризуют вышедшие из строя строки в верхнюю часть упомянутой области памяти или в нижнюю часть упомянутой области памяти.
18. Способ обработки сегментов памяти, вышедших из строя, содержащий этапы, на которых:
принимают запрос записи данных в сегмент в области памяти аппаратного модуля памяти;
определяют, что этот сегмент является вышедшим из строя сегментом; и
создают метаданные перераспределения, которые логически переключают вышедший из строя сегмент на рабочий сегмент, расположенный на краю упомянутой области памяти, чтобы создать больше непрерывного пространства памяти в данной области памяти.
19. Способ по п.18, в котором метаданные перераспределения логически кластеризуют один или более вышедших из строя сегментов в верхнюю часть упомянутой области памяти или в нижнюю часть упомянутой области памяти.
20. Способ по п.18, в которой метаданные перераспределения включают в себя указатель границы, который идентифицирует следующий используемый сегмент, на который должен быть переключен следующий вышедший из строя сегмент.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/678,941 US9032244B2 (en) | 2012-11-16 | 2012-11-16 | Memory segment remapping to address fragmentation |
US13/678,941 | 2012-11-16 | ||
PCT/US2013/070365 WO2014078695A1 (en) | 2012-11-16 | 2013-11-15 | Memory segment remapping to address fragmentation |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2015118415A RU2015118415A (ru) | 2016-12-10 |
RU2666241C2 true RU2666241C2 (ru) | 2018-09-06 |
Family
ID=49765651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2015118415A RU2666241C2 (ru) | 2012-11-16 | 2013-11-15 | Перераспределение сегментов памяти для решения проблемы фрагментации |
Country Status (12)
Country | Link |
---|---|
US (1) | US9032244B2 (ru) |
EP (1) | EP2920700B1 (ru) |
JP (1) | JP6518191B2 (ru) |
KR (1) | KR102152238B1 (ru) |
CN (1) | CN104798051B (ru) |
AU (1) | AU2013344519B2 (ru) |
BR (1) | BR112015010543B1 (ru) |
CA (1) | CA2887502C (ru) |
MX (1) | MX348617B (ru) |
RU (1) | RU2666241C2 (ru) |
TW (1) | TW201428758A (ru) |
WO (1) | WO2014078695A1 (ru) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9026719B2 (en) * | 2012-11-15 | 2015-05-05 | Elwha, Llc | Intelligent monitoring for computation in memory |
US8966310B2 (en) | 2012-11-15 | 2015-02-24 | Elwha Llc | Redundancy for loss-tolerant data in non-volatile memory |
US9582465B2 (en) | 2012-11-15 | 2017-02-28 | Elwha Llc | Flexible processors and flexible memory |
US9323499B2 (en) | 2012-11-15 | 2016-04-26 | Elwha Llc | Random number generator functions in memory |
US8996951B2 (en) | 2012-11-15 | 2015-03-31 | Elwha, Llc | Error correction with non-volatile memory on an integrated circuit |
US9442854B2 (en) | 2012-11-15 | 2016-09-13 | Elwha Llc | Memory circuitry including computational circuitry for performing supplemental functions |
US8925098B2 (en) | 2012-11-15 | 2014-12-30 | Elwha Llc | Data security and access tracking in memory |
KR102116364B1 (ko) * | 2013-11-18 | 2020-05-28 | 삼성전자주식회사 | 메모리 시스템 및 그에 따른 반도체 메모리의 결함 메모리 셀 관리방법 |
CN105359114B (zh) * | 2014-03-31 | 2018-09-18 | 甲骨文国际公司 | 用于在寻址方案之间进行迁移的方法和*** |
US9678864B2 (en) * | 2014-12-03 | 2017-06-13 | Seagate Technology Llc | Data reallocation upon detection of errors |
US9760288B2 (en) | 2015-02-18 | 2017-09-12 | International Business Machines Corporation | Determining causes of external fragmentation of memory |
US10802936B2 (en) | 2015-09-14 | 2020-10-13 | Hewlett Packard Enterprise Development Lp | Memory location remapping and wear-levelling |
US9760303B2 (en) * | 2015-09-29 | 2017-09-12 | Sandisk Technologies Llc | Partially-bad block operation in 3-D nonvolatile memory |
US10002042B2 (en) | 2015-10-22 | 2018-06-19 | Sandisk Technologies Llc | Systems and methods of detecting errors during read operations and skipping word line portions |
KR102420897B1 (ko) * | 2016-03-17 | 2022-07-18 | 에스케이하이닉스 주식회사 | 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법 |
KR20180062246A (ko) | 2016-11-30 | 2018-06-08 | 삼성전자주식회사 | 재분배기를 포함하는 메모리 시스템 |
US10198383B2 (en) | 2016-12-31 | 2019-02-05 | Sandisk Technologies Llc | Systems and methods of adjusting an interface bus speed |
CN107068195B (zh) * | 2017-05-03 | 2020-06-02 | 上海交通大学 | 带有故障修复装置的三维芯片及故障修复和数据读取方法 |
US10466920B2 (en) | 2017-08-17 | 2019-11-05 | Western Digital Technologies, Inc. | Method for maximizing frequency while checking data integrity on a physical interface bus |
US10924113B2 (en) | 2017-08-17 | 2021-02-16 | Western Digital Technologies, Inc. | Dynamic calibration of frequency and power storage interface |
KR102388615B1 (ko) * | 2017-11-13 | 2022-04-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
CN112328510B (zh) * | 2020-10-29 | 2022-11-29 | 上海兆芯集成电路有限公司 | 进阶主机控制器及其控制方法 |
TWI768633B (zh) * | 2020-12-31 | 2022-06-21 | 大陸商星宸科技股份有限公司 | 記憶體裝置、影像處理晶片與記憶體控制方法 |
CN112711548B (zh) | 2021-01-11 | 2023-05-16 | 星宸科技股份有限公司 | 内存装置、图像处理芯片以及内存控制方法 |
CN113436669A (zh) * | 2021-06-24 | 2021-09-24 | 深圳市晶存科技有限公司 | LPDDR的bank地址映射方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5535328A (en) * | 1989-04-13 | 1996-07-09 | Sandisk Corporation | Non-volatile memory system card with flash erasable sectors of EEprom cells including a mechanism for substituting defective cells |
RU2115160C1 (ru) * | 1993-05-14 | 1998-07-10 | Михаил Михайлович Татур | Устройство динамического изменения адресов памяти |
US20070103977A1 (en) * | 2005-11-08 | 2007-05-10 | Conley Kevin M | Retargetable memory cell redundancy methods |
WO2011005663A1 (en) * | 2009-07-06 | 2011-01-13 | Sandisk Corporation | Bad column management with bit information in non-volatile memory systems |
WO2011019602A2 (en) * | 2009-08-11 | 2011-02-17 | Sandisk Corporation | Controller and method for providing read status and spare block management information in a flash memory system |
Family Cites Families (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4479214A (en) | 1982-06-16 | 1984-10-23 | International Business Machines Corporation | System for updating error map of fault tolerant memory |
US4547882A (en) | 1983-03-01 | 1985-10-15 | The Board Of Trustees Of The Leland Stanford Jr. University | Error detecting and correcting memories |
US4752914A (en) | 1984-05-31 | 1988-06-21 | Fujitsu Limited | Semiconductor integrated circuit with redundant circuit replacement |
JPS62177768A (ja) | 1986-01-31 | 1987-08-04 | Sony Corp | エラ−訂正装置 |
JPH02310898A (ja) | 1989-05-25 | 1990-12-26 | Nec Corp | メモリ回路 |
US5295258A (en) | 1989-12-22 | 1994-03-15 | Tandem Computers Incorporated | Fault-tolerant computer system with online recovery and reintegration of redundant components |
US5161157A (en) | 1990-03-12 | 1992-11-03 | Xicor, Inc. | Field-programmable redundancy apparatus for memory arrays |
US5233614A (en) | 1991-01-07 | 1993-08-03 | International Business Machines Corporation | Fault mapping apparatus for memory |
JPH04246745A (ja) | 1991-02-01 | 1992-09-02 | Canon Inc | 情報処理装置及びその方法 |
US5379415A (en) | 1992-09-29 | 1995-01-03 | Zitel Corporation | Fault tolerant memory system |
US5588112A (en) | 1992-12-30 | 1996-12-24 | Digital Equipment Corporation | DMA controller for memory scrubbing |
GB9305801D0 (en) | 1993-03-19 | 1993-05-05 | Deans Alexander R | Semiconductor memory system |
US5553263A (en) | 1993-07-16 | 1996-09-03 | Unisys Corporation | Cache memory system with fault tolerance having concurrently operational cache controllers processing disjoint groups of memory |
JPH08169084A (ja) | 1994-12-16 | 1996-07-02 | Toray Ind Inc | 金属/フイルム積層体の製造方法 |
US5440710A (en) | 1994-03-08 | 1995-08-08 | Exponential Technology, Inc. | Emulation of segment bounds checking using paging with sub-page validity |
US5754817A (en) | 1994-09-29 | 1998-05-19 | Intel Corporation | Execution in place of a file stored non-contiguously in a non-volatile memory |
JPH09282862A (ja) | 1996-04-11 | 1997-10-31 | Mitsubishi Electric Corp | メモリカード |
US5864569A (en) | 1996-10-18 | 1999-01-26 | Micron Technology, Inc. | Method and apparatus for performing error correction on data read from a multistate memory |
JPH10302497A (ja) | 1997-04-28 | 1998-11-13 | Fujitsu Ltd | 不良アドレスの代替方法、半導体記憶装置、及び、半導体装置 |
US6000006A (en) | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
US6112286A (en) | 1997-09-19 | 2000-08-29 | Silicon Graphics, Inc. | Reverse mapping page frame data structures to page table entries |
US6381682B2 (en) | 1998-06-10 | 2002-04-30 | Compaq Information Technologies Group, L.P. | Method and apparatus for dynamically sharing memory in a multiprocessor system |
JP3702080B2 (ja) * | 1997-11-28 | 2005-10-05 | 株式会社東芝 | メモリ管理装置及び情報処理装置 |
US6560725B1 (en) | 1999-06-18 | 2003-05-06 | Madrone Solutions, Inc. | Method for apparatus for tracking errors in a memory system |
JP4316085B2 (ja) * | 1999-12-28 | 2009-08-19 | 株式会社東芝 | 半導体集積回路装置及び集積回路システム |
US6754784B1 (en) | 2000-02-01 | 2004-06-22 | Cirrus Logic, Inc. | Methods and circuits for securing encached information |
US6477612B1 (en) | 2000-02-08 | 2002-11-05 | Microsoft Corporation | Providing access to physical memory allocated to a process by selectively mapping pages of the physical memory with virtual memory allocated to the process |
US6581142B1 (en) | 2000-09-01 | 2003-06-17 | International Business Machines Corporation | Computer program product and method for partial paging and eviction of microprocessor instructions in an embedded computer |
US6766472B2 (en) | 2000-09-22 | 2004-07-20 | Microsoft Corporation | Systems and methods for replicating virtual memory on a host computer and debugging using the replicated memory |
KR100484147B1 (ko) | 2002-07-26 | 2005-04-18 | 삼성전자주식회사 | 플래시 메모리 관리 방법 |
US7197662B2 (en) | 2002-10-31 | 2007-03-27 | Ring Technology Enterprises, Llc | Methods and systems for a storage system |
KR100526186B1 (ko) * | 2003-04-04 | 2005-11-03 | 삼성전자주식회사 | 플래시 메모리의 오류블록 관리방법 및 장치 |
US7509543B2 (en) | 2003-06-17 | 2009-03-24 | Micron Technology, Inc. | Circuit and method for error test, recordation, and repair |
US7107411B2 (en) | 2003-12-16 | 2006-09-12 | International Business Machines Corporation | Apparatus method and system for fault tolerant virtual memory management |
US20050144516A1 (en) * | 2003-12-30 | 2005-06-30 | Gonzalez Carlos J. | Adaptive deterministic grouping of blocks into multi-block units |
US20050193283A1 (en) | 2003-12-30 | 2005-09-01 | Reinhardt Steven K. | Buffering unchecked stores for fault detection in redundant multithreading systems using speculative memory support |
US7322002B2 (en) | 2004-05-26 | 2008-01-22 | Micron Technology, Inc. | Erasure pointer error correction |
EP1607984B1 (en) | 2004-06-14 | 2007-08-15 | STMicroelectronics S.r.l. | Method for managing bad memory blocks in a nonvolatile memory device, and nonvolatile memory device implementing the management method |
KR100622349B1 (ko) * | 2004-08-04 | 2006-09-14 | 삼성전자주식회사 | 불량 블록 관리 기능을 가지는 플레시 메모리 장치 및플레시 메모리 장치의 불량 블록 관리 방법. |
TW200615963A (en) | 2004-10-07 | 2006-05-16 | Amic Technology Corp | Memory structure which having repair function and its repair method |
US7415644B2 (en) | 2004-10-22 | 2008-08-19 | International Business Machines Corporation | Self-repairing of microprocessor array structures |
US7596585B2 (en) | 2004-11-03 | 2009-09-29 | Honeywell International Inc. | Object replication using information quality of service |
US7581152B2 (en) | 2004-12-22 | 2009-08-25 | Intel Corporation | Fault free store data path for software implementation of redundant multithreading environments |
US7468993B2 (en) | 2005-01-14 | 2008-12-23 | International Business Machines Corporation | Dynamic reconfiguration of solid state memory device to replicate and time multiplex data over multiple data interfaces |
US8200700B2 (en) | 2005-02-01 | 2012-06-12 | Newsilike Media Group, Inc | Systems and methods for use of structured and unstructured distributed data |
WO2007014296A2 (en) | 2005-07-25 | 2007-02-01 | Parascale, Inc. | Scalable distributed file storage access and management |
US7681109B2 (en) | 2005-10-13 | 2010-03-16 | Ramot At Tel Aviv University Ltd. | Method of error correction in MBC flash memory |
US8386702B2 (en) | 2005-10-27 | 2013-02-26 | Hewlett-Packard Development Company, L.P. | Memory controller |
CN101331554A (zh) * | 2005-11-08 | 2008-12-24 | 桑迪士克股份有限公司 | 具有可重定目标的存储器单元冗余的存储器 |
KR100755700B1 (ko) * | 2005-12-27 | 2007-09-05 | 삼성전자주식회사 | 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법 |
KR100660287B1 (ko) | 2005-12-29 | 2006-12-20 | 동부일렉트로닉스 주식회사 | 상변화 메모리 및 그 제조 방법 |
US7739474B2 (en) | 2006-02-07 | 2010-06-15 | International Business Machines Corporation | Method and system for unifying memory access for CPU and IO operations |
US7610523B1 (en) | 2006-02-09 | 2009-10-27 | Sun Microsystems, Inc. | Method and template for physical-memory allocation for implementing an in-system memory test |
KR20090053960A (ko) | 2006-04-06 | 2009-05-28 | 가부시키가이샤 어드밴티스트 | 시험 장치 및 시험 방법 |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
JP4821426B2 (ja) | 2006-05-11 | 2011-11-24 | 富士ゼロックス株式会社 | エラー回復プログラム、エラー回復装置及びコンピュータシステム |
US7511646B2 (en) | 2006-05-15 | 2009-03-31 | Apple Inc. | Use of 8-bit or higher A/D for NAND cell value |
KR100897285B1 (ko) | 2006-10-02 | 2009-05-14 | 삼성전자주식회사 | 멀티칩 및 그것의 리페어 방법 |
EP2077502A4 (en) | 2006-10-27 | 2012-05-09 | Fujitsu Ltd | APPARATUS FOR PROCESSING ADDRESS LINES ABNORMALITY, METHOD FOR PROCESSING ADDRESS LINES ABNORMALITIES, PROGRAM FOR PROCESSING ADDRESS LINE DEFECTS, INFORMATION PROCESSING APPARATUS AND MEMORY CONTROL UNIT |
WO2008099786A1 (ja) | 2007-02-13 | 2008-08-21 | Nec Corporation | メモリ障害復旧方法、情報処理装置およびプログラム |
US8380944B2 (en) * | 2007-03-01 | 2013-02-19 | Douglas Dumitru | Fast block device and methodology |
US7996710B2 (en) * | 2007-04-25 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Defect management for a semiconductor memory system |
US7958303B2 (en) | 2007-04-27 | 2011-06-07 | Gary Stephen Shuster | Flexible data storage system |
US20090013148A1 (en) | 2007-07-03 | 2009-01-08 | Micron Technology, Inc. | Block addressing for parallel memory arrays |
US7945815B2 (en) | 2007-08-14 | 2011-05-17 | Dell Products L.P. | System and method for managing memory errors in an information handling system |
US7675776B2 (en) * | 2007-12-21 | 2010-03-09 | Spansion, Llc | Bit map control of erase block defect list in a memory |
US7917689B2 (en) | 2007-12-28 | 2011-03-29 | Intel Corporation | Methods and apparatuses for nonvolatile memory wear leveling |
US7843746B2 (en) | 2007-12-31 | 2010-11-30 | Qimonda Ag | Method and device for redundancy replacement in semiconductor devices using a multiplexer |
WO2009117251A1 (en) | 2008-03-19 | 2009-09-24 | Rambus Inc. | Optimizing storage of common patterns in flash memory |
US8156392B2 (en) | 2008-04-05 | 2012-04-10 | Fusion-Io, Inc. | Apparatus, system, and method for bad block remapping |
US8180996B2 (en) | 2008-05-15 | 2012-05-15 | Calxeda, Inc. | Distributed computing system with universal address system and method |
US8195981B2 (en) | 2008-06-03 | 2012-06-05 | International Business Machines Corporation | Memory metadata used to handle memory errors without process termination |
JP2010009383A (ja) | 2008-06-27 | 2010-01-14 | Fujitsu Ltd | メモリ装置、および情報処理システム |
US7864578B2 (en) | 2008-06-30 | 2011-01-04 | Kabushiki Kaisha Toshiba | Semiconductor memory repairing a defective bit and semiconductor memory system |
US20100037102A1 (en) | 2008-08-08 | 2010-02-11 | Seagate Technology Llc | Fault-tolerant non-volatile buddy memory structure |
KR101535460B1 (ko) | 2008-08-25 | 2015-07-10 | 삼성전자주식회사 | 배드 블록 리맵핑 기능을 갖는 불휘발성 메모리 장치 및 그배드 블록 리맵핑 방법 |
US8635603B2 (en) | 2008-10-21 | 2014-01-21 | International Business Machines Corporation | Handling debugger breakpoints in a shared instruction system |
US8259498B2 (en) | 2008-12-08 | 2012-09-04 | Infinite Memory Ltd. | Continuous address space in non-volatile-memories (NVM) using efficient management methods for array deficiencies |
US20100169602A1 (en) | 2008-12-29 | 2010-07-01 | Jared E Hulbert | Method and Apparatus for Efficient Memory Placement |
US8386883B2 (en) | 2009-02-24 | 2013-02-26 | International Business Machines Corporation | Lengthening life of a limited life memory |
US8166276B2 (en) | 2009-02-27 | 2012-04-24 | Advanced Micro Devices, Inc. | Translate and verify instruction for a processor |
US8095765B2 (en) * | 2009-03-04 | 2012-01-10 | Micron Technology, Inc. | Memory block management |
US20100251013A1 (en) | 2009-03-26 | 2010-09-30 | Inventec Corporation | Method for processing bad block in redundant array of independent disks |
KR20100115970A (ko) | 2009-04-21 | 2010-10-29 | 삼성전자주식회사 | 배드 셀 관리 방법과 그 장치 |
US8255613B2 (en) | 2009-04-30 | 2012-08-28 | International Business Machines Corporation | Wear-leveling and bad block management of limited lifetime memory devices |
US8719652B2 (en) | 2009-05-12 | 2014-05-06 | Stec, Inc. | Flash storage device with read disturb mitigation |
KR20110024832A (ko) | 2009-09-03 | 2011-03-09 | 주식회사 하이닉스반도체 | 데이터 머지 효율이 향상된 반도체 스토리지 시스템 및 그 제어 방법 |
JP5377182B2 (ja) | 2009-09-10 | 2013-12-25 | 株式会社東芝 | 制御装置 |
WO2011055407A1 (en) | 2009-11-04 | 2011-05-12 | Hitachi, Ltd. | Flash memory module |
US8255742B2 (en) | 2009-11-18 | 2012-08-28 | Microsoft Corporation | Dynamically replicated memory |
US8176235B2 (en) | 2009-12-04 | 2012-05-08 | International Business Machines Corporation | Non-volatile memories with enhanced write performance and endurance |
US8443261B2 (en) | 2009-12-11 | 2013-05-14 | Vmware, Inc. | Transparent recovery from hardware memory errors |
US8238178B2 (en) | 2010-02-12 | 2012-08-07 | Taiwan Semiconductor Manufacturing Company, Ltd. | Redundancy circuits and operating methods thereof |
US8589766B2 (en) | 2010-02-24 | 2013-11-19 | Apple Inc. | Codeword remapping schemes for non-volatile memories |
US8201024B2 (en) | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
US8839053B2 (en) | 2010-05-27 | 2014-09-16 | Microsoft Corporation | Error correcting pointers for non-volatile storage |
US9092357B2 (en) | 2010-10-29 | 2015-07-28 | Microsoft Technology Licensing, Llc | Remapping of inoperable memory blocks |
US8639993B2 (en) | 2010-11-11 | 2014-01-28 | Microsoft Corporation | Encoding data to enable it to be stored in a storage block that includes at least one storage failure |
US8688954B2 (en) | 2011-08-26 | 2014-04-01 | Microsoft Corporation | Remapping inoperable memory blocks using pointers |
-
2012
- 2012-11-16 US US13/678,941 patent/US9032244B2/en active Active
-
2013
- 2013-10-03 TW TW102135878A patent/TW201428758A/zh unknown
- 2013-11-15 MX MX2015006179A patent/MX348617B/es active IP Right Grant
- 2013-11-15 BR BR112015010543-2A patent/BR112015010543B1/pt active IP Right Grant
- 2013-11-15 CN CN201380060185.9A patent/CN104798051B/zh active Active
- 2013-11-15 EP EP13805639.5A patent/EP2920700B1/en active Active
- 2013-11-15 KR KR1020157016015A patent/KR102152238B1/ko active IP Right Grant
- 2013-11-15 CA CA2887502A patent/CA2887502C/en active Active
- 2013-11-15 AU AU2013344519A patent/AU2013344519B2/en active Active
- 2013-11-15 JP JP2015542836A patent/JP6518191B2/ja active Active
- 2013-11-15 RU RU2015118415A patent/RU2666241C2/ru active
- 2013-11-15 WO PCT/US2013/070365 patent/WO2014078695A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5535328A (en) * | 1989-04-13 | 1996-07-09 | Sandisk Corporation | Non-volatile memory system card with flash erasable sectors of EEprom cells including a mechanism for substituting defective cells |
RU2115160C1 (ru) * | 1993-05-14 | 1998-07-10 | Михаил Михайлович Татур | Устройство динамического изменения адресов памяти |
US20070103977A1 (en) * | 2005-11-08 | 2007-05-10 | Conley Kevin M | Retargetable memory cell redundancy methods |
WO2011005663A1 (en) * | 2009-07-06 | 2011-01-13 | Sandisk Corporation | Bad column management with bit information in non-volatile memory systems |
WO2011019602A2 (en) * | 2009-08-11 | 2011-02-17 | Sandisk Corporation | Controller and method for providing read status and spare block management information in a flash memory system |
Also Published As
Publication number | Publication date |
---|---|
CA2887502A1 (en) | 2014-05-22 |
US20140143593A1 (en) | 2014-05-22 |
EP2920700B1 (en) | 2019-09-25 |
MX348617B (es) | 2017-06-21 |
WO2014078695A1 (en) | 2014-05-22 |
AU2013344519B2 (en) | 2018-11-22 |
BR112015010543B1 (pt) | 2021-11-30 |
BR112015010543A2 (pt) | 2017-12-05 |
KR20150087319A (ko) | 2015-07-29 |
TW201428758A (zh) | 2014-07-16 |
CA2887502C (en) | 2020-04-28 |
JP2015535116A (ja) | 2015-12-07 |
JP6518191B2 (ja) | 2019-05-22 |
AU2013344519A1 (en) | 2015-04-16 |
RU2015118415A (ru) | 2016-12-10 |
US9032244B2 (en) | 2015-05-12 |
KR102152238B1 (ko) | 2020-09-04 |
EP2920700A1 (en) | 2015-09-23 |
CN104798051B (zh) | 2017-12-12 |
CN104798051A (zh) | 2015-07-22 |
MX2015006179A (es) | 2015-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2666241C2 (ru) | Перераспределение сегментов памяти для решения проблемы фрагментации | |
AU2017201918B2 (en) | Prioritizing data reconstruction in distributed storage systems | |
US10318365B2 (en) | Selective error correcting code and memory access granularity switching | |
US20100312955A1 (en) | Memory system and method of managing the same | |
US20130124794A1 (en) | Logical to physical address mapping in storage systems comprising solid state memory devices | |
KR20190016562A (ko) | 저장 클래스 메모리를 위한 웨어 레벨링의 장치 및 방법 | |
KR20100081880A (ko) | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 | |
CN114610232A (zh) | 一种存储***、内存管理方法和管理节点 | |
CN111857552A (zh) | 存储管理方法、电子设备和计算机程序产品 | |
McEwan et al. | On-line device replacement techniques for SSD RAID | |
EP4120087B1 (en) | Systems, methods, and devices for utilization aware memory allocation |