RU2754601C1 - Способ инкрементального сохранения - Google Patents

Способ инкрементального сохранения Download PDF

Info

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
Application number
RU2020142026A
Other languages
English (en)
Inventor
Алексей Юрьевич Кравцов
Original Assignee
Акционерное Общество "Крафтвэй Корпорэйшн Плс"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Акционерное Общество "Крафтвэй Корпорэйшн Плс" filed Critical Акционерное Общество "Крафтвэй Корпорэйшн Плс"
Priority to RU2020142026A priority Critical patent/RU2754601C1/ru
Application granted granted Critical
Publication of RU2754601C1 publication Critical patent/RU2754601C1/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing 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)

  1. Способ инкрементального сохранения данных секторов в немеханических запоминающих устройствах, заключающийся в том, что у блоков, у которых осталась одна свободная страница, осуществляют сохранение на эту страницу данных секторов, содержащихся в соответствующем блоке, при этом для каждого блока, кроме зарезервированных для сохранения, отмечают момент, когда он был заполнен, а при подаче питания на немеханическое запоминающее устройство вначале загружаются данные из зарезервированных блоков, после чего считывают последнюю страницу каждого блока и для каждого логического адреса из этой страницы в таблицу трансляции записывается физический адрес страницы, на которую этот сектор записан.
RU2020142026A 2020-12-18 2020-12-18 Способ инкрементального сохранения RU2754601C1 (ru)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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) 補助記憶装置