RU2752782C1 - Способ записи секторных данных в кэш-память - Google Patents

Способ записи секторных данных в кэш-память Download PDF

Info

Publication number
RU2752782C1
RU2752782C1 RU2020142020A RU2020142020A RU2752782C1 RU 2752782 C1 RU2752782 C1 RU 2752782C1 RU 2020142020 A RU2020142020 A RU 2020142020A RU 2020142020 A RU2020142020 A RU 2020142020A RU 2752782 C1 RU2752782 C1 RU 2752782C1
Authority
RU
Russia
Prior art keywords
sector
cache
memory
sectors
ssd
Prior art date
Application number
RU2020142020A
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 RU2020142020A priority Critical patent/RU2752782C1/ru
Application granted granted Critical
Publication of RU2752782C1 publication Critical patent/RU2752782C1/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
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

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

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

Description

Изобретение относится к компьютерной технике и может быть использовано в архитектуре твердотельных накопителей информации (ТНИ).
Из уровня техники известен способ управления памятью в вычислительном устройстве, описанный в патенте RU 2395115, опубл. 20.07.2010. Известный способ содержит этапы, в ходе которых обнаруживается, когда внешнее устройство памяти является доступным для использования вычислительным устройством, внешнее устройство памяти содержит множество внешних устройств памяти; назначает приоритеты секторам, которые будут размещены во множестве внешних устройств памяти, посредством заполнения выбранного внешнего устройства памяти из множества внешних устройств памяти копией сектора из запоминающего устройства с вращательным движением, сектора, имеющего возможность осуществления доступа, соответствующего предыстории использования сектора, и выбранное внешнее устройство памяти, имеет большую пропускную способность и меньшее время ожидания в сравнении с другими внешними устройствами памяти из множества внешних устройств памяти; и перенаправляет I/O запроса чтения от вычислительного устройства или приложения на данные, которые хранятся в упомянутом секторе, так, чтобы они считывались из выбранного внешнего устройства памяти прозрачно для вычислительного устройства или приложения.
Данный патент был принят за прототип. Его недостатком является отсутствие возможности предварительного хранения секторов перед их записью в основную память для уменьшения занимаемой памяти.
Техническим результатом является повышение эффективности использования ТНИ путем оперативного считывания секторных данных, хранящихся в контроллере ТНИ.
Заявленный результат обеспечивается тем, что предлагается способ записи секторных данных в кэш память твердотельного накопителя информации (ТНИ), в котором ТНИ содержит контроллер, в состав которого входят модуль управления секторным кэш и блочная память для хранения N секторов, при этом осуществляют сохранение секторных данных, предназначенных для хранения или перезаписи их в память ТНИ или для считывания их из памяти ТНИ, модулем управления секторным кэш в блочную память, а информация о секторе сохраняется в модуле управления секторным кэш.
Благодаря предложенному способу записи, контроллер обеспечивает быстрое считывает секторных данных, хранящихся в блочной памяти, не извлекая их из памяти ТНИ.
Далее будет подробно изложено заявленное изобретение.
В тексте настоящего изобретения используются следующие термины:
Страница — это единица информации флеш-памяти, то есть считывать и записывать информацию на флеш-память можно только страницами. Страница состоит из секторов.
Сектор — это единица информации хоста.
Сектора, поступающие от хоста, в зависимости от частоты перезаписывания делятся на группы, называемые температурами.
BSA – адрес блока внутренней памяти.
Кэш (cashe) — область памяти, которая служит для буфера обмена, как правило имеет большую скорость, чем основная память.
Хост — центральный процессор, сервер или любое другое устройство, использующее ТНИ.
В качестве идентификатора сектора в файловой системе используется логический адрес сектора, это натуральное число, которое будем обозначать как LSA.
Единицей информации при обмене данными между контроллером устройства хранения данных и твердотельным накопителем информации (ТНИ) является блок информации фиксированного размера, называемый страницей.
Физический адрес страницы в ТНИ – это целое неотрицательное число, будем обозначать как PPA.
Каждая страница состоит из одинакового количества секторов, но какие-то секторы могут быть пустые, то есть не содержать данные.
Под сборкой мусора понимается процесс удаления данных страниц с ТНИ, сектора которой были перезаписаны.
Модуль, занимающийся сборкой мусора, называется сборщиком мусора.
Твердотельный накопитель информации содержит микросхемы памяти (flash памяти) и контроллер, управляющий процессом записи и чтения информации с данных микросхем.
В состав контроллера ТНИ входят две основные части: аппаратная и программная.
Программная часть состоит из детектора температур, определяющего температуры секторов, поступающих при записи от хоста, формирует страницы из секторов одной температуры, поддерживает таблицу соответствия (узел “FTL”) логических адресов секторов (LSA) и физических адресов страниц (PPA), на которых находятся соответствующие секторы.
Узлами аппаратной части (“Контроллер ТНИ”) являются:
• узел “Шифратор”, предназначенный для шифрования данных, идущих при записи сектора с хоста в процессор ТНИ, и дешифрования, идущих от процессора ТНИ к хосту при чтении сектора;
• узлы “Encoder” и “Decoder”, используемые для шифрования и дешифрования помехоустойчивым кодеком данных секторов;
• узел “Модуль управления заданиями к ТНИ”, управляющий процессом общения хоста и флеш- памяти;
• узлы “BRAM 1” и “BRAM 2” – блочная память, в которой хранятся данные записываемых, считанных секторов;
• узел “Модуль управления страничным кэш”, используемый для хранения информации о секторах, к которым идет частое обращение;
• узлы Conductor_to_memory и Conductor_from_memory, используемые для разъединения данных ширины 64 бит на 8 8-битных порций данных и наоборот.
Указанный модуль управления секторным кэш обеспечивает
- кэш-память для хранения N элементов, состоящих из логического адреса считанного сектора и информации о том, кому нужен считанный сектор – хосту и/или сборщику мусора;
- промежуточный буфер памяти для хранения информации о секторах, считанных с накопителя информации, перед отдачей ее хосту или отправкой на перезапись и используется как менеджер блочной памяти, используемой для хранения данных считанных секторов.
В контроллере ТНИ данные считываются с флеш-памяти (носитель данных) в 2 случаях:
1. хост отправил запрос чтения сектора;
2. сектор нужен сборщику мусора.
В первом случае после скачивания с флеш-памяти в процессор ТНИ данные сектора сначала закачиваются в блочную память (узел “BRAM 2”) и информация о секторе в модуль управления секторным кэш, а затем выдается хосту.
Во втором случае после скачивания с флеш-памяти в процессор ТНИ данные сектора сначала закачиваются в блочную память (узел “BRAM 2”) и информация о секторе в модуль управления секторным кэш, после этого из скачанных секторов формируется новая страница, которая обратно записывается во флеш-память.
При запросе чтения от хоста может оказаться, что считанный сектор уже отсутствует в флеш-памяти, так как находится внутри процессора ТНИ в модуле управления секторным кэш. Поэтому при запросе чтения от хоста сначала проверяется наличие логического адреса искомого сектора внутри процессора ТНИ: в модуле управления страничным кэш и модуле управления секторным кэш, и если такой сектор найден, то данные сектора считываются с BRAM 1 или соответственно из BRAM 2, и отправляются на расшифрование в Шифратор, а затем к хосту.
Общее описание модуля управления секторным кэш.
Секторный кэш содержит информацию обо всех секторах, считанных декодерами и содержащихся в текущий момент внутри ядра. В числе таких секторы, предназначенные для хоста, но пока им несчитанные. Также в их числе считанные секторы, предназначенные для перезаписи на твердотельный накопитель, но пока не успевшие образовать полные страницы.
Пусть под секторный кэш выделено N блоков, каждый из которых предназначен для сохранения одного сектора, т.е. в блочной памяти может быть сохранено N секторов. Тогда модуль управления секторным кэш содержит массив из N структур, которые будем называть элементами. Каждый элемент будет содержать информацию об одном блоке-секторе памяти. Элемент состоит из 3 полей: need_for_host – однобитное поле говорящее, что сектор хранит данные, предназначенные для передачи хосту; need_for_gc – однобитное поле, говорящее, что сектор считан сборщиком мусора и предназначен для перезаписи на ТНИ; lsa – логический адрес сектора, хранящегося в данном блоке. Если у элемента оба поля и need_for_host, и need_for_gc равны 1, то это значит, что данный блок нужен и хосту, исборщику мусора. Если у элемента оба поля и need_for_host, и need_for_gc равны 0, то это значит, что данный блок является свободным.
Когда декодеру поступает для декодирования новый сектор, он просит у модуля управления секторным кэш новый блок для сохранения данных и сообщает ему, кому нужен этот сектор. В ответ на это модуль управления секторным кэш, ориентируясь на поля need_for_host и need_for_gc, находит первый свободный блок и проставляет в соответствии с полученной информацией поля need_for_host и need_for_gc. Декодер начинает декодировать сектор; в первых четырех байтах декодированного слова находит логический адрес данного сектора и сообщает его модулю управления секторным кэш. Модуль управления секторным кэш записывает этот логический адрес в поле lsa элемента данного блока. В результате элемент, соответствующий данному блоку, оказывается полностью заполненным. В момент, когда сектор полностью передан хосту поле need_for_host элемента, соответствующего блока, устанавливается в 0. В момент, когда сектор, предназначенный для перезаписи на ТНИ, полностью передан ТНИ поле need_for_gc элемента, соответствующего блока, устанавливается в 0.
Сектора, предназначенные для перезаписи во флеш-память (ТНИ), но пока не успевшие образовать полные страницы, могут надолго задержаться внутри контроллера ТНИ, при этом их уже нет на самом ТНИ. Поэтому если придет запрос на чтение такого сектора, модуль управления секторным кэш по логическому адресу этого сектора находит блок с таким полем lsa и передает его контроллеру для пересылки хосту. При этом поле need_for_host этого элемента устанавливается в 1.
При инициализации модуля управления секторным кэш задаются следующие параметры:
1. lsa_width – ширина двоичного представления максимального значения LSA;
2. capacity – максимальное количество секторов, которое одновременно может содержать кэш.
У модуля управления секторным кэш имеется ряд входных и выходных линий. Управление модуля управления секторным кэш осуществляется под воздействием сигналов на входных линиях, а результаты работы модуля отображаются в виде сигналов на выходных линиях узла.

Claims (1)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2020142020A RU2752782C1 (ru) 2020-12-18 2020-12-18 Способ записи секторных данных в кэш-память

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2020142020A RU2752782C1 (ru) 2020-12-18 2020-12-18 Способ записи секторных данных в кэш-память

Publications (1)

Publication Number Publication Date
RU2752782C1 true RU2752782C1 (ru) 2021-08-03

Family

ID=77226276

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2020142020A RU2752782C1 (ru) 2020-12-18 2020-12-18 Способ записи секторных данных в кэш-память

Country Status (1)

Country Link
RU (1) RU2752782C1 (ru)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2395115C2 (ru) * 2004-10-21 2010-07-20 Майкрософт Корпорейшн Использование внешних устройств памяти для улучшения производительности системы
US20110055458A1 (en) * 2009-09-03 2011-03-03 248 Solid State, Inc. Page based management of flash storage
US20140095775A1 (en) * 2012-01-12 2014-04-03 Fusion-io-Inc. Systems and methods for cache endurance
US20150106556A1 (en) * 2008-06-18 2015-04-16 Super Talent Electronics, Inc. Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear of a Super-Endurance Solid-State Drive
US20160004642A1 (en) * 2013-12-12 2016-01-07 Hitachi, Ltd. Storage device and method for controlling storage device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2395115C2 (ru) * 2004-10-21 2010-07-20 Майкрософт Корпорейшн Использование внешних устройств памяти для улучшения производительности системы
US20150106556A1 (en) * 2008-06-18 2015-04-16 Super Talent Electronics, Inc. Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear of a Super-Endurance Solid-State Drive
US20110055458A1 (en) * 2009-09-03 2011-03-03 248 Solid State, Inc. Page based management of flash storage
US20140095775A1 (en) * 2012-01-12 2014-04-03 Fusion-io-Inc. Systems and methods for cache endurance
US20160004642A1 (en) * 2013-12-12 2016-01-07 Hitachi, Ltd. Storage device and method for controlling storage device

Similar Documents

Publication Publication Date Title
US10198215B2 (en) System and method for multi-stream data write
KR102584018B1 (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
US9298606B2 (en) Statistical wear leveling for non-volatile system memory
KR100533682B1 (ko) 플래시 메모리의 데이터 관리 장치 및 방법
US10360155B1 (en) Multi-tier memory management
US11263149B2 (en) Cache management of logical-physical translation metadata
US8650379B2 (en) Data processing method for nonvolatile memory system
CN110334035B (zh) 数据储存系统的控制单元以及逻辑至物理映射表更新方法
US10296250B2 (en) Method and apparatus for improving performance of sequential logging in a storage device
JP2011521315A (ja) マルチプロセッサ/マルチスレッド環境における記憶要求を調整するための装置、システム及び方法
JPS59114658A (ja) デ−タ記憶空間の管理方法
TW201629774A (zh) 使用資料壓縮的快取技術
US10789011B2 (en) Performance enhancement of a storage device using an integrated controller-buffer
KR20080017292A (ko) 내장 시스템들을 위한 저장 아키텍쳐
KR20200100955A (ko) 메모리 시스템의 맵 데이터 관리 방법 및 장치
US11048623B2 (en) Memory controller including mapping tables to efficiently process an iteration command and a method of operating the same
US20160124639A1 (en) Dynamic storage channel
JP2009003934A (ja) データ管理システム及びデータ管理方法、並びにデータ管理方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2020502606A (ja) 記憶動作待ち行列
WO2018063479A1 (en) Storage device with fine grained search capability
KR20120054502A (ko) 반도체 기억 장치
US20180357280A1 (en) Trie search engine
CN115048034A (zh) 用于sgl的存储空间映射方法及其装置
RU2752782C1 (ru) Способ записи секторных данных в кэш-память
Nakashima et al. I/o performance improvement of secure big data analyses with application support on ssd cache