RU2769562C1 - Solid-state information storage controller decoder - Google Patents

Solid-state information storage controller decoder Download PDF

Info

Publication number
RU2769562C1
RU2769562C1 RU2021110997A RU2021110997A RU2769562C1 RU 2769562 C1 RU2769562 C1 RU 2769562C1 RU 2021110997 A RU2021110997 A RU 2021110997A RU 2021110997 A RU2021110997 A RU 2021110997A RU 2769562 C1 RU2769562 C1 RU 2769562C1
Authority
RU
Russia
Prior art keywords
data
block
decoder
memory
sector
Prior art date
Application number
RU2021110997A
Other languages
Russian (ru)
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 RU2021110997A priority Critical patent/RU2769562C1/en
Application granted granted Critical
Publication of RU2769562C1 publication Critical patent/RU2769562C1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

FIELD: computer technology.
SUBSTANCE: invention relates to computer technology and is intended to carry out the process of decoding digital information coming from several independent NAND flash memory chips in the controller equipment of non-mechanical storage devices based on NAND flash memory chips. A decoder of a solid-state data storage controller for decoding data from n NAND channels, containing a control unit that monitors the operation of the blocks included in the decoder, a channel controller consisting of n modules, each of which is connected to a specific NAND channel, a memory block for storing sectors containing independent memory modules, a decoder controller containing m decoder modules, where n>m, a decoder block containing m LDPC decoders, a unit for checksum calculation and data transfer to a recording unit and a unit for checksum calculation and data transfer to a host unit.
EFFECT: increase in the efficiency of the technical storage medium due to the uniform distribution of the load of the NAND flash memory included in it during the read operation.
9 cl, 1 dwg

Description

Изобретение относится к микроэлектронике и предназначено для использования в схемных решениях и топологиях интегральных микросхем контроллеров запоминающих устройств, предназначенных для управления операциями чтения и записи многоканальных микросхем флеш памяти, предназначенных для долговременного энергонезависимого хранения данных (NAND).The invention relates to microelectronics and is intended for use in circuit solutions and topologies of integrated microcircuits of memory controllers designed to control read and write operations of multichannel flash memory microcircuits intended for long-term non-volatile data storage (NAND).

Твердотельные накопители (ТНИ или SSD) привлекают внимание разработчиков как системы памяти, оснащенные флэш-памятью (flash EEPROM), в качестве внешних накопителей используемых вычислительными системами. Solid State Drives (SSDs or SSDs) are attracting the attention of developers as memory systems equipped with flash memory (flash EEPROM) as external drives used by computing systems.

Флэш-память имеет такие преимущества, как высокая скорость обмена данными, а также пониженный вес, по сравнению с магнитным диском.Flash memory has advantages such as high data transfer speed, as well as reduced weight compared to magnetic disk.

Типовой SSD включает в себя несколько микросхем флэш-памяти, контроллер, который управляет чтением и записью соответствующих микросхем флэш-памяти в ответ на запрос от главного устройства, например, стационарного компьютера, буферную память для обслуживания процесса передачи данных между соответствующими микросхемами флэш-памяти и главным устройством, цепи управления питанием и интерфейс подключения к главному устройству (хосту). A typical SSD includes several flash memory chips, a controller that controls the read and write of the respective flash memory chips in response to a request from a host device such as a desktop computer, a buffer memory to handle the data transfer process between the respective flash memory chips, and host device, power management circuits and interface to the host device.

При проектировании твердотельного накопителя, в том числе и накопителей, в которых может быть использовано предложенное изобретение, как правило, используется многослойная реализация, в которой, для увеличения удельной емкости памяти, используется несколько кристаллов микросхем памяти, например, в виде многослойной сборки, в то время как площадь площадок для выводов контроллера и для монтажных площадок ограничена.When designing a solid state drive, including drives in which the proposed invention can be used, as a rule, a multilayer implementation is used, in which, to increase the specific memory capacity, several memory chip chips are used, for example, in the form of a multilayer assembly, while while the area of the pads for the controller outputs and for the mounting pads is limited.

При использовании синхронного контроллера данные, считываемые из памяти, могут фиксироваться и выводиться в состоянии низкой нагрузки (при небольшом количестве буферов данных); однако в состоянии высокой нагрузки (при большом количестве буферов, заполненных считанными данными) данные, считанные из памяти, могут не фиксироваться и не выводиться из-за задержки данных, вызванной задержкой, обусловленной затратами времени на арбитраж доступа к кристаллам в сборках и отдельным микросхемам (корпусам) на шинах ONFI (TOGGLE). When using a synchronous controller, data read from memory can be latched and output in a low load state (with few data buffers); however, in a high load state (with a large number of buffers filled with read data), data read from memory may not be latched or output due to data latency caused by the time spent arbitrating access to chips in assemblies and individual chips ( housings) on ONFI (TOGGLE) buses.

Для декодирования информации, поступающей из каналов, используются аппаратные декодеры. В современных ТНИ используются LDPC-Декодеры. Отличительными особенностями LDPC-Декодеров являются:To decode information coming from channels, hardware decoders are used. Modern TNIs use LDPC decoders. Distinctive features of LDPC Decoders are:

- высокая пропускная способность;- high throughput;

- малая площадь / малое энергопотребление.- small area / low power consumption.

В указанном выше многослойном продукте для каждого модуля отдельно могут использоваться выделенные шины данных, адресов и управления, а также шины питания, которые располагаются внутри кристалла. Нагрузка соответствующих шин повышается с увеличением количества кристаллов памяти, например, в многослойной сборке, а при увеличении нагрузки соответствующих сигнальных линий увеличивается задержка сигналов ввода-вывода из-за задержек, вызванных повышением емкости и активного сопротивления самих линий передачи данных. Кроме того, современных ТНИ пропускная способность физического интерфейса Хост-ТНИ (например, PCIe 3.0) значительно превосходит пропускную способность отдельной микросхемы NAND-флеш памяти. В связи с этим в ТНИ используются одновременно несколько микросхем NAND-флеш памяти, объединенных в так называемые каналы. Процедуры Записи и Чтения, при этом, выполняются параллельно по нескольким каналам. Отдельный канал обычно содержит от 1 до 8 микросхем NAND-флеш памяти. Использование одного канала передачи данных практически нецелесообразною так как для скорость передачи данных существенно ограничивается. In the above multilayer product, dedicated data, address, and control buses, as well as power buses, can be used separately for each module, which are located inside the chip. The load of the respective buses increases with the increase in the number of memory chips, for example, in a multilayer assembly, and as the load of the corresponding signal lines increases, the delay of the I / O signals increases due to the delays caused by the increase in capacitance and resistance of the data lines themselves. In addition, the throughput of the physical interface of the Host-TNI (for example, PCIe 3.0) of modern TNIs significantly exceeds the bandwidth of a separate NAND flash memory chip. In this regard, TNI uses several NAND-flash memory chips combined into so-called channels. The Write and Read procedures, in this case, are performed in parallel on several channels. A single channel usually contains from 1 to 8 NAND flash memory chips. The use of a single data transmission channel is practically impractical, since the data transmission rate is significantly limited.

Недостатком известных декодеров, используемых в ТНИ, является отсутствие оптимизации производительности обработки информации, в связи с невозможностью равномерного распределения загруженности нескольких, не привязанных к микросхемам памяти LDPC декодеров, при работе с несколькими микросхемами NAND-флеш памяти.The disadvantage of the known decoders used in TNI is the lack of optimization of information processing performance, due to the impossibility of evenly distributing the workload of several decoders not tied to LDPC memory chips when working with several NAND flash memory chips.

Например, патент США US2018175885 описывает аппаратный декодер, использующий общую энергозависимую память для промежуточных преобразований содержимого ячеек, а также общую схему декодирования данных для нескольких ячеек памяти. For example, US Pat.

Существенным недостатком указанного решения является необходимость использования общего адресного пространства для хранения содержимого ячеек, а также использование одного канала и одного декодера для передачи данных к хосту. Такая конфигурация может повысить скорость обработки данных только при использовании нескольких контроллеров параллельно. A significant disadvantage of this solution is the need to use a common address space to store the contents of the cells, as well as the use of one channel and one decoder to transmit data to the host. This configuration can only improve processing speed when multiple controllers are used in parallel.

Использование выделенных для групп ячеек каналов для обработки данных повышает скорость работы, однако может понизить стабильность при одновременном использовании всех каналов, за счет повышения энергопотребление и увеличения емкостных и резистивных задержек. Повышенное электропотребление может привести к преждевременному выходу из строя накопителей информации. The use of channels dedicated to groups of cells for processing data increases speed, but can reduce stability when using all channels at the same time, due to increased power consumption and increased capacitive and resistive delays. Increased power consumption can lead to premature failure of storage media.

Таким образом, в уровне техники существует необходимость в оптимизации распределения загруженности каналов при выполнении операций записи-считывания с учетом возможности возникновения ошибок, а также необходимости стирания данных в ячейках перед выполнением операций записи, при выполнения указанных операций на физических устройствах. При этом несколько параллельно функционирующих каналов NAND-флеш памяти должны быть оптимизированы таким образом, чтобы обеспечивалась максимальная возможная скорость чтения и записи информации.Thus, in the prior art there is a need to optimize the distribution of channel load when performing write-read operations, taking into account the possibility of errors, as well as the need to erase data in cells before performing write operations, when performing these operations on physical devices. At the same time, several parallel functioning channels of NAND flash memory must be optimized in such a way as to ensure the maximum possible speed of reading and writing information.

Дополнительно, одна микросхема контроллера ТНИ в различных вариантах исполнения ТНИ должна обеспечивать универсальное взаимодействие Хоста с различными наборами микросхем NAND-флеш памяти. Устранение недостатков уровня техники является задачей настоящего изобретения. Additionally, one TNI controller chip in various TNI versions should provide universal Host interaction with various NAND-flash memory chipsets. Eliminating the shortcomings of the prior art is the object of the present invention.

Техническим результатом, достигаемым при реализации изобретения является решение указанных выше задач, устранение недостатков уровня техники и повышение эффективности работы ТНИ за счет равномерного распределения загруженности входящих в него NAND-флеш памяти при операциях чтения и записи, возможности параллельного выполнения указанных ниже служебных операций, в том числе сборки мусора и валидации ячеек, повышение надежности ТНИ, в котором используется предложенное изобретение. The technical result achieved in the implementation of the invention is the solution of the above problems, the elimination of the shortcomings of the prior art and the increase in the efficiency of the TNI due to the uniform distribution of the workload of the NAND flash memory included in it during read and write operations, the possibility of parallel execution of the following service operations, including including garbage collection and cell validation, improving the reliability of TNI, which uses the proposed invention.

Заявленный результат обеспечивается за счет того, что при выполнении аппаратного декодирования содержимого твердотельного накопителя информации, содержащего n>1 независимых блоков памяти, выделяют n аппаратных каналов записи-считывания данных и m < n, независимых аппаратных декодеров, реализующих один и тот же процесс декодирования блоков данных, где значение данных от каждого из блоков передается через один из каналов записи-считывания к одному из независимых выделенных блоков памяти, с формированием, до завершения передачи, сигнала занятости канала, участвующего в процессе записи или считывания данных, The claimed result is ensured due to the fact that when performing hardware decoding of the contents of a solid state drive of information containing n> 1 independent memory blocks, n hardware channels for writing and reading data and m < n, independent hardware decoders are allocated that implement the same block decoding process data, where the data value from each of the blocks is transmitted through one of the write-read channels to one of the independent allocated memory blocks, with the formation, before the transfer is completed, of the channel busy signal involved in the process of writing or reading data,

при поступлении запроса от внешней системы на считывание данных логического сектора данных, определяют адрес блока, соответствующего логическому сектору, и, после выделения адреса внешней памяти, предназначенной для записи значения логического сектора, инициализируют процесс считывания данных по запросу, для чего определяют физический блок, хранящий данные запрошенного логического сектора данных, выделяют независимый физический блок непосредственно адресуемой памяти для записи значения блока, при наличии свободного канала, выбирают и занимают свободный канал, выделяют свободный аппаратный декодер, формируют запрос на передачу данных из определенного физического блока к выделенной памяти с использованием свободного канала из определенного физического блока, где данные содержат данные, считанные из блока и проверочную сумму, и when a request is received from an external system to read data from a logical sector of data, the address of the block corresponding to the logical sector is determined, and, after allocating the address of external memory intended for writing the value of the logical sector, the process of reading data on request is initialized, for which a physical block is determined that stores data of the requested logical data sector, allocate an independent physical block of directly addressable memory to write the value of the block, if there is a free channel, select and occupy a free channel, allocate a free hardware decoder, form a request to transfer data from a specific physical block to the allocated memory using a free channel from a particular physical block, where the data contains the data read from the block and the checksum, and

А. определяют правильность контрольной суммы с использованием выбранного аппаратного декодера, имеющего непосредственный доступ к выделенной памяти, содержащей значение данных и контрольной суммы, A. determine the correctness of the checksum using the selected hardware decoder, which has direct access to the allocated memory containing the data value and the checksum,

B. по результатам завершения вычисления и проверки контрольной суммы, возвращают результат считывания внешней системе и освобождают выделенный канал. B. based on the results of the completion of the calculation and verification of the checksum, return the result of reading to the external system and release the dedicated channel.

При несовпадении контрольной суммы с вычисленной контрольной суммой, перед выполнение операции В, в частном случае реализации способа изменяют физические параметры считывания данных из блока и повторно считывают из блока с использованием канала, после чего повторно выполняют операцию А, при этом .в частном случае задают заранее заданное количество физических параметров считывания данных, и при несовпадении контрольных сумм после перебора всех заданных физических параметров считывания данных, возвращают код ошибки и помечают бок как не валидный. If the checksum does not match the calculated checksum, before performing operation B, in a particular case, the implementation of the method changes the physical parameters of reading data from the block and re-reads from the block using the channel, after which operation A is repeated, while in the particular case, set in advance a given number of physical parameters of data reading, and if the checksums do not match after enumeration of all the given physical parameters of data reading, they return an error code and mark the side as not valid.

В частном случае, используют аппаратное вычисление строки контрольной суммы с использованием выделенного декодера и последующее аппаратное сравнение вычисленной строки контрольной суммы со значением контрольной суммы с использованием логики выделенного декодера. In a particular case, the hardware calculation of the checksum string using a dedicated decoder is used, and the subsequent hardware comparison of the calculated checksum string with the checksum value using the logic of the dedicated decoder is used.

При этом аппаратный способ вычисления контрольной суммы может быть задан в матричном виде с использованием независимой перезаписываемой энергонезависимой памяти. В частном случае способ реализуется аппаратным контроллеров, в котором m равняется ближайшему целому от n, умноженного на 0,6 – 0,8. In this case, the hardware method for calculating the checksum can be specified in matrix form using an independent rewritable non-volatile memory. In a particular case, the method is implemented by hardware controllers, in which m is equal to the nearest integer from n multiplied by 0.6 - 0.8.

В другом частном случае, при наличии свободного канала и отсутствии запросов, осуществляется сбор мусора, а контроллер может быть выполнен инициирующим и осуществляющим сбор мусора при отсутствии запроса на считывание. In another particular case, when there is a free channel and no requests, garbage collection occurs, and the controller can be made to initiate and perform garbage collection when there is no request for a read.

Кроме того, 11 в качестве физических параметров считывания данных могут быть использованы мягкие значения, при этом используется блок формирования мягких значений, содержащий, по меньшей мере, два независимых модуля формирования мягких значений, каждый из которых служит для изменения мягких значений и их записи в блоки внешней памяти, выделенные соответствующим блокам памяти, с обеспечением возможности использования сформированных мягких значений соответствующим декодером при декодировании данных соответствующего блока памяти. In addition, 11 soft values can be used as physical parameters for reading data, using a soft value generating block containing at least two independent soft value generating modules, each of which is used to change soft values and write them to blocks. external memory allocated to the respective memory blocks, so that the generated soft values can be used by the respective decoder when decoding the data of the respective memory block.

Наличие нескольких модулей в блоке памятей для хранения секторов, в контроллере декодеров и LDPC-декодеров позволяют управляющему блоку декодера контроллера ТНИ обеспечивать равномерное распределения загруженности входящих в него NAND-флеш памяти при операции чтения.The presence of several modules in the memory block for storing sectors, in the controller of decoders and LDPC decoders, allows the control unit of the decoder of the TNI controller to ensure even distribution of the load of the NAND flash memory included in it during a read operation.

Все модули контроллеров каналов и модули памяти могут быть выполнен ы независимыми, в связи с чем одновременно все n каналов могут осуществлять передачу данных в любом выбранном направлении. All channel controller modules and memory modules can be made independent, and therefore all n channels can simultaneously transmit data in any chosen direction.

В одном из вариантов декодер контроллера твердотельного накопителя информации, дополнительно содержащий блок формирования мягких значений, имеющий, по меньшей мере два, независимых модулей формирования мягких значений, каждый из которых служит для запоминания, в каких трех модулях памяти блока памятей для хранения секторов сохранены данные его сектора, может быть соединен двухсторонней связью для управляющих команд с управляющим блоком и контроллером декодеров.In one embodiment, the decoder of the controller of the solid-state information storage device, further comprising a soft value generation unit having at least two independent soft value generation modules, each of which serves to remember in which three memory modules of the memory unit for storing sectors data is stored sector, can be connected by two-way communication for control commands with the control unit and the decoder controller.

В немеханических запоминающих устройствах на основе микросхем NAND-флеш памяти (далее, твердотельный накопитель информации - ТНИ) используется несколько отдельных микросхем NAND-флеш памяти. Они предназначены для хранения пользовательских данных.Non-mechanical storage devices based on NAND flash memory chips (hereinafter referred to as a solid state information drive - SIT) use several separate NAND flash memory chips. They are designed to store user data.

Современные ТНИ взаимодействуют с хостом через специализированные логические и физические интерфейсы. В современных ТНИ используется физический интерфейс PCIe 3.0 и логический интерфейс – NVMe. При этом микросхемы NAND-флеш памяти используют иные физические и логические интерфейсы, зачастую отличающиеся у различных производителей.Modern TNIs interact with the host through specialized logical and physical interfaces. Modern TNIs use a PCIe 3.0 physical interface and a NVMe logical interface. At the same time, NAND flash memory chips use other physical and logical interfaces, often different from different manufacturers.

Контроллер ТНИ, в частности, обеспечивает выполнение следующих операций: The TNI controller, in particular, provides the following operations:

- Операция записи. При данной операции пользовательские данные перемещаются от Хоста через контроллер ТНИ в набор микросхем NAND-флеш памяти. При этом, в процессе обработки данных контроллером ТНИ, данные подвергаются процедуре помехоустойчивого кодирования. Процедура помехоустойчивого кодирования выполняется с помощью аппаратных блоков – кодеров. В состав контроллера ТНИ может входить несколько кодеров.- Write operation. This operation moves user data from the Host through the TNI controller to the NAND flash chipset. At the same time, in the process of data processing by the TNI controller, the data is subjected to the procedure of noise-immune coding. The noise-correcting coding procedure is performed using hardware blocks - encoders. The TNI controller may include several encoders.

- Операция чтения. При этой операции данные извлекаются из элементов набора микросхем NAND-флеш памяти, далее обрабатываются контроллером ТНИ и передаются к хосту. При обработке контроллером ТНИ, данные декодируются с помощью аппаратных блоков - декодеров. В состав контроллера ТНИ может входить несколько Декодеров. При декодировании в данных исправляются возможные ошибки, возникшие в процессе записи, хранения, чтения и передачи информации внутри ТНИ. - Read operation. In this operation, data is extracted from the elements of the NAND-flash chipset, further processed by the TNI controller and transmitted to the host. When processed by the TNI controller, the data is decoded using hardware units - decoders. The TNI controller may include several Decoders. When decoding data, possible errors that have arisen in the process of recording, storing, reading and transmitting information within the TNI are corrected.

Стандартными логическими интерфейсами взаимодействия с микросхемами NAND-флеш памяти являются интерфейсы ONFI и Toggle. Чтобы Контроллер ТНИ мог поддерживать работу с микросхемами NAND-флеш памяти от различных производителей в состав Контроллера ТНИ входят специализированные аппаратные блоки - NAND-Каналы, которые преобразуют различные интерфейсы микросхем NAND-флеш памяти к единому логическому интерфейсу Канала.Standard logical interfaces for interaction with NAND flash memory chips are ONFI and Toggle interfaces. In order for the TNI Controller to support work with NAND flash memory chips from various manufacturers, the TNI Controller includes specialized hardware blocks - NAND Channels, which convert various interfaces of NAND flash memory chips to a single Channel logical interface.

Обычно Контроллеры ТНИ проектируются так, чтобы на их основе можно было изготовить различные варианты ТНИ, отличающиеся по объему и быстродействию. Зачастую это достигается путем включения/отключения некоторых из Каналов.Typically, HPS controllers are designed so that on their basis it is possible to manufacture various HPS options that differ in volume and speed. This is often achieved by enabling/disabling some of the Channels.

На фигуре представлена блок-схема декодирующего блока, где цифрами показаны: 1 – контроллер каналов, 2 – управляющий блок, 3 – блок памятей или внешняя память для промежуточного хранения данных секторов, а также служебных сведений, относящихся к секторам, например, мягкие значения, используемые для декодирования. Позицией 4 обозначен блок формирования мягких значений, 5 – контроллер декодеров или центральное управляющее устройство, предназначенное для согласования работы отдельных блоков, включая блок записи, а также для управления интерфейсами обмена данными с хостом. Позицией 6 обозначен блок декодеров, 7 – блок вычисления контрольной суммы при записи и передаче данных блоку записи, 8 – блок вычисления контродьной суммы считанных данных и передачи контрольной суммы блоку хоста, 9 – блок А или NAND каналы, 10 – блок В или флеш блок, 10 – блок С или блок записи и 11 – блок D или блок считывания. The figure shows a block diagram of the decoding unit, where the numbers show: 1 - channel controller, 2 - control unit, 3 - memory block or external memory for intermediate storage of sector data, as well as service information related to sectors, for example, soft values, used for decoding. Position 4 denotes a soft value generation unit, 5 is a decoder controller or a central control device designed to coordinate the operation of individual units, including the recording unit, as well as to control data exchange interfaces with the host. Position 6 indicates the decoder block, 7 is the block for calculating the checksum when writing and transmitting data to the recording block, 8 is the block for calculating the checksum of the read data and transmitting the checksum to the host block, 9 is block A or NAND channels, 10 is block B or flash block , 10 is the C block or write block and 11 is the D block or read block.

На фигуре узкими стрелками обозначаются управляющие команды, а широкими стрелками – каналы или процессы передачи данных. In the figure, narrow arrows indicate control commands, and wide arrows indicate channels or data transfer processes.

Далее будет подробно описано предлагаемое изобретение с примером его реализации. Выполненные курсивом в латинице условные обозначения относятся к аппаратным интерфейсам обмена данными и интерпретируют логические параметры, значения которых определяются параметрами сигналов, формирующихся в соответствующих электрических цепях аппаратных блоков. Выполненные прописными латинскими буквами обозначения характеризуют блоки данных, обрабатываемые и формируемые в процессе взаимодействия блоков устрйства, реализующего предложенный способ. Next, the invention will be described in detail with an example of its implementation. Symbols written in italics in Latin refer to hardware interfaces for data exchange and interpret logical parameters, the values of which are determined by the parameters of the signals generated in the corresponding electrical circuits of the hardware units. The designations made in capital Latin letters characterize the data blocks processed and formed in the process of interaction of the blocks of the device that implements the proposed method.

Работа декодера контроллера ТНИ может быть охарактеризована, как следующая задача: дано n – NAND-Каналов, которые поставляют данные для декодирования, и m – Декодеров, которые декодируют эти данные, где n > m. Производительность n Каналов приблизительно равна производительности m Декодеров. Необходимо обеспечить бесперебойную работу Декодеров так, чтобы при этом все Каналы обслуживались равномерно.The operation of the TNI controller decoder can be characterized as the following task: given n - NAND Channels that supply data for decoding, and m - Decoders that decode this data, where n > m . The performance of n Channels is approximately equal to the performance of m Decoders. It is necessary to ensure uninterrupted operation of the Decoders so that all Channels are served evenly.

Блок A представляет собой NAND-Контроллеры. Из него данные поступают в декодирующий блок (блок контроллера ТНИ). Block A represents the NAND Controllers. From it, the data enters the decoding unit (TNI controller unit).

Блок B управляет всеми n Каналами и передает Декодирующему Блоку информацию о наличии на Каналах данных для декодирования. Помимо этого Блок B формирует все необходимые команды для NAND-Контроллеров. Block B governs allnchannels and transmits to the Decoding Unit information about the presence of data on the Channels for decoding. In addition, Block B generates all the necessary commands for the NAND Controllers.

Допустим n=8. Порция данных, предназначенная для декодирования, равна длине кодового слова и называется сектором. Имеется 2 режима декодирования: жесткий и мягкий. При жестком декодировании сектор считывается с NAND-Контроллера один раз, при мягком декодировании сектор считывается 3 раза с разными порогами чтения, и за счет этого формируются мягкие значения LLR. Для каждого из Каналов блок B передает Декодирующему Блоку информацию о секторе, состоящую из следующих полей: флаг ready_to_decode, говорящий, что на Канале есть сектор, который надо декодировать; psa – физический адрес сектора, который надо декодировать; from_gc – флаг, означающий, что сектор поступает от сборщика мусора; cur_bit_num – число говорящее, который раз считывается сектор, может принимать значения 0, 1, или 2 в зависимости от того первый, второй или третий раз считывается данный сектор; last_bit_num – будет равен 2, если это мягкое декодирование, и равен 0 – если жесткое декодирование.Let's say n = 8. The portion of data intended for decoding is equal to the length of the code word and is called a sector. There are 2 decoding modes: hard and soft. With hard decoding, the sector is read from the NAND controller once, with soft decoding, the sector is read 3 times with different read thresholds, and due to this, soft LLR values are formed. For each of the Channels, block B sends to the Decoding Block information about the sector, consisting of the following fields: a ready_to_decode flag, which says that there is a sector on the Channel to be decoded; psa is the physical address of the sector to be decoded; from_gc - flag indicating that the sector comes from the garbage collector; cur_bit_num - the number that says which time the sector is read, can take the values 0, 1, or 2, depending on whether this sector is read for the first, second or third time; last_bit_num will be 2 if it is a soft decode and 0 if it is a hard decode.

Блок С осуществляет обратную запись на диск секторов от сборщика мусора. Block C writes back sectors from the garbage collector to the disk.

Блок D передает Хосту прочитанные сектора. Block D sends the read sectors to the Host.

В режиме жесткого декодирования используется блок 3, состоящий состоит из k независимых модулей памяти, каждый из которых может сохранить в себе 1 сектор. В нашем случае k=18. Каждый модуль памяти может быть свободным и занятым. Каждый модуль памяти имеет флаг mem_free, говорящий, что модуль памяти свободный, и выставляет его управляющему блоку 2. In the hard decoding mode, block 3 is used, consisting of k independent memory modules, each of which can store 1 sector. In our case, k = 18. Each memory module can be free or occupied. Each memory module has a mem_free flag, which says that the memory module is free, and exposes it to control block 2.

Блок 1 состоит из n модулей, каждый из которых обслуживает свой канал. Каждый из этих модулей передает информацию о своем канале управляющему блоку 2. Если управляющий блок 2 обнаруживает флаги ready_to_decode (готов к декодированию), т.е. если имеются каналы, которые хотят обратиться к декодеру, и если имеются свободные модули памяти, то управляющий блок выбирает по кругу один канал и один модуль памяти и связывает их друг с другом. В модуле памяти запоминается и хранится информация о секторе с выделенного ему канала. После этого выбранный модуль канала начинает перекачку данных с NAND в выделенный модуль памяти. Поскольку ширина элемента памяти шире, чем ширина поступающих от NAND данных, то модуль Канала сначала накапливает данные до нужной ширины, и уже потом записывает в память. Все модули каналов 2 и модули памяти независимые, поэтому одновременно все n Каналов могут осуществлять перекачку данных. Когда перекачка сектора в память завершена, модуль канала освобождается, и информация о завершении перекачки передается в блок B, одновременно модуль памяти поднимает флаг ready (готов), показывающий, что в этом модуле памяти хранится готовый к декодированию сектор. Block 1 consists of n modules, each serving its own channel. Each of these modules transmits information about its channel to the control unit 2 . If the control block 2 detects the ready_to_decode flags (ready to decode), i.e. if there are channels that want to access the decoder, and if there are free memory modules, then the control unit selects one channel and one memory module in a circle and associates them with each other. The memory module remembers and stores information about the sector from the channel allocated to it. After that, the selected channel module starts transferring data from NAND to the dedicated memory module. Since the width of the memory element is wider than the width of the data coming from the NAND, the Channel module first accumulates the data to the desired width, and only then writes to the memory. All Channel 2 modules and memory modules are independent, so all n Channels can transfer data at the same time. When the sector-to-memory swap is completed, the channel module is freed and information about the completion of the swap is passed to block B, at the same time the memory module raises the ready flag, indicating that the sector is stored in this memory module ready for decoding.

Блок 5 содержит m модулей декодера, каждый из которых обслуживает свой декодер. В блоке 6 содержатся m независимых декодеров, например, LDPC-декодеров (декодеров с low-density parity-check или с кодом с малой плотностью проверок на чётность). В нашем случае m =2. Декодер может быть свободным и занятым. Модуль декодера передает состояние своего Декодера управляющему блоку через флаг dec_free (свободный декодер). Если управляющий блок 2 обнаруживает готовый к декодированию сектор в памяти и свободный декодер, то он выбирает в цикле готовый модуль памяти и свободный модуль декодера и связывает их друг с другом. Модуль декодера запоминает информацию сектора с выделенного ему модуля памяти. Выбранный модуль декодера запускает процесс декодирования на своем декодере. В процессе декодирования Декодер запрашивает у модуля декодера начальные значения LLR (тест отношения правдоподобия или likelihood ratio test) в удобном для него порядке. Модуль декодера извлекает информацию из выделенного ему модуля памяти, формирует LLR и передает их декодеру. После загрузки всех начальных значений LLR декодер сообщает об этом своему модулю декодера, а модуль декодера передает эту информацию выделенному ему модулю памяти, после чего декодирование продолжается, а соответствующий модуль памяти освобождается с выставлением соответствующего флага. Block 5 contains m decoder modules, each of which serves its own decoder. Block 6 contains m independent decoders, for example, LDPC decoders (decoders with low-density parity-check or low-density parity-check code). In our case m =2. A decoder can be free or busy. The Decoder Module passes the state of its Decoder to the control block via the dec_free flag (free decoder). If the control unit 2 detects a sector in the memory ready for decoding and a free decoder, then it selects in a cycle the ready memory module and the free decoder module and links them to each other. The decoder module stores the sector information from the memory module allocated to it. The selected decoder module starts the decoding process on its decoder. During the decoding process, the Decoder requests the initial values of the LLR (likelihood ratio test) from the decoder module in a convenient order. The decoder module extracts information from the memory module allocated to it, forms LLRs and passes them to the decoder. After loading all the initial LLR values, the decoder reports this to its decoder module, and the decoder module transfers this information to the memory module allocated to it, after which decoding continues, and the corresponding memory module is released with the corresponding flag set.

Ответом каждого декодера является декодированный сектор, т.е. сектор с исправленными ошибками, и этот ответ формируется в специальном буфере ответа. У каждого декодера может иметься два таких буфера. Если декодирование завершилось неуспешно, то информация о неуспешном декодировании передается от модуля декодера через управляющий блок соответствующему каналу, с которого поступил сектор. Если декодирование завершилось успешно, и в первом буфере ответа сформировался декодированный сектор, декодер переключается на второй буфер ответа и начинает декодировать новый сектор, формируя ответ во втором секторе. При этом выставляется флаг, указывающий на то, что в буфере ответа есть готовый декодированный сектор и его нужно обработать. Если имеется декодированный сектор от сборщика мусора, то этот флаг выставляется блоку 7, в противном случае он выставляется блоку 8.The response of each decoder is the decoded sector, i.e. sector with corrected errors, and this response is formed in a special response buffer. Each decoder may have two such buffers. If the decoding was unsuccessful, then information about the unsuccessful decoding is transmitted from the decoder module through the control block to the corresponding channel from which the sector arrived. If the decoding is successful and a decoded sector is formed in the first response buffer, the decoder switches to the second response buffer and starts decoding a new sector, generating a response in the second sector. In this case, a flag is set indicating that there is a ready decoded sector in the response buffer and it needs to be processed. If there is a decoded sector from the garbage collector, then this flag is set to block 7, otherwise it is set to block 8.

Блок 7, обнаружив декодированный сектор, при наличии свободной памяти, закачивает этот сектор в память. Одновременно с закачкой, модуль 7 вычисляет контрольную сумму. После закачки информационной части кодового слова, формируется контрольная сумма. Полученная контрольная сумма сравнивается с контрольной суммой, находящейся в метаданных данного сектора (некоторое количество первых бит кодового слова). Если эти контрольные суммы совпадают, то считается что слово декодировано правильно, и загруженный в память блока 7 сектор, передается блоку записи C. Информация о успешном декодировании перелается от модуля декодера через управляющий блок соответствующему каналу, с которого пришел этот сектор. После выгрузки сектора в память блока 7 соответствующий буфер ответа декодера становится свободным. Если контрольные суммы не совпали, то декодирование считается неуспешным и информация о неуспешном декодировании перелается от модуля декодера через управляющий блок соответствующему Каналу, с которого пришел этот сектор. Block 7 , having found the decoded sector, in the presence of free memory, downloads this sector into memory. Simultaneously with the download, module 7 calculates the checksum. After downloading the information part of the code word, a checksum is formed. The resulting checksum is compared with the checksum contained in the metadata of the given sector (a certain number of the first bits of the codeword). If these checksums match, then it is considered that the word was decoded correctly, and the sector loaded into the memory of block 7 is transferred to the recording block C. Information about successful decoding is sent from the decoder module through the control block to the corresponding channel from which this sector came. After unloading the sector into the memory of block 7, the corresponding decoder response buffer becomes free. If the checksums do not match, then decoding is considered unsuccessful and information about unsuccessful decoding is sent from the decoder module through the control block to the corresponding Channel from which this sector came.

Блок 8, обнаружив декодированный сектор, обращается к блоку хоста D и просит выделить память под закачку сектора. После того как блок хоста D выделяет эту память, блок 8 начинает закачивать этот сектор из буфера ответа в выделенную память. При этом выкачивается только информационная часть кодового слова. Одновременно с закачкой модуль 8 вычисляет контрольную сумму. После закачки информационной части кодового слова контрольная сумма оказывается сформирована. Полученная контрольная сумма сравнивается с контрольной суммой, находящейся в метаданных данного сектора. Если эти контрольные суммы совпадают, то считается что слово декодировано правильно. Информация о успешном декодировании передается от модуля декодера через управляющий блок соответствующему Каналу, с которого пришел этот сектор. После выгрузки сектора в выделенную память блока хоста D соответствующий буфер ответа Декодера становится свободным. Если контрольные суммы не совпали, то декодирование считается неуспешным и информация о неуспешном декодировании перелается от модуля декодера через управляющий блок соответствующему Каналу, с которого пришел этот сектор. Block 8 , having found the decoded sector, refers to the host block D and asks to allocate memory for downloading the sector. After host block D allocates this memory, block 8 starts pumping this sector from the response buffer into the allocated memory. In this case, only the information part of the code word is downloaded. Simultaneously with the download, module 8 calculates the checksum. After downloading the information part of the code word, the checksum is formed. The resulting checksum is compared with the checksum contained in the sector's metadata. If these checksums match, then the word is considered to be decoded correctly. Information about successful decoding is transmitted from the decoder module through the control block to the corresponding Channel from which this sector came. After the sector has been swapped into the allocated memory of the host block D, the corresponding Decoder response buffer becomes free. If the checksums do not match, then decoding is considered unsuccessful and information about unsuccessful decoding is sent from the decoder module through the control block to the corresponding Channel from which this sector came.

Если Декодер завершил декодирование, но видит, что второй буфер ответа еще не освободился, то он переходит в состояние простоя, и выходит из этого состояния только тогда, когда этот буфер ответа освободится. Декодер, находящийся в состоянии простоя считается занятым. Таким образом Декодер считается свободным, если он не находится в процессе декодирования и у него есть свободный буфер ответа.If the Decoder has completed decoding, but sees that the second response buffer has not yet become free, then it enters the idle state, and exits this state only when this response buffer is free. A decoder that is idle is considered busy. Thus, a Decoder is considered free if it is not in the process of decoding and has a free response buffer.

В режиме мягкого декодирования используется блок 4. Этот блок состоит из q независимых модулей формирования мягких значений, каждый из которых служит для запоминания, в каких трех модулях памяти были сохранены данные его сектора. В нашем случае q=2. Каждый из этих модулей может быть свободным или занятым и сообщает о своем состоянии управляющему блоку 2 с помощью флага soft_free. Block 4 is used in soft decoding mode. This block consists of q independent soft value generating modules, each of which is used to remember in which three memory modules the data of its sector was stored. In our case q =2. Each of these modules can be free or busy and reports its status to control block 2 using the soft_free flag.

Если управляющий блок 2 видит, что есть Каналы, у которых last_bit_num=2 (т.е. этот Канал хочет выполнить мягкое декодирование), есть свободный модуль формирования мягких значений и свободный модуль памяти, то управляющий блок выбирает по кругу один из модулей Канала, которые хотят выполнить мягкое декодирование, выбирает один из свободных модулей формирования мягких значений и один из свободных модулей памяти, и связывает выбранный модуль формирования мягких значений с выбранным Кана лом. Модуль формирования мягких значений запоминает информацию о секторе выбранного Канала и номер выбранного модуля памяти. После этого начинается процесс перекачки данных с Канала в модуль памяти. По завершении перекачки Канал обращается к NAND за следующим чтением этого сектора с новыми пороговыми значениями, и после завершения этого чтения опять поднимает флаг готовности сектора ready_to_decode, но при этом уже будет cur_bit_num=1. Управляющий блок в приоритетном порядке выделяет этому Каналу модуль памяти, который запоминается в выделенном модуле формирования мягких значений. После этого опять закачивается сектор с Канала в память. И по завершении скачивания запрашивается следующее значением сектора и по его готовности поднимается флаг ready_to_decode с cur_bit_num=2. Управляющий блок опять в приоритетном порядке выделяет этому Каналу модуль памяти, который запоминается в выделенном модуле формирования мягких значений. После этого опять закачивается сектор с Канала в память. И по завершении третьего скачивания модуль Канала считается свободным, а выбранный модуль формирования мягких значений поднимает флаг ready, который передает управляющему блоку 2. If the control block 2 sees that there are Channels that have last_bit_num=2 (i.e. this Channel wants to perform soft decoding), there is a free soft value generation module and a free memory module, then the control block selects one of the Channel modules in a circle, which want to perform soft decoding selects one of the free soft value generators and one of the free memory modules, and associates the selected soft value generator with the selected Channel. The soft value generation module remembers information about the sector of the selected Channel and the number of the selected memory module. After that, the process of transferring data from the Channel to the memory module begins. Upon completion of the transfer, the Channel turns to NAND for the next reading of this sector with new threshold values, and after this reading is completed, the ready_to_decode sector flag is raised again, but cur_bit_num = 1. The control block allocates a memory module to this Channel in priority order, which is stored in a dedicated module for the formation of soft values. After that, the sector is again downloaded from the Channel into memory. And upon completion of the download, the next sector value is requested and, when it is ready, the ready_to_decode flag is raised with cur_bit_num = 2. The control block again allocates a memory module to this Channel in priority order, which is stored in the dedicated soft value generation module. After that, the sector is again downloaded from the Channel into memory. And upon completion of the third download, the Channel module is considered free, and the selected soft value generation module raises the ready flag, which is passed to the control block 2.

Управляющий блок, видя флаг ready от модуля формирования мягких значений, дожидается, когда освободиться Декодер и связывает освободившийся модуль декодера с готовым модулем формирования мягких значений. The control block, seeing the ready flag from the soft value generation module, waits for the Decoder to become free and connects the freed decoder module with the ready soft value generation module.

Модуль декодера запоминает информацию сектора с выделенного ему модуля формирования мягких значений. Выбранный модуль декодера запускает процесс декодирования на своем Декодере. В процессе декодирования Декодер запрашивает у модуля декодера начальные значения LLR в удобном для него порядке. Для формирования начальных значений LLR модуль декодера извлекает информацию сразу из трех модулей памяти, соответствующих выбранному модулю формирования мягких значений. После загрузки всех начальных значений LLR Декодер сообщает об этом своему модулю декодера, а модуль декодера передает эту информацию выделенному ему модулю формирования мягких значений, после чего этот модуль формирования мягких значений памяти становится свободным и становятся свободными все три модуля памяти, соответствующих данному модулю формирования мягких значений.The decoder module stores the sector information from the soft value generating module allocated to it. The selected Decoder Module starts the decoding process on its Decoder. During the decoding process, the Decoder requests the initial LLR values from the decoder module in the order convenient for it. To form the initial LLR values, the decoder module extracts information from three memory modules at once, corresponding to the selected soft value generation module. After loading all the initial LLR values, the Decoder informs its decoder module about this, and the decoder module passes this information to the soft value generation module allocated to it, after which this memory soft value generation module becomes free and all three memory modules corresponding to this soft value generation module become free. values.

Дальнейший процесс декодирования полностью аналогичен режиму жесткого декодирования.The further decoding process is completely similar to the hard decoding mode.

В качестве Хоста, упомянутого в описании, подразумевается вышестоящее по иерархии управляющее звено. Им может быть микропроцессор, сервер и т.п. устройство. As the Host mentioned in the description, the control link higher in the hierarchy is meant. It can be a microprocessor, server, etc. device.

Далее описан порядок выполнения основных операций, реализуемых Декодирующим блоком.The following describes the order of execution of the main operations implemented by the Decoding block.

Операции, реализуемые Декодирующим БлокомOperations Implemented by the Decode Block

ВключениеInclusion

При включении устройства Декодирующий Блок получает сигнал INIT, который переводит модуль в начальное состояние. Кроме того, после включения устройства на модуль приходят сигналы When the device is turned on, the Decoding Block receives an INIT signal, which brings the module to its initial state. In addition, after turning on the device, the module receives signals

1) WORD_LEN - количество порций данных сектора, поступающих от канала, минус 1; 1) WORD_LEN - the number of slices of sector data coming from the channel, minus 1;

2) COL_NUM - равен количеству столбцов в LDPC матрице минус 1; 2) COL_NUM - equal to the number of columns in the LDPC matrix minus 1;

3) SHORTENNING_SHIFT - равен количеству дополняющих бит (уверенных нулей) в первом стобце матрицы; 3) SHORTENNING_SHIFT - equal to the number of padding bits (good zeros) in the first column of the matrix;

4) PUNCTURING_SHIFT - равен количеству невыколотых бит в первом выколотом столбце матрицы;4) PUNCTURING_SHIFT - equal to the number of non-punctured bits in the first punctured column of the matrix;

5) BEG_ADR - адрес в памяти команд LDPC декодера, где начинается программа обработки, текущей LDPC матрицы; в случае если в память команд загружена только одна матрица, то этот сигнал равен 0;5) BEG_ADR - address in the LDPC command memory of the decoder, where the processing program starts, of the current LDPC matrix; if only one matrix is loaded into the instruction memory, then this signal is equal to 0;

6) BEG2_ADR - адрес в памяти команд LDPC декодера, где начинается программа обработки второй и более итераций; дело в том, что при второй и более итерациях несколько первых команд не используются; как правило число неиспользуемых команд равно 7, и соответственно BEG2_ADR = BEG_ADR + 7;6) BEG2_ADR - address in the LDPC command memory of the decoder, where the program for processing the second or more iterations begins; the fact is that during the second and more iterations, the first few commands are not used; as a rule, the number of unused commands is 7, and accordingly BEG2_ADR = BEG_ADR + 7;

7) LAST_ADR - адрес последней команды в памяти команд.7) LAST_ADR - address of the last instruction in the instruction memory.

8) COL_INFO_BEG_ADR - адрес начала блока, относящегося у текущей LDPC матрице и содержащего информацию о непустых ячейках каждого их столбцов; в случае, если декодер ослуживает только одну матрицу, COL_INFO_BEG_ADR = 0;8) COL_INFO_BEG_ADR - address of the beginning of the block related to the current LDPC matrix and containing information about non-empty cells of each of their columns; in case the decoder serves only one matrix, COL_INFO_BEG_ADR = 0;

9) LAST_ROW_NUM - число строк в текущей LDPC матрице минус 1;9) LAST_ROW_NUM - number of rows in the current LDPC matrix minus 1;

10) LAST_EDGE_NUM - число непустых ячеек в текущей LDPC матрице минус 1;10) LAST_EDGE_NUM - the number of non-empty cells in the current LDPC matrix minus 1;

11) SECOND_V2C_MEM_COL_BEG - количество столбцов в первой половине, текущей LDPC матрицы; Поскольку в LDPC декодере используется однопортовая память 1RW, в которую нельзя одновременно писать и читать, то чтобы обеспечить бесперебойную работу, матрица делится на две части и каждая часть обслуживается свои вычислителем;11) SECOND_V2C_MEM_COL_BEG - number of columns in the first half of the current LDPC matrix; Since the LDPC decoder uses single-port 1RW memory, which cannot be written and read at the same time, to ensure smooth operation, the matrix is divided into two parts, and each part is serviced by its own calculator;

12) LAST_ITER_NUM - максимальное число итераций минус 1.12) LAST_ITER_NUM - maximum number of iterations minus 1.

Все перечисленные выше параметры автоматически вычисляются по LDPC матрице с помощью специальной инициализирующей программы. В частности, составляется расписание вычислений в процессе декодирования и это расписание сохраняется в памяти команд. Поэтому если память команд не является ROM, то расписание должно быть загружено в память команд каждого из декодеров до подачи сигнала INIT.All the parameters listed above are automatically calculated from the LDPC matrix using a special initializing program. In particular, a calculation schedule is made during the decoding process, and this schedule is stored in the instruction memory. Therefore, if the instruction memory is not ROM, then the schedule must be loaded into the instruction memory of each of the decoders before the INIT signal is issued.

ВыключениеShutdown

При выключении устройства приходит сигнал SWITCH_OFF_MODE. Этот сигнал удерживается все время, пока устройство выключается. В процессе выключения устройства выполняются следующие действия:When the device is turned off, the signal SWITCH_OFF_MODE is received. This signal is held all the time while the device is turned off. During the device shutdown, the following actions are performed:

1) Прекращается декодирование секторов для хоста.1) Stop decoding sectors for the host.

2) Освобождаются блоки памяти, занятые секторами для хоста.2) Memory blocks occupied by sectors for the host are released.

3) Освобождаются модули формирования софт значений, если они формируют софт значение для сектора для хоста.3) Soft value generators are released if they generate a soft value for the sector for the host.

4) После того как все декодеры и все модули памяти сообщают, что они свободны, и если при этом сигнал EVERYTHING_IS_READ поднят (это означает, что в флэш блоке нет страниц, которые еще надо декодировать), то модуль поднимает сигнал NO_MORE_SECTORS_FROM_GC (который означает, что больше секторов от сборщика мусора не поступит) и передает его блоку записи.4) After all decoders and all memory modules report that they are free, and if the EVERYTHING_IS_READ signal is raised (this means that there are no pages in the flash block that still need to be decoded), then the module raises the NO_MORE_SECTORS_FROM_GC signal (which means that no more sectors will come from the garbage collector) and passes it to the write block.

Взаимодействие с флеш блокомInteraction with the flash block

Взаимодействие с каналами (а точнее с Флеш Блок) происходит следующим образом:Interaction with channels (or rather with Flash Block) occurs as follows:

1) Декодирующий Блок отправляет флеш блоку сигналы READY_TO_GET_HARD и READY_TO_GET_SOFT, сообщая, что может принять сектор для декодирования с помощью хард значений и софт значений соответственно. Первый сигнал фактически говорит, что у Декодирующего Блока есть место в памяти для загрузки одного сектора, а второй сигнал, сообщает, что кроме того у Декодирующего Блока есть свободный модуль для формирования софт значений.1) The Decode Block sends the READY_TO_GET_HARD and READY_TO_GET_SOFT signals to the flash block, indicating that it can accept a sector for decoding using hard values and soft values, respectively. The first signal actually says that the Decoding Block has a place in memory to load one sector, and the second signal says that, in addition, the Decoding Block has a free module for generating soft values.

2) С помощью сигнала SECTOR_READY канал сообщает, что у него есть сектор для декодирования. На каждый канал свой сигнал SECTOR_READY. Вместе с этим сигналом приходят сигналы 2) With the SECTOR_READY signal, the channel indicates that it has a sector to decode. Each channel has its own SECTOR_READY signal. Along with this signal come signals

а) HARD - индикатор, что ожидается хард декодирование. Фактически HARD = (BIT_NUM == 0) && (BIT_NUM_TO_DECODE == 0).a) HARD - indicator that hard decoding is expected. Actually HARD = (BIT_NUM == 0) && (BIT_NUM_TO_DECODE == 0).

б) BIT_NUM - номер софт бита. Если 0, то - это хард бит, 1 - первый софт бит и т.д.b) BIT_NUM - soft bit number. If 0, then it is a hard beat, 1 is the first soft beat, and so on.

в) BIT_NUM_TO_DECODE - сколько софт бит планируется загрузить минус 1. Если BIT_NUM < BIT_NUM_TO_DECODE, то мы просто загружаем страницу в память модуля и декодировать будем позже. Если BIT_NUM = BIT_NUM_TO_DECODE, то после загрузки сектора декодируем сектор с учетом всех ранее загруженных бит.c) BIT_NUM_TO_DECODE - how many soft bits are planned to be loaded minus 1. If BIT_NUM < BIT_NUM_TO_DECODE, then we simply load the page into the module's memory and decode it later. If BIT_NUM = BIT_NUM_TO_DECODE, then after loading the sector, we decode the sector, taking into account all previously loaded bits.

г) FROM_GC - индикатор того, что сектор от сборщика мусора.d) FROM_GC - an indicator that the sector is from the garbage collector.

д) PPA - физический адрес страницы. Используется только если сектор от сборщика мусора.e) PPA - the physical address of the page. Used only if the sector is from a garbage collector.

е) SECTOR_NUM - номер сектора на странице. Используется только если сектор от сборщика мусора.f) SECTOR_NUM - sector number on the page. Used only if the sector is from a garbage collector.

ж) TEMPERATURE - температура сектора. Используется только если сектор от сборщика мусора.g) TEMPERATURE - sector temperature. Used only if the sector is from a garbage collector.

з) FROM_REPAIR_TO_DECODE - канал говорит, что читаемая страница от восстановителя супер-блоков.h) FROM_REPAIR_TO_DECODE - the channel says that the page being read is from the super-block restorer.

и) REPAIR_PARITY_TO_DECODE - канал говорит, что читаемая страница от восстановителя супер-блоков принадлежит проверочному вею.i) REPAIR_PARITY_TO_DECODE - the channel says that the page being read from the super-block restorer belongs to the check way.

3) После получения от каналов сигналов SECTOR_READY Декодирующий Блок выбирает по кругу один из каналов и разрешает ему перекачку данных с помощью сигнала READY_TO_RECEIVE_DATA. При поступлении сигнала READY_TO_RECEIVE_DATA одному из каналов сигнал SECTOR_READY у данного канала опускается. Сигнал READY_TO_RECEIVE_DATA удерживается, пока от NAND контроллера не поступит первая порция данных. 3) After receiving the SECTOR_READY signals from the channels, the Decoding Block selects one of the channels in a circle and allows it to transfer data using the READY_TO_RECEIVE_DATA signal. When a READY_TO_RECEIVE_DATA signal is received by one of the channels, the SECTOR_READY signal for this channel is omitted. The READY_TO_RECEIVE_DATA signal is held until the first chunk of data arrives from the NAND controller.

4) Индикатором поступления данных от NAND контроллеров являются сигналы DATA_IN_PUSH. Сами данные поступают через входы DATA_IN. 4) The indicator of data receipt from NAND controllers are DATA_IN_PUSH signals. The data itself comes in through the DATA_IN inputs.

5) После получения от NAND контроллера всего сектора Декодирующий Блок посылает флэш блоку сигнал DATA_TO_DECODE_FINISHED, который нужен чтобы освободить канал для других операций.5) After receiving the entire sector from the NAND controller, the Decoding Block sends the DATA_TO_DECODE_FINISHED signal to the flash block, which is needed to free the channel for other operations.

6) В момент первого поступления сигнала READY_TO_RECEIVE_DATA флэш блок может отменить передачу данных декодеру с помощью сигнала CANCEL_READ. Просто опустить сигнал SECTOR_READY недостаточно, поскольку реакция модуля Декодирующего Блока на сигнал запаздывает на 1 такт, и сигнал CANCEL_READ позволяет снять противоречия, которые могут возникнуть из-за этого запаздывания. Сигнал CANCEL_READ может появиться в двух случаях:6) At the time of the first arrival of the READY_TO_RECEIVE_DATA signal, the flash block may cancel the data transfer to the decoder using the CANCEL_READ signal. It is not enough to simply omit the SECTOR_READY signal, because the response of the Decoding Block module to the signal is delayed by 1 cycle, and the CANCEL_READ signal allows you to remove the contradictions that may arise due to this delay. The CANCEL_READ signal can appear in two cases:

а) при выключении устройства, если передаваемые данные не являются повторным чтением сборщика мусора;a) when the device is turned off, if the transmitted data is not a re-read of the garbage collector;

б) если для разрешения патовых ситуаций надо срочно пропустить на данный канал операцию записи, отменив при этом операцию чтения.b) if, in order to resolve stalemate situations, it is necessary to urgently skip the write operation to this channel, while canceling the read operation.

7) По завершении декодирования и проверки CRC Декодирующий Блок посылает флэш блоку, а точнее соответствующим каналам информацию об успешности декодирования с помощью сигналов DECODE_SUCCESS (декодирование завершилось успешно) и DECODE_FAIL (декодирование завершилось не успешно). Вместе с этими сигналами поступают сигналы:7) Upon completion of decoding and CRC check, the Decoding Unit sends the flash block, or rather the corresponding channels, information about the success of the decoding using the signals DECODE_SUCCESS (decoding completed successfully) and DECODE_FAIL (decoding completed unsuccessfully). Together with these signals, signals are received:

а) PPA_TO_CHANNEL - физический адрес страницы;a) PPA_TO_CHANNEL - physical address of the page;

б) SECTOR_NUM_TO_CHANNEL - номер декодированного или недекодированного сектора на странице.b) SECTOR_NUM_TO_CHANNEL - number of decoded or undecoded sector on the page.

в) FROM_GC_TO_CHANNEL - индикатор того, что декодированный или недекодированный сектор был от сборщика мусора.c) FROM_GC_TO_CHANNEL - an indicator that the decoded or undecoded sector was from the garbage collector.

г) FROM_REPAIR_TO_CHANNEL - говорит, что декодированный или недекодированный сектор от восстановителя. При неуспешном декодировании эта информация используется для формирования повторного чтения, а при успешном декодировании уменьшает счетчик обрабатываемых секторов блока-жертвы.d) FROM_REPAIR_TO_CHANNEL - says that the decoded or undecoded sector is from the restorer. In case of unsuccessful decoding, this information is used to form a reread, and in case of successful decoding, it reduces the counter of processed sectors of the victim block.

8) Если какой-то декодер простаивает, поскольку не может сбросить сектор от сборщика мусора в блок записи, то Декодирующий Блок посылает флэш блоку сигнал DECODER_IDLE, который информирует о возникновении патовой ситуации, и необходимости форсировать запись вордлайнов на NAND контроллеры.8) If some decoder is idle because it cannot reset the sector from the garbage collector to the write block, then the Decoding Block sends the DECODER_IDLE signal to the flash block, which informs about the occurrence of a stalemate and the need to force the writing of wordlines to NAND controllers.

Взаимодействие с блоком записиInteraction with the Recorder

Взаимодействие с блоком записи осуществляется следующим образом:Interaction with the record block is carried out as follows:

1) После того как декодеры декодировали сектор, он передается на блок вычисления контрольной суммы (CRC). 1) After the decoders have decoded the sector, it is transmitted to the checksum calculation (CRC) block.

2) В момент, когда подсчитана контрольная сумма и если сектор не с проверочного вея, то поднимается флаг FIND_FOR_GC, который просит у блока записи узнать, есть ли в его памяти сектор с адресом LSA_FOR_GC.2) At the moment when the checksum is calculated and if the sector is not from the check wave, then the FIND_FOR_GC flag is raised, which asks the write block to find out if there is a sector with the LSA_FOR_GC address in its memory.

3) На следующий такт приходит ответ от блока записи в виде сигнала NO_GC_SECTOR_NEEDED.3) On the next cycle, the response from the record block comes in the form of a NO_GC_SECTOR_NEEDED signal.

4) Если NO_GC_SECTOR_NEEDED = 1, то это означает, что в памяти блока записи уже имеется сектор с адресом LSA_FOR_GC, и, значит, он более актуальный, и, следовательно, данный декодированный сектор не нужен. Этот же сигнал NO_GC_SECTOR_NEEDED передается декодеру, и декодер освобождает память с данными данного сектора. При этом модуль CRC_CALC_FOR_GC_SECTOR прекращает обработку данного сектора.4) If NO_GC_SECTOR_NEEDED = 1, then this means that there is already a sector with the LSA_FOR_GC address in the memory of the write block, and, therefore, it is more up-to-date, and therefore this decoded sector is not needed. The same NO_GC_SECTOR_NEEDED signal is sent to the decoder, and the decoder releases the memory with the given sector data. In this case, the CRC_CALC_FOR_GC_SECTOR module stops processing this sector.

5) Если NO_GC_SECTOR_NEEDED = 0 на следующий такт после сигнала FIND_FOR_GC, или если сигнал FIND_FOR_GC не посылался (сектор был с проверочного вея), то это означает, что в памяти блока записи нет сектора с адресом LSA_FOR_GC.5) If NO_GC_SECTOR_NEEDED = 0 on the next cycle after the FIND_FOR_GC signal, or if the FIND_FOR_GC signal was not sent (the sector was from the check wave), then this means that there is no sector with the LSA_FOR_GC address in the write block memory.

а) Тогда если контрольная сумма не сошлась, то декодирование считается неуспешным, о чем сообщается соответствующему каналу с помощью сигнала DECODE_FAIL, который мы описывали ранее.a) Then if the checksum does not agree, then the decoding is considered unsuccessful, which is reported to the corresponding channel using the DECODE_FAIL signal that we described earlier.

б) Если контрольная сумма сошлась, то декодирование считается успешным, о чем сообщается соответствующему каналу с помощью сигнала DECODE_SUCCESS, который мы описывали ранее. В результате выгрузка проверочных бит сектора продолжается.b) If the checksum has converged, then the decoding is considered successful, which is reported to the corresponding channel using the DECODE_SUCCESS signal that we described earlier. As a result, the unloading of the sector parity bits continues.

6) В случае 5 б) модуль CRC_CALC_FOR_GC_SECTOR просит у блока записи место для записи сектора с помощью сигнала GET_SECTOR_FOR_GC. При это он еще передает сигнал TEMPERATURE_FOR_GC, сообщая какой температуры нужен вордлайн. Если параметр синтеза superblock_repair включен, то кроме того выставляются сигналы:6) In case 5 b), the CRC_CALC_FOR_GC_SECTOR module asks the writer for a place to write the sector using the GET_SECTOR_FOR_GC signal. At the same time, it also transmits the TEMPERATURE_FOR_GC signal, telling what temperature the wordline needs. If the superblock_repair synthesis parameter is enabled, then the following signals are also set:

а) WB_REPAIR_SECTOR - совзаимодействие блоку записи, что поступает сектор от восстановителя супер-блоков;a) WB_REPAIR_SECTOR - co-interaction with the record block that the sector comes from the super-block restorer;

б) WB_REPAIR_PARITY - совзаимодействие блоку записи, что поступающий сектор с проверочного вея;b) WB_REPAIR_PARITY - co-operation to the record block, that the incoming sector is from the check wave;

в) WB_REPAIR_SEC_NUM - номер сектора в вордлайне поступающего сектора.c) WB_REPAIR_SEC_NUM - sector number in the incoming sector wordline.

7) В ответ блок записи выдает сигнал SET_SECTOR_FOR_GC. В результате сигнал GET_SECTOR_FOR_GC опускается, и можно начать запись сектора из внутренней памяти модуля Декодирующий Блок в память блока записи.7) In response, the writer issues a SET_SECTOR_FOR_GC signal. As a result, the GET_SECTOR_FOR_GC signal is omitted, and you can start writing a sector from the internal memory of the Decode Unit to the write unit's memory.

8) С этого момента начинается процесс выгрузки данных из внутренней памяти модуля Декодирующий Блок в память блока записи. Эта запись происходит с помощью сигналов BEFORE_WRITE_FROM_GC, WRITE_ADR_FROM_GC и WRITE_DATA_ FROM_GC. Причем сигналы BEFORE_WRITE_FROM_GC и WRITE_ADR_FROM_GC приходят одновременно, а сигнал WRITE_DATA_FROM_GC появляется на такт позже. Сигналы BEFORE_WRITE_FROM_GC должны приходить в строго определенные такты, которые случаются один раз в 4 такта. Т.е. WRITE_DATA_FROM_GC должны случаться в такты TIME_TO_WRITE_DATA_TO_WRITE_BLOCK.8) From this moment, the process of uploading data from the internal memory of the Decoding Block module to the memory of the recording block begins. This writing occurs with the BEFORE_WRITE_FROM_GC, WRITE_ADR_FROM_GC, and WRITE_DATA_FROM_GC signals. Moreover, the BEFORE_WRITE_FROM_GC and WRITE_ADR_FROM_GC signals arrive simultaneously, while the WRITE_DATA_FROM_GC signal appears a clock later. The BEFORE_WRITE_FROM_GC signals must arrive at strictly defined clock cycles, which occur once every 4 clock cycles. Those. WRITE_DATA_FROM_GC must occur on TIME_TO_WRITE_DATA_TO_WRITE_BLOCK clocks.

9) Сразу после начала записи в блок записи поднимается флаг PUSH_INFO_FROM_GC, который загружает на регистры блока записи информацию о секторе, передаваемую через сигналы LSA_FROM_GC_OUT, GEN_PPA_OUT, CRC_FROM_GC_OUT, SYNC_PACKAGE_FROM_GC_OUT.9) Immediately after the start of recording, the PUSH_INFO_FROM_GC flag is raised in the recording block, which loads the sector information transmitted via the LSA_FROM_GC_OUT, GEN_PPA_OUT, CRC_FROM_GC_OUT, SYNC_PACKAGE_FROM_GC_OUT signals to the registers of the recording block.

10) По окончании выгрузки сектора вместе с последним сигналом BEFORE_WRITE_FROM_GC приходит сигнал BEFORE_LAST_WRITE_FROM_GC, который информирует блок записи, что загрузка сектора завершена.10) When the sector is unloaded, along with the last BEFORE_WRITE_FROM_GC signal, the BEFORE_LAST_WRITE_FROM_GC signal arrives, which informs the writer that the sector loading is complete.

Взаимодействие с Хост БлокомInteraction with the Host Block

Взаимодействие с хост блоком осуществляется следующим образом:Interaction with the host block is carried out as follows:

1) Хост блок передает модулю Декодирующий Блок сигнал TIME_TO_WRITE_DATA_ TO_WRITE_BLOCK_3, с помощью которого Декодирующий Блок формирует сигналы BEFORE_WRITE_FROM_GC.1) The Host Block sends the TIME_TO_WRITE_DATA_ TO_WRITE_BLOCK_3 signal to the Decode Block module, with which the Decode Block generates BEFORE_WRITE_FROM_GC signals.

2) После декодирования сектора для хоста Декодирующий Блок посылает сигнал GET_SECTOR_FOR_HOST, который означает просьбу выделить память внутри хост блока под выгрузку декодированного сектора для хоста.2) After decoding the sector for the host, the Decode Block sends a GET_SECTOR_FOR_HOST signal, which means a request to allocate memory inside the host block for unloading the decoded sector for the host.

3) В ответ хост блок посылает сигнал SET_SECTOR_FOR_HOST, который означает, что память выделена, и сектор можно выгружать в хост блок.3) In response, the host block sends the SET_SECTOR_FOR_HOST signal, which means that the memory is allocated, and the sector can be unloaded into the host block.

4) С этого момента начинается процесс выгрузки данных из внутренней памяти модуля Декодирующего Блока в память хост блока. Эта запись происходит с помощью сигналов WRITE_FOR_HOST, WRITE_ADR_FOR_HOST и WRITE_DATA_FOR_HOST, которые приходят одновременно.4) From this moment, the process of uploading data from the internal memory of the Decoding Unit module to the memory of the host unit begins. This writing occurs with the WRITE_FOR_HOST, WRITE_ADR_FOR_HOST, and WRITE_DATA_FOR_HOST signals, which arrive at the same time.

5) Одновременно с выгрузкой сектора идет вычисление CRC, и в момент, когда информационная часть загружена, появляется сигнал HOST_DATA_LOADED, и одновременно с этим сигналом может появиться сигнал HOST_CRC_ERROR, который означает, что контрольная сумма не сошлась. В этом случае соответствующему каналу флэш блока посылается сигнал DECODE_FAIL, а хост блок исключает из своей памяти загруженный сектор. Если же вместе с сигналом HOST_DATA_LOADED не пришел сигнал HOST_CRC_ERROR, то декодирование успешное и соответствующему каналу флэш блока посылается сигнал DECODE_SUCCESS, а хост блок принимает загруженный сектор и в дальнейшем этот сектор будет передан хосту. 5) Simultaneously with the unloading of the sector, the CRC is calculated, and at the moment when the information part is loaded, the HOST_DATA_LOADED signal appears, and simultaneously with this signal, the HOST_CRC_ERROR signal may appear, which means that the checksum did not converge. In this case, the DECODE_FAIL signal is sent to the corresponding channel of the flash block, and the host block deletes the loaded sector from its memory. If, along with the HOST_DATA_LOADED signal, the HOST_CRC_ERROR signal did not come, then the decoding is successful and the DECODE_SUCCESS signal is sent to the corresponding channel of the flash block, and the host block receives the loaded sector and this sector will be transferred to the host in the future.

6) Вместе сигналом HOST_DATA_LOADED хост блоку передаются сигналы LSA_FOR_HOST_OUT (используется для передачи хосту и SYNC_PACKAGE_ FOR_HOST_OUT (используется для расшифровки сектора.6) Together with the HOST_DATA_LOADED signal, the host block receives the LSA_FOR_HOST_OUT signals (used to send to the host and SYNC_PACKAGE_ FOR_HOST_OUT (used to decrypt the sector.

Claims (12)

1. Способ аппаратного ускорения декодирования содержимого твердотельного накопителя информации, заключающийся в том, что для твердотельного накопителя информации, содержащего n>1 независимых блоков памяти, выделяют n аппаратных каналов записи-считывания данных и m < n независимых аппаратных декодеров, реализующих один и тот же процесс декодирования блоков данных, где значение данных от каждого из блоков передается через один из каналов записи-считывания к одному из независимых выделенных блоков памяти, с формированием, до завершения передачи, сигнала занятости канала, участвующего в процессе записи или считывания данных,1. A method for hardware acceleration of decoding the contents of a solid state drive of information, which consists in the fact that for a solid state drive of information containing n> 1 independent memory blocks, n hardware channels for writing and reading data and m < n independent hardware decoders are allocated that implement the same the process of decoding data blocks, where the data value from each of the blocks is transmitted through one of the write-read channels to one of the independent allocated memory blocks, with the formation, before the completion of the transfer, of the channel busy signal involved in the process of writing or reading data, при поступлении запроса от внешней системы на считывание данных логического сектора данных определяют адрес блока, соответствующего логическому сектору, и после выделения адреса внешней памяти, предназначенной для записи значения логического сектора, инициализируют процесс считывания данных по запросу, для чего определяют физический блок, хранящий данные запрошенного логического сектора данных, выделяют независимый физический блок непосредственно адресуемой памяти для записи значения блока, при наличии свободного канала выбирают и занимают свободный канал, выделяют свободный аппаратный декодер, формируют запрос на передачу данных из определенного физического блока к выделенной памяти с использованием свободного канала из определенного физического блока, где данные содержат данные, считанные из блока, и проверочную сумму, иupon receipt of a request from an external system to read the data of the logical sector of data, the address of the block corresponding to the logical sector is determined, and after allocating the address of the external memory intended for writing the value of the logical sector, the process of reading data on request is initialized, for which the physical block is determined that stores the data of the requested logical sector of data, allocate an independent physical block of directly addressable memory to write the value of the block, if there is a free channel, select and occupy a free channel, allocate a free hardware decoder, form a request to transfer data from a certain physical block to the allocated memory using a free channel from a certain physical block, where the data contains the data read from the block and the checksum, and А. определяют правильность контрольной суммы с использованием выбранного аппаратного декодера, имеющего непосредственный доступ к выделенной памяти, содержащей значение данных и контрольной суммы,A. determine the correctness of the checksum using the selected hardware decoder, which has direct access to the allocated memory containing the data value and the checksum, B. по результатам завершения вычисления и проверки контрольной суммы возвращают результат считывания внешней системе и освобождают выделенный канал.B. based on the results of the completion of the calculation and verification of the checksum, the result of reading is returned to the external system and the dedicated channel is released. 2. Способ по п. 1, отличающийся тем, что при несовпадении контрольной суммы с вычисленной контрольной суммой, перед выполнением операции В, изменяют физические параметры считывания данных из блока и повторно считывают из блока с использованием канала, после чего повторно выполняют операцию А.2. The method according to claim 1, characterized in that if the checksum does not match the calculated checksum, before performing operation B, the physical parameters of reading data from the block are changed and re-read from the block using the channel, after which operation A is repeated. 3. Способ по п. 2, отличающийся тем, что задают заранее заданное количество физических параметров считывания данных, и при несовпадении контрольных сумм после перебора всех заданных физических параметров считывания данных возвращают код ошибки и помечают бок как невалидный.3. The method according to claim 2, characterized in that a predetermined number of physical parameters of data reading is set, and if the checksums do not match, after enumeration of all the given physical parameters of data reading, an error code is returned and the side is marked as invalid. 4. Способ по п. 1, отличающийся тем, что используют аппаратное вычисление строки контрольной суммы с использованием выделенного декодера и последующее аппаратное сравнение вычисленной строки контрольной суммы со значением контрольной суммы с использованием логики выделенного декодера.4. The method according to claim 1, characterized in that the hardware calculation of the checksum string using a dedicated decoder and the subsequent hardware comparison of the calculated checksum string with the checksum value using the logic of the dedicated decoder are used. 5. Способ по п. 1, отличающийся тем, что аппаратный способ вычисления контрольной суммы задается в матричном виде с использованием независимой перезаписываемой энергонезависимой памяти.5. The method according to claim 1, characterized in that the hardware method for calculating the checksum is specified in matrix form using an independent rewritable non-volatile memory. 6. Способ по п. 1, отличающийся тем, что при наличии свободного канала и отсутствии запросов осуществляется сбор мусора.6. The method according to claim 1, characterized in that in the presence of a free channel and no requests, garbage collection is performed. 7. Способ по п. 1, отличающийся тем, что выполняют контроллер инициирующим и осуществляющим сбор мусора при отсутствии запроса на считывание.7. The method according to claim 1, characterized in that the controller is initiating and performing garbage collection in the absence of a read request. 8. Способ по п. 1, отличающийся тем, что осуществляют динамическую привязку аппаратных каналов записи-считывания данных к блокам памяти.8. The method according to claim 1, characterized in that the hardware channels for writing and reading data are dynamically linked to memory blocks. 9. Способ по п. 2, отличающийся тем, что в качестве физических параметров считывания данных используют мягкие значения, при этом используют блок формирования мягких значений, содержащий по меньшей мере два независимых модуля формирования мягких значений, каждый из которых служит для изменения мягких значений и их записи в блоки внешней памяти, выделенные соответствующим блокам памяти, с обеспечением возможности использования сформированных мягких значений соответствующим декодером при декодировании данных соответствующего блока памяти.9. The method according to claim 2, characterized in that soft values are used as physical parameters for reading data, while using a soft value generating unit containing at least two independent soft value generating modules, each of which serves to change soft values and writing them to external memory blocks allocated to the corresponding memory blocks, with the possibility of using the generated soft values by the corresponding decoder when decoding the data of the corresponding memory block.
RU2021110997A 2021-04-19 2021-04-19 Solid-state information storage controller decoder RU2769562C1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2021110997A RU2769562C1 (en) 2021-04-19 2021-04-19 Solid-state information storage controller decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2021110997A RU2769562C1 (en) 2021-04-19 2021-04-19 Solid-state information storage controller decoder

Publications (1)

Publication Number Publication Date
RU2769562C1 true RU2769562C1 (en) 2022-04-04

Family

ID=81076017

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2021110997A RU2769562C1 (en) 2021-04-19 2021-04-19 Solid-state information storage controller decoder

Country Status (1)

Country Link
RU (1) RU2769562C1 (en)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100125695A1 (en) * 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
RU2395115C2 (en) * 2004-10-21 2010-07-20 Майкрософт Корпорейшн Using external memory devices to improve system efficiency
US9135181B2 (en) * 2010-10-27 2015-09-15 International Business Machines Corporation Management of cache memory in a flash cache architecture
US9235526B2 (en) * 2005-09-01 2016-01-12 Round Rock Research, Llc Non-volatile hard disk drive cache system and method
US20180175885A1 (en) * 2016-12-19 2018-06-21 Toshiba Memory Corporation Hybrid LDPC-SEC/SECDED Decoding
US10387317B2 (en) * 2014-12-19 2019-08-20 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2395115C2 (en) * 2004-10-21 2010-07-20 Майкрософт Корпорейшн Using external memory devices to improve system efficiency
US9235526B2 (en) * 2005-09-01 2016-01-12 Round Rock Research, Llc Non-volatile hard disk drive cache system and method
US20100125695A1 (en) * 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
US9135181B2 (en) * 2010-10-27 2015-09-15 International Business Machines Corporation Management of cache memory in a flash cache architecture
US10387317B2 (en) * 2014-12-19 2019-08-20 International Business Machines Corporation Non-volatile memory controller cache architecture with support for separation of data streams
US20180175885A1 (en) * 2016-12-19 2018-06-21 Toshiba Memory Corporation Hybrid LDPC-SEC/SECDED Decoding

Similar Documents

Publication Publication Date Title
US10372339B2 (en) Extensible memory hub
US8261008B2 (en) NAND flash controller and data exchange method between NAND flash memory and NAND flash controller
CN111435292A (en) Storage medium programming with adaptive write buffer release
JP4247262B2 (en) Integrated circuit device
KR20110058028A (en) Multi-chip memory system and data transfer method thereof
JP2012022422A (en) Semiconductor recording/reproducing device
US9998151B2 (en) Data storage device and operating method thereof
KR20170069881A (en) Controller couple to semiconductor memory device and operating method thereof
US20230089022A1 (en) Memory system and method
CN113835923A (en) Reset system, data processing system and related equipment
CN114286989B (en) Method and device for realizing hybrid read-write of solid state disk
US20170302299A1 (en) Data processing method, memory storage device and memory control circuit unit
US20190065054A1 (en) Data storage device and operating method thereof
CN109739777B (en) Reliable flash memory storage method and system based on local and distributed collaborative design
KR102333140B1 (en) Data storage device and operating method thereof
US11101822B1 (en) Data writing method, memory control circuit unit and memory storage apparatus
RU2769562C1 (en) Solid-state information storage controller decoder
CN112905107A (en) Data storage device and operation method thereof
WO2010013437A1 (en) Controller with error correction function, recording device with error correction function, and system with error correction function
CN110795271A (en) Error correction circuit for performing error correction on user data and error correction method using the same
US12001361B2 (en) Apparatus and method for data communications between non-volatile memory devices and a memory controller
CN115904217A (en) UFS out-of-order prompt generation
US20210334041A1 (en) Storage Devices Having Minimum Write Sizes Of Data
CN112988449B (en) Device and method for writing page group data into flash memory module
CN101996685B (en) Error control method of storage management data and error controller