RU2752782C1 - Способ записи секторных данных в кэш-память - Google Patents
Способ записи секторных данных в кэш-память Download PDFInfo
- 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
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
- 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
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)
- Способ записи секторных данных в кэш-память твердотельного накопителя информации (ТНИ), в котором ТНИ содержит контроллер, в состав которого входят детектор температур, определяющий температуры записываемых секторов и формирующий страницы из секторов одной температуры, шифратор, предназначенный для шифрования и дешифрования данных, модуль управления секторным кэш и секторный кэш для хранения N секторов, при этом осуществляют сохранение секторных данных, предназначенных для хранения или перезаписи их в память ТНИ или для считывания их из памяти ТНИ, модулем управления секторным кэш в секторный кэш, а информация о секторе сохраняется в модуле управления секторным кэш, имеющем кэш-память для хранения N элементов, содержащих информацию о секторах, в котором такая информация содержит логический адрес сектора, хранящегося в секторном кэш, и содержит указание, что сектор хранит данные, предназначенные хосту, и/или сектор считан сборщиком мусора, осуществляющим удаление данных страниц с ТНИ, сектора которой были перезаписаны, и предназначен для перезаписи на ТНИ.
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)
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 |
-
2020
- 2020-12-18 RU RU2020142020A patent/RU2752782C1/ru active
Patent Citations (5)
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 |
---|---|---|
KR102584018B1 (ko) | 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법 | |
US9298606B2 (en) | Statistical wear leveling for non-volatile system memory | |
US20170371585A1 (en) | System and method for multi-stream data write | |
KR100533682B1 (ko) | 플래시 메모리의 데이터 관리 장치 및 방법 | |
US11263149B2 (en) | Cache management of logical-physical translation metadata | |
US10360155B1 (en) | Multi-tier memory management | |
CN110334035B (zh) | 数据储存***的控制单元以及逻辑至物理映射表更新方法 | |
US8650379B2 (en) | Data processing method for nonvolatile memory system | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
JP2011521315A (ja) | マルチプロセッサ/マルチスレッド環境における記憶要求を調整するための装置、システム及び方法 | |
JPS59114658A (ja) | デ−タ記憶空間の管理方法 | |
US11048623B2 (en) | Memory controller including mapping tables to efficiently process an iteration command and a method of operating the same | |
TW201629774A (zh) | 使用資料壓縮的快取技術 | |
US10789011B2 (en) | Performance enhancement of a storage device using an integrated controller-buffer | |
KR20080017292A (ko) | 내장 시스템들을 위한 저장 아키텍쳐 | |
KR20200100955A (ko) | 메모리 시스템의 맵 데이터 관리 방법 및 장치 | |
US20180095720A1 (en) | Storage device with fine grained search capability | |
US20160124639A1 (en) | Dynamic storage channel | |
JP2009003934A (ja) | データ管理システム及びデータ管理方法、並びにデータ管理方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2020502606A (ja) | 記憶動作待ち行列 | |
KR20120054502A (ko) | 반도체 기억 장치 | |
US20180357280A1 (en) | Trie search engine | |
CN117472285A (zh) | 固态硬盘用智能运行加速方法、计算机设备及存储介质 | |
CN115048034A (zh) | 用于sgl的存储空间映射方法及其装置 | |
RU2752782C1 (ru) | Способ записи секторных данных в кэш-память |