RU2754601C1 - Способ инкрементального сохранения - Google Patents
Способ инкрементального сохранения Download PDFInfo
- Publication number
- RU2754601C1 RU2754601C1 RU2020142026A RU2020142026A RU2754601C1 RU 2754601 C1 RU2754601 C1 RU 2754601C1 RU 2020142026 A RU2020142026 A RU 2020142026A RU 2020142026 A RU2020142026 A RU 2020142026A RU 2754601 C1 RU2754601 C1 RU 2754601C1
- Authority
- RU
- Russia
- Prior art keywords
- data
- block
- page
- blocks
- reserved
- Prior art date
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Изобретение относится к области компьютерной техники и предназначено для обеспечения корректности работы немеханических запоминающих устройств на основе микросхем памяти. Техническим результатом является уменьшение объема памяти для хранения данных секторов и сокращение времени сохранения таких данных в запоминающем устройстве. Технический результат заявляемого технического решения достигается тем, что в заявленном решении у блоков, у которых осталась одна свободная страница, осуществляют сохранение на эту страницу данных о секторах, содержащихся в соответствующем блоке, при этом для каждого блока, кроме зарезервированных для сохранения, отмечают момент, когда он был заполнен.
Description
Изобретение относится к компьютерной технике и предназначено для обеспечения корректности работы немеханических запоминающих устройств на основе микросхем памяти (SSD, USB Flash Drive, Flash Card и т.д.).
В настоящее время для сохранения расположения данных секторов в блоках запоминающих устройств используют таблицы трансляции, сохраняемые в адресах страниц.
Недостатком такого метода хранения данных секторов и последующее их восстановление является большой объем сохраняемых данных и длительное время на проведение такой процедуры.
Техническим результатом является уменьшение объема памяти для хранения данных секторов и сокращение времени сохранения таких данных в запоминающем устройстве.
Заявленный результат обеспечивается способом инкрементального сохранения данных секторов в немеханических запоминающих устройствах, в котором у блоков, у которых осталась одна свободная страница, осуществляют сохранение на эту страницу данных о секторах, содержащихся в соответствующем блоке, при этом для каждого блока, кроме зарезервированных для сохранения, отмечают момент, когда он был заполнен. А для восстановления таблицы трансляции предлагается способ инкрементального восстановления таблиц трансляции данных секторов в немеханических запоминающих устройствах, заключающийся в том, что при подаче питания на запоминающее устройство вначале загружаются данные из зарезервированных блоков, после чего считывают последнюю страницу каждого блока и для каждого логического адреса из этой страницы в таблицу трансляции записывается физический адрес страницы, на которую этот сектор записан.
Предлагаемый способ хранения и восстановления данных о секторах позволит уменьшить объем памяти для хранения данных секторов и ускорить время сохранения таких данных в запоминающем устройстве из-за отсутствия лишних операций.
Подробное описание изобретения.
Суть состоит в записи логических адресов всех секторов, записанных в блок, на последнюю страницу блока. Эта процедура вызывается для блока в тот момент, когда в нем остается одна свободная страница. Кроме адресов секторов, на последнюю страницу блока записываются и некоторые другие данные – температура блока и износ блока, что позволяет не тратить время на сохранение этих данных при отключении питания. Для каждого блока (кроме зарезервированных для сохранения) отмечается момент, когда этот блок оказывается заполнен (время его закрытия).
При включении питания сначала загружаются все данные из зарезервированных блоков. Затем происходит чтение последней страницы каждого блока (кроме зарезервированных и свободных), и для каждого логического адреса из этой страницы в таблицу трансляции записывается физический адрес страницы, на которую этот сектор записан (этот адрес легко вычисляется по положению адреса сектора на последней странице). Если логический адрес находится на последней странице нескольких блоков, предпочтение отдается тому блоку, который был заполнен позже остальных
Реализация включает две группы функций – функции, вызываемые при сохранении программного обеспечения (ПО) и функции, вызываемые при загрузке ПО.
Функции, вызываемые при сохранении ПО:
Сохранение инициируется функцией сохранения драйвера нижнего уровня ПО. Эта или аналогичная ей функция будет вызвана после поступления в драйвер аппаратного сигнала о том, что началось выключение накопителя.
У всех классов ПО, требующих сохранения, реализована собственная функция сохранения, переписывающая требующие сохранения данные во внутренний буфер объекта класса потока вывода. Все эти функции вызываются из функции сохранения для одного и того же объекта класса потока вывода.
Объект потока вывода накапливает сохраняемые данные в своем внутреннем буфере. Если буфер заполнен (либо вызвана функция сброса буфера класса потока вывода, что означает, что все предназначенные для сохранения данные уже записаны в буфер), то он переписывается на зарезервированный блок флеш-памяти. Размер буфера равен произведению длины страницы на количество путей на диске, поэтому запись на носитель осуществляется параллельно на все пути.
При записи на носитель в зарезервированный блок в параметрах передается номер страницы зарезервированного блока, куда будет осуществлена запись; указатель на начало переписываемого участка в буфере объекта; и признак, который указывает аппаратуре, является ли данная страница последней страницей, записываемой при сохранении ПО.
Основные данные ПО, сохраняемые в зарезервированные блоки при выключении питания - последние страницы открытых блоков (при 512 страниц в блоке потребуется не более 2 страниц на 1 путь, а при 1024 страниц в блоке - не более 4 на 1 путь, независимо от числа блоков на пути), время закрытия каждого блока (не более чем по 4Б на каждый блок). Кроме того, ядро ТНИ сбрасывает на флеш-память свой кэш (128 страниц).
Таким образом, достигается значительная экономия объема сохраняемых данных и времени сохранения по сравнению с диском, где осуществлялось бы сохранение таблицы трансляции. Например, объем данных, сохраняемых при выключении питания для 1 ТБ-диска – менее 7 МБ, а объем таблицы трансляции для такого диска – более 800 МБ.
Функции, вызываемые при загрузке ПО:
Загрузка инициируется функцией загрузки драйвера нижнего уровня ПО. Эта или аналогичная функция будет вызвана после поступления в драйвер аппаратного сигнала о том, что произошло включение накопителя.
У всех классов ПО, для которых реализовано сохранение данных, реализована так же функция загрузки, загружающая значения полей классов из внутреннего буфера объекта класса потока ввода. Все функции загрузки классов вызываются из функции загрузки драйвера нижнего уровня для одного и того же объекта класса потока ввода.
Если все данные из внутреннего буфера объекта оказываются переписаны в поля классов ПО, а загрузка данных из зарезервированных блоков еще не завершена, происходит чтение новой порции данных из зарезервированных блоков накопителя. Размер буфера равен произведению длины страницы на количество путей на диске, поэтому чтение с кристалла флеш-памяти осуществляется параллельно со всех путей.
Чтение с накопителя осуществляется из зарезервированных блоков, при этом в параметрах передается это номер страницы блока, откуда будет осуществлено чтение; указатель на начало участка в буфере объекта, куда будет записана прочитанная страница.
Когда все данные из зарезервированного блока прочитаны, этот блок стирается, после чего он готов к записи при следующем сохранении ПО.
После того, как чтение из зарезервированных блоков завершено, из функции чтения драйвера низкого уровня вызывается чтение последней страницы каждого блока, кроме зарезервированных блоков и свободных блоков. То, что блок свободен, можно определить по тому, что время его закрытия указано как 0.
Для чтения последних страниц также используется функция чтения из зарезервированного блока драйвера нижнего уровня или аналогичная ей функция, которая читает с накопителя любую заданную страницу. Прочитанная страница преобразуется в объект класса, содержащий структурированное представление данных, записанных на последнюю страницу блока, и передается функции обновления таблицы трансляции. В этой функции происходит восстановление участков таблицы трансляции, соответствующих данному блоку.
После окончания чтения обновления таблиц трансляции, в которой происходит формирование участков таблицы трансляции, соответствующих открытым блокам, а также восстановление тех элементов ПО, которые можно восстановить, зная таблицу трансляции (например, валидность блоков). На этом загрузка завершается.
Для 1 ТБ-диска с 512 страницами в блоке объем данных, читаемых при загрузке, составит 2 ГБ, а для 1 ТБ-диска с 1024 страницами в блоке - 1 ГБ.
Claims (1)
- Способ инкрементального сохранения данных секторов в немеханических запоминающих устройствах, заключающийся в том, что у блоков, у которых осталась одна свободная страница, осуществляют сохранение на эту страницу данных секторов, содержащихся в соответствующем блоке, при этом для каждого блока, кроме зарезервированных для сохранения, отмечают момент, когда он был заполнен, а при подаче питания на немеханическое запоминающее устройство вначале загружаются данные из зарезервированных блоков, после чего считывают последнюю страницу каждого блока и для каждого логического адреса из этой страницы в таблицу трансляции записывается физический адрес страницы, на которую этот сектор записан.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2020142026A RU2754601C1 (ru) | 2020-12-18 | 2020-12-18 | Способ инкрементального сохранения |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2020142026A RU2754601C1 (ru) | 2020-12-18 | 2020-12-18 | Способ инкрементального сохранения |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2754601C1 true RU2754601C1 (ru) | 2021-09-03 |
Family
ID=77669956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2020142026A RU2754601C1 (ru) | 2020-12-18 | 2020-12-18 | Способ инкрементального сохранения |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2754601C1 (ru) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050149686A1 (en) * | 2004-01-05 | 2005-07-07 | International Business Machines Corporation | Method and apparatus for dynamic incremental defragmentation of memory |
US7319617B2 (en) * | 2005-05-13 | 2008-01-15 | Winbond Electronics Corporation | Small sector floating gate flash memory |
US20080282106A1 (en) * | 2007-05-12 | 2008-11-13 | Anobit Technologies Ltd | Data storage with incremental redundancy |
US20090100115A1 (en) * | 2007-10-12 | 2009-04-16 | Samsung Electronics Co., Ltd. | Methods and Apparatus for File Management Using Partitioned File Metadata |
RU2373567C2 (ru) * | 2003-06-23 | 2009-11-20 | Майкрософт Корпорейшн | Общая модель зависимости для аннулирования элементов кэша |
US8463826B2 (en) * | 2009-09-03 | 2013-06-11 | Apple Inc. | Incremental garbage collection for non-volatile memories |
-
2020
- 2020-12-18 RU RU2020142026A patent/RU2754601C1/ru active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2373567C2 (ru) * | 2003-06-23 | 2009-11-20 | Майкрософт Корпорейшн | Общая модель зависимости для аннулирования элементов кэша |
US20050149686A1 (en) * | 2004-01-05 | 2005-07-07 | International Business Machines Corporation | Method and apparatus for dynamic incremental defragmentation of memory |
US7319617B2 (en) * | 2005-05-13 | 2008-01-15 | Winbond Electronics Corporation | Small sector floating gate flash memory |
US20080282106A1 (en) * | 2007-05-12 | 2008-11-13 | Anobit Technologies Ltd | Data storage with incremental redundancy |
US20090100115A1 (en) * | 2007-10-12 | 2009-04-16 | Samsung Electronics Co., Ltd. | Methods and Apparatus for File Management Using Partitioned File Metadata |
US8463826B2 (en) * | 2009-09-03 | 2013-06-11 | Apple Inc. | Incremental garbage collection for non-volatile memories |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11055230B2 (en) | Logical to physical mapping | |
US5987478A (en) | Virtual small block file manager for flash memory array | |
US7191308B2 (en) | Memory device with preread data management | |
US7970806B2 (en) | Methods and apparatus for file management using partitioned file metadata | |
US6809964B2 (en) | Nonvolatile semiconductor memory device capable of transferring data internally without using an external bus | |
US20080028132A1 (en) | Non-volatile storage device, data storage system, and data storage method | |
US10168940B2 (en) | Data storage using SLC and TLC memory banks and data maintenance method thereof | |
US20190034347A1 (en) | Memory addressing | |
US20130103889A1 (en) | Page-buffer management of non-volatile memory-based mass storage devices | |
KR102087495B1 (ko) | 저장 파라미터 변경 | |
US20190303299A1 (en) | Control unit for data storage system and method for updating logical-to-physical mapping table | |
EP3627328A1 (en) | Storage device and operating method of storage device | |
JP2005182793A (ja) | 頻繁にアクセスされたセクタの動作による不揮発性メモリに対するより速い書込み動作 | |
US20090070517A1 (en) | Memory apparatus, memory control method, and program | |
US8332575B2 (en) | Data management systems, methods and computer program products using a phase-change random access memory for selective data maintenance | |
JP3421581B2 (ja) | 不揮発性半導体メモリを用いた記憶装置 | |
US9552289B1 (en) | Bitwise addressing of entries in a forward lookup table | |
JP2012113343A (ja) | 記憶装置 | |
CN111966281A (zh) | 数据储存装置与数据处理方法 | |
RU2754601C1 (ru) | Способ инкрементального сохранения | |
CN110727470A (zh) | 一种混合式非失性存储装置 | |
CN115878033B (zh) | 一种固态硬盘及其映射表管理方法 | |
US11182286B2 (en) | Data storage device and control method for non-volatile memory | |
CN113535089B (zh) | 用于ssd的映射表的刷新方法 | |
JPH0675836A (ja) | 補助記憶装置 |