A decoding resource allocation method and apparatus

By determining the resource pool weight list in the NR system and allocating the resource pool to users, the problem of unbalanced decoder load is solved, efficient resource sharing of the decoder and energy saving and emission reduction of the base station are realized, and the utilization rate of the decoder is improved.

CN115412973BActive Publication Date: 2025-08-05DATANG MOBILE COMM EQUIP CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202110575210.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-05-26
Publication Date
2025-08-05
Estimated Expiration
2041-05-26

AI Technical Summary

Technical Problem

In the prior art, the load imbalance problem of uplink low-density check code decoder in NR systems leads to low decoder utilization, affecting scheduling performance, and high energy consumption in low-speed business scenarios, making resource sharing and base station energy conservation and emission reduction cannot be achieved.

Method used

By determining the resource pool weight list, including user occupation information of each resource pool, and allocating resource pools to users based on the list, optimizing the load balancing of the decoder, using the resource pool weight list to select the resource pool with the smallest load for users, prioritizing the allocation of resource pool pool pools for retransmission users, updating the total weight value of the resource pool weight list, and realizing load balancing of multiple distributed decoders.

Benefits of technology

The load balancing of the decoder in various business scenarios is realized, the resource sharing efficiency of the decoder and the energy-saving and emission reduction effect of the base station are improved, and the utilization rate of the decoder is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115412973B_ABST
    Figure CN115412973B_ABST
Patent Text Reader

Abstract

This application discloses a decoding resource allocation method and apparatus for facilitating load balancing across multiple distributed decoders in various business scenarios, facilitating decoder resource sharing and energy conservation and emission reduction for base stations. The decoding resource allocation method provided herein includes: determining a resource pool weight list; the resource pool weight list includes user occupancy information for each resource pool; the resource pool includes at least one low-density parity check (LDPC) code decoder; and allocating a resource pool to a user based on the resource pool weight list.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the field of communication technology, and in particular to a decoding resource allocation method and device. Background Art

[0002] In current NR (New Radio) systems, uplink Low Density Parity Check Code (LDPC) decoding is divided into X groups, each containing Y LDPC decoders. This grouping is handled using fair round-robin processing within a cell or user. This means that each cell allocates resources sequentially and exclusively uses all decoder resources within a certain period, resulting in unbalanced load in most scenarios.

[0003] However, the current solution has the following problems:

[0004] In peak-speed business scenarios, each cell monopolizes all decoder resources during the decoding cycle. In some time slices, all decoders cannot be fully utilized, resulting in unbalanced load with some decoders idle, low decoder utilization, and long processing cycles that affect scheduling performance.

[0005] In low-speed service scenarios, all decoder resources are used in each cell decoding cycle, causing the decoder resources to be idle for most of the time, resulting in high energy consumption and the inability to dynamically reduce power consumption.

[0006] In summary, the uplink decoding processing solution in the prior art is not conducive to decoder resource sharing and base station energy conservation and emission reduction. Summary of the Invention

[0007] The embodiments of the present application provide a decoding resource allocation method and apparatus to facilitate load balancing of multiple distributed decoders in various service scenarios, thereby facilitating resource sharing among decoders and energy conservation and emission reduction of base stations.

[0008] An embodiment of the present application provides a decoding resource allocation method, including:

[0009] Determine a resource pool weight list; the resource pool weight list includes user occupancy information of each resource pool; the resource pool includes at least one low-density parity check code LDPC decoder;

[0010] A resource pool is allocated to the user according to the resource pool weight list.

[0011] A resource pool weight list is determined by this method, wherein the resource pool weight list includes user occupancy information of each resource pool; the resource pool includes at least one low-density parity check code (LDPC) decoder; and resource pools are allocated to users based on the resource pool weight list, making load balancing processing of multiple distributed decoders in various business scenarios more convenient, which is beneficial to resource sharing of decoders and energy conservation and emission reduction of base stations.

[0012] Optionally, allocating a resource pool to a user according to the resource pool weight list specifically includes:

[0013] According to the resource pool weight list and the transmission order of the cells, a resource pool with the smallest load is selected for the user.

[0014] Optionally, the resource pool weight list includes the load of each resource pool, wherein for any of the resource pools, the load of the resource pool is the sum of the loads of all users allocated to the resource pool, and the load of each user is equal to the user log-likelihood ratio LLR length / (resource pool performance*decoding time)*100%, and the resource pool performance is N*single decoder performance, where N is the number of decoders included in the resource pool.

[0015] Optionally, a resource pool is allocated to each user in the cell to be decoded in sequence, taking the cell as a unit.

[0016] Optionally, allocating a resource pool to a user according to the resource pool weight list specifically includes: allocating a resource pool to a user of a current cell to be decoded according to the resource pool weight list, and updating the resource pool weight list.

[0017] Optionally, resource pools are allocated to retransmitting users first, and when allocation of resource pools to retransmitting users is completed, resource pools are allocated to initial transmission users.

[0018] Optionally, for a retransmitting user, the resource pool that was last allocated to the same user is preferentially allocated to the retransmitting user, and the total weight value of the resource pool weight list corresponding to the resource pool is updated.

[0019] Optionally, for the first-time user, traverse the total weight value of each resource pool weight list to find the resource pool weight list with the largest total weight value; assign the resource pool corresponding to the resource pool weight list with the largest total weight value to the first-time user, and update the total weight value of the resource pool weight list corresponding to the resource pool.

[0020] Accordingly, an embodiment of the present application provides a decoding resource allocation device, including:

[0021] a memory for storing program instructions;

[0022] The processor is configured to call the program instructions stored in the memory and execute according to the obtained program:

[0023] Determine a resource pool weight list; the resource pool weight list includes user occupancy information of each resource pool; the resource pool includes at least one low-density parity check code LDPC decoder;

[0024] A resource pool is allocated to the user according to the resource pool weight list.

[0025] Optionally, the processor allocates a resource pool to the user according to the resource pool weight list, specifically including:

[0026] According to the resource pool weight list and the transmission order of the cells, a resource pool with the smallest load is selected for the user.

[0027] Optionally, the resource pool weight list includes the load of each resource pool, wherein for any of the resource pools, the load of the resource pool is the sum of the loads of all users allocated to the resource pool, and the load of each user is equal to the user log-likelihood ratio LLR length / (resource pool performance*decoding time)*100%, and the resource pool performance is N*single decoder performance, where N is the number of decoders included in the resource pool.

[0028] Optionally, the processor allocates a resource pool to each user in the cell to be decoded in sequence, taking the cell as a unit.

[0029] Optionally, allocating a resource pool to a user according to the resource pool weight list specifically includes: allocating a resource pool to a user of a current cell to be decoded according to the resource pool weight list, and updating the resource pool weight list.

[0030] Optionally, the processor allocates resource pools to retransmitting users first, and when allocation of resource pools to retransmitting users is completed, continues to allocate resource pools to initial transmission users.

[0031] Optionally, the processor preferentially allocates to a retransmitting user the resource pool that was previously allocated to the same user, and updates the total weight value of the resource pool weight list corresponding to the resource pool.

[0032] Optionally, for the first-time user, the processor traverses the total weight value of each resource pool weight list and finds the resource pool weight list with the largest total weight value; allocates the resource pool corresponding to the resource pool weight list with the largest total weight value to the first-time user, and updates the total weight value of the resource pool weight list corresponding to the resource pool.

[0033] Another decoding resource allocation device provided in an embodiment of the present application includes:

[0034] The first unit is configured to determine a resource pool weight list, wherein the resource pool weight list includes user occupancy information of each resource pool; the resource pool includes at least one low-density parity check code (LDPC) decoder;

[0035] The second unit is configured to allocate a resource pool to the user according to the resource pool weight list.

[0036] Another embodiment of the present application provides a computing device, which includes a memory and a processor, wherein the memory is used to store program instructions, and the processor is used to call the program instructions stored in the memory and execute any of the above methods according to the obtained program.

[0037] Another embodiment of the present application provides a computer-readable storage medium, wherein the computer storage medium stores computer-executable instructions, and the computer-executable instructions are used to enable the computer to execute any of the above methods. BRIEF DESCRIPTION OF THE DRAWINGS

[0038] In order to more clearly illustrate the technical solutions in the embodiments of the present application, the following is a brief introduction to the drawings required for use in the description of the embodiments. Obviously, the drawings described below are only some embodiments of the present application. For ordinary technicians in this field, other drawings can be obtained based on these drawings without any creative work.

[0039] Figure 1 Schematic diagram of a fixed cell grouping solution (three groups of decoders, i cells) provided in an embodiment of the present application;

[0040] Figure 2 Schematic diagram of the utilization efficiency of the fixed grouping solution for users in a cell (4 users per cell) provided in an embodiment of the present application;

[0041] Figure 3 Schematic diagram of the decoding pooling solution provided in an embodiment of the present application;

[0042] Figure 4 Schematic diagram of the resource pool cell-level allocation process provided in an embodiment of the present application;

[0043] Figure 5 A schematic diagram of the resource pool user-level allocation process provided in an embodiment of the present application;

[0044] Figure 6 A flowchart of a decoding resource allocation method provided in an embodiment of the present application;

[0045] Figure 7 A schematic diagram of the structure of a decoding resource allocation device provided in an embodiment of the present application;

[0046] Figure 8 A schematic diagram of the structure of another decoding resource allocation device provided in an embodiment of the present application. DETAILED DESCRIPTION

[0047] The following will be combined with the drawings in the embodiments of this application to clearly and completely describe the technical solutions in the embodiments of this application. Obviously, the embodiments described are only part of the embodiments of this application, not all of the embodiments. Based on the embodiments in this application, all other embodiments obtained by ordinary technicians in this field without making creative efforts are within the scope of protection of this application.

[0048] There are currently two implementation schemes for NR uplink decoding: fixed grouping of cells and fixed grouping of users within a cell.

[0049] Taking a certain manufacturer's LDPC decoder as an example, each decoder has a throughput of 1.7 Gbps at a bit rate of 0.815. The processing capacity of X groups of decoders is X * Y * 1.7 Gbps. The required decoding performance for a single uplink stream (assuming 100 MHz bandwidth and 256QAM modulation, ignoring retransmission) is 100 (Mbps) * 8 (256QAM) = 0.8 Gbps. In other words, each decoder processes two streams, and the utilization efficiency needs to reach above 94%.

[0050] In the fixed cell grouping implementation scheme, each cell is assigned to a decoder in group X according to the cell number sequence. Since the decoding process is a cell-level ping-pong buffer, a maximum of two cells can be processed in parallel. Figure 1 For example, a cell-level ping-pong cache processes cells C0 and C1 in parallel. As shown in Table 1 below, using three decoder groups with a total of i cells as an example, the utilization efficiency is only 60%. To achieve near 100% efficiency for all three decoder groups, a three-way ping-pong cache must be used for each cell. This means the decoder front-end buffer area would need to be tripled, resulting in prohibitively high resource usage.

[0051] Table 1 Utilization efficiency of the fixed cell grouping scheme (three groups of decoders for i cells)

[0052] Decoding resources Efficiency Decoder Group 0 60% Decoder Group 1 60% Decoder Group 2 60%

[0053] Fixed grouping of users within a cell is implemented. Users within a cell are assigned to X groups of decoders in the order of user index. In the scenario where the number of users in the cell is not divisible by X, see Figure 2 As shown in Table 2 below, taking three groups of decoders with a total of i cells as an example, each cell has 4 users and 1 user, respectively, the decoding performance loss is 1 / 3 and 2 / 3. Figure 2 In the figure, C0 represents cell 0, C1 represents cell 1, and so on; U0 represents user 0, U1 represents user 1, and so on.

[0054] Table 2 Utilization efficiency of fixed grouping scheme for users within a cell

[0055]

[0056] In summary, the uplink decoding adopts a fixed group decoding solution based on the cell index or the user index within the cell. There will be many idle time slices in the decoder operation, which greatly wastes the utilization rate.

[0057] With the increasing complexity of networking scenarios and the increasing processing power of hard BBUs (Building Baseband Units), the main drawbacks of insufficient decoder utilization are as follows:

[0058] Existing equipment cannot support increased processing capacity, and hardware expansion costs are high;

[0059] Commercial products cannot further replace low-cost components or reduce resources and power consumption based on business scenarios.

[0060] As the support capabilities of a single board increase, the chip hardware cost and power consumption caused by idle time slices will also increase exponentially.

[0061] Therefore, a new uplink decoding processing solution is needed to facilitate load balancing of multiple distributed decoders in various service scenarios. Separate processing at the cell level is not conducive to decoder resource sharing and base station energy conservation and emission reduction. However, the present application provides a decoding resource allocation method and apparatus that adopts an uplink decoding resource pooling method.

[0062] Among them, the method and the device are based on the same application concept. Since the principles of solving problems by the method and the device are similar, the implementation of the device and the method can refer to each other, and the repeated parts will not be repeated.

[0063] The technical solutions provided in the embodiments of the present application can be applicable to a variety of systems, especially 5G systems. For example, applicable systems may be global system of mobile communication (GSM) systems, code division multiple access (CDMA) systems, wideband code division multiple access (WCDMA) general packet radio service (GPRS) systems, long term evolution (LTE) systems, LTE frequency division duplex (FDD) systems, LTE time division duplex (TDD) systems, universal mobile telecommunication systems (UMTS), worldwide interoperability for microwave access (WiMAX) systems, 5G systems, and 5G NR systems. These various systems include terminal devices and network devices.

[0064] The terminal device involved in the embodiments of the present application may be a device that provides voice and / or data connectivity to a user, a handheld device with wireless connection function, or other processing device connected to a wireless modem. In different systems, the name of the terminal device may also be different. For example, in a 5G system, the terminal device may be called user equipment (UE). The wireless terminal device can communicate with one or more core networks via the RAN. The wireless terminal device can be a mobile terminal device, such as a mobile phone (or "cellular" phone) and a computer with a mobile terminal device. For example, it can be a portable, pocket-sized, handheld, computer-built-in or vehicle-mounted mobile device that exchanges language and / or data with the wireless access network. For example, personal communication service (PCS) phones, cordless phones, session initiated protocol (SIP) phones, wireless local loop (WLL) stations, personal digital assistants (PDAs), and other devices. The wireless terminal device may also be referred to as a system, a subscriber unit, a subscriber station, a mobile station, a mobile station, a remote station, an access point, a remote terminal device, an access terminal device, a user terminal device, a user agent, or a user device, but is not limited in the embodiments of the present application.

[0065] The network device involved in the embodiments of the present application may be a base station, which may include multiple cells. Depending on the specific application scenario, the base station may also be called an access point, or may refer to a device in an access network that communicates with a wireless terminal device through one or more sectors on an air interface, or other names. The network device may be used to convert received air frames into and from Internet Protocol (IP) packets, acting as a router between the wireless terminal device and the rest of the access network, wherein the rest of the access network may include an Internet Protocol (IP) communication network. The network device may also coordinate the attribute management of the air interface. For example, the network device involved in the embodiments of the present application can be a network device (base transceiver station, BTS) in the global system for mobile communications (GSM) or code division multiple access (CDMA), or a network device (NodeB) in wide-band code division multiple access (WCDMA), or an evolved network device (evolutionary node B, eNB or e-NodeB) in the long term evolution (LTE) system, a 5G base station in the 5G network architecture (next generation system), or a home evolved node B (HeNB), a relay node, a home base station (femto), a pico base station (pico), etc., but is not limited in the embodiments of the present application.

[0066] The following describes in detail the various embodiments of the present application in conjunction with the accompanying drawings. It should be noted that the order in which the embodiments of the present application are presented only represents the order of the embodiments, and does not represent the advantages or disadvantages of the technical solutions provided by the embodiments.

[0067] The embodiment of the present application provides a solution for sharing a decoding resource pool to meet the maximum utilization requirements of decoders. According to the previous analysis, if decoders are allocated according to fixed rules, it is impossible to ensure load balancing among multiple decoders. The embodiment of the present application aggregates different users in multiple cells into a decoding resource pool and quantifies each user's decoding performance requirements into a load value (corresponding to the quantification method of resource pool load in Table 3). The allocation rules for users corresponding to different resource pools need to be uniformly allocated based on the allocated load of each resource pool and the load of users to be allocated. This achieves the purpose of load balancing across all decoding resource pools.

[0068] The decoding pooling solution provided in the embodiment of this application is shown in Figure 3 , specifically including:

[0069] The cell N process and queue table are handled internally by the CPU processor, while the resource pool scheduler and resource pool are generally implemented as FPGA peripherals for hardware acceleration of decoding functions. The following describes the functions of each module in detail:

[0070] Cell 0-N process: After completing the data processing of a cell, it is sent to the resource pool for hardware acceleration processing of the decoding function.

[0071] Queue tables 0~j (and resource pools 0~j): The embodiment of the present application adds scheduling processing before sending to the resource pool, matches the optimal resource pool processing for each user in each cell, one queue table corresponds to one resource pool, records the user occupancy of each resource pool, and calculates the resource pool weight.

[0072] Interface transmission: Each cell completes the refresh of the user weight in the queue table, tags the resource pool allocation (that is, assigns a number from "resource pool 0-j" and records it in the user parameters), and sends it to the resource pool for the next decoding function. Based on the x86 architecture, interface transmission is generally carried out through the PCIe (Peripheral Component Interconnect Express) bus.

[0073] Resource pool scheduler: Generally implemented by an FPGA (Field Programmable Gate Array) chip, it sends users in different cells to different decoding resource pools for processing based on the CPU's scheduling results for each cell and each user in the queue table.

[0074] Resource pools 0-j: Multiple resource pools are typically implemented using multiple FPGA chips. Each resource pool includes multiple LDPC decoders and channel decoding-related functional modules (including rate matching, HARQ combining, LDPC channel decoding, and CRC checking in the 5G NR standard protocol), completing user-level sequential processing. Multiple resource pools process in parallel to support higher throughput targets.

[0075] In the uplink decoding pooling solution of the embodiment of the present application, cell resource statistics and resource pool scheduler processing are added to address the problem of unbalanced load on different decoders. The resource pool scheduler needs to treat all users in all cells in the current time slot as a set and perform resource pool processing.

[0076] Regarding the calculation method of resource pool load, for example: in non-HARQ (Hybrid Automatic Repeat reQuest) merging scenarios, the length of the LLR (Log Likelihood Ratio) after rate matching is used, and in HARQ merging scenarios, the length after HARQ merging, that is, the LLR length of the LDPC decoding input, is converted to the resource pool load. Based on the transmission order of the cell, each user selects the resource pool with the smallest load and assigns a resource pool group number (a user is only processed in one resource pool from resource pools 0 to j). The specific processing flow is as follows: Figure 4 shown.

[0077] Among them, regarding HARQ merging processing (NR standard protocol processing): there is no HARQ merging processing for the initial transmission user, but the retransmission user needs to be merged with the previously transmitted historical data into a data packet with larger redundant information, and then decoded to obtain greater coding gain.

[0078] Regarding rate de-matching (NR standard protocol processing): the data after channel coding is punctured and repeated for each code block. The corresponding rate de-matching function of the channel decoding module is to merge the punctured and repeated data of each code block and restore it to the original channel coded data.

[0079] Regarding the conversion to resource pool load: See Table 3 below for details. The maximum load for each resource pool is 100%, and the actual load is equal to the sum of the loads of all users assigned to that resource pool. Taking resource pool 0 as an example, the load for each user is equal to user LLR length / (resource pool 0 performance * decoding time) * 100%, where the decoding time is determined by the current timeslot length. The LLR length for each user is calculated as: the length of the LLR after rate matching in non-HARQ combining scenarios; the length after HARQ combining in HARQ combining scenarios. Resource pool performance is calculated as: number of decoders * single decoder performance. Single decoder performance, measured in bits per second, is the total number of bits a decoder can decode per second. If a resource pool contains N decoders computing in parallel, resource pool performance is N * single decoder performance.

[0080] Table 3 Quantification of resource pool load

[0081]

[0082] about Figure 4 The resource pool cell-level allocation process shown is described as follows:

[0083] Figure 3 "Cell X Process ( Figure 3The data of cell X to be decoded is ready and enters Figure 4 The resource pool allocation process shown is intended to allocate resource pool numbers for decoding processing to users in cell X.

[0084] First judge Figure 3 Check whether the queue tables 0 to j are idle and not occupied by other cell processes. If they are idle, lock the queue table and enter the process of "cell X update queue table". Otherwise, wait for other cell processes to release them.

[0085] After the cell X process is completed, the "queue tables 0-j" are released and the "cell X data transmission" is initiated to the resource pool, where the hardware acceleration processing of the next decoding function is performed.

[0086] The cell data refers to the "original bits before LDPC channel decoding." How to allocate the resource pool is the "update process of the following "queue tables 0 to j" by cell X" described below.

[0087] If the update of "queue table 0~j" of all cells in the current time slot is completed, the user weight information in "queue table 0~j" will be cleared, otherwise the processing will continue to the next cell.

[0088] Among them, the "queue tables 0-j" described in the embodiment of this application are also called resource pool weight lists. This embodiment of the application adds scheduling processing before sending to the resource pool, matching the optimal resource pool processing for each user in each cell. One queue table corresponds to one resource pool, records the user occupancy of each resource pool, and calculates the resource pool weight. The specific form is shown in Table 4 below:

[0089] Table 4 Resource pool weight list

[0090]

[0091] The resource pool allocation process of uplink decoding pooling is adopted, and the resource pool weight list processing is added. Before the decoding cell allocates the resource pool, it is first determined whether the resource pool weight list is occupied, and then the resource pool weight list is idle. According to the weights of multiple resource pools, resources are allocated to the users of this cell, and the load of each resource pool is updated, that is, the resource pool weight list is updated, and then the resource weight list is released. The released resource weight list can be occupied by other cells.

[0092] The user LLR length is calculated as the LLR length after rate matching in non-HARQ combining scenarios; in HARQ combining scenarios, it is calculated as the length after HARQ combining. Resource pool performance is calculated as the processing capacity of the decoders in the resource pool multiplied by the number of decoders multiplied by the performance of a single decoder. Decoding time is determined by the current slot length.

[0093] The resource pool includes N decoders for parallel computing, and the resource pool performance is N*single decoder performance, which corresponds to the uplink throughput index of the base station in bps (bits per second).

[0094] The performance of a single decoder, in bps, is the total number of bits that each decoder can perform LDPC decoding per second.

[0095] Based on the transmission order of the cells, each user selects the resource pool with the smallest load and allocates the resource pool group number. The specific processing flow is as follows:

[0096] Resource pool scheduler priority control (i.e. Figure 4 Each user in the process updates the priority of "queue table 0~j"), each thread (i.e. Figure 3 The "cell N process" in the figure corresponds to the processing task of one cell) After the current cell processing is completed, the resource pool allocation table (i.e., queue tables 0 to j, i.e., the resource pool weight list) is locked, and the resource pools corresponding to all users in the cell are allocated, and the resource pool allocation table is refreshed.

[0097] The user's resource pool allocation is based on the user priority and queue table 0~j (i.e., resource pool weight list) to allocate resource pool queues, where retransmission users are processed first and initial transmission users are processed later, because retransmission users take more time. Retransmission users are assigned to the same resource pool as initial transmission with high priority. New transmission users select the resource pool with the largest total weight to join the queue based on the weights of different resource pools, and update the current resource pool total weight, i.e., the current resource pool total weight - user allocation weight (with a minus sign in the middle, the subtraction result is "queue table 0~j", the margin of each queue). Other users are sequentially allocated and also select the resource pool with the largest weight to join the queue, and so on. When the total weight of the resource pool is reduced to 0, a load anomaly alarm is issued. Among them, the meaning of joining the queue is Figure 3 The process of refreshing the contents of "queue tables 0 to j" in the queue table, calculating the weight value of each user, and refreshing the user weight value to different queue tables.

[0098] The resource pool allocation of different cells is processed sequentially, that is, the resource pool weight list needs to be locked to one thread for processing (i.e. Figure 4 The locked queue table is processed in the order of cell sending to balance the load of all cells. The locked queue table means that at the same time, there is only one cell that refreshes the "queue table 0~j", that is, Figure 3 After the "cell X process" is completed, the next cell process "cell Y process" will be processed. Two cells cannot update the "queue tables 0~j" at the same time.

[0099] After all users in all cells in a time slot are allocated to the resource pool, the total weight of the resource pool is reset to the maximum value of 100%, and resource allocation for the next time slot is performed again.

[0100] Figure 5 The detailed process flow for updating the queue table for cell X is described as follows:

[0101] 1. Targeting Figure 4 In the process of updating the queue table of cell X, first determine whether the number of unassigned users in the cell is 0. If the number of users is 0, the process is completed and the loop is exited.

[0102] 2. If the number of retransmitting users in the cell is not 0, the retransmitting users will be processed first. If the number of retransmitting users is 0, the initial transmission users will continue to be processed.

[0103] User data transmission supports HARQ retransmission.

[0104] The initial transmission user is the first transmission, and the "original bits before LDPC channel decoding" are directly LDPC decoded, and there is no need to perform HARQ merging processing with the previous several different redundant RV version data.

[0105] The retransmitting user is not transmitting for the first time, and needs to be combined with the previous several different RV version data by HARQ processing, and then LDPC decoding is performed.

[0106] 3. The retransmitting user needs to be combined with the previously transmitted data of the same user for HARQ processing, and is preferentially allocated to the resource pool i allocated last time, and the total weight value of the allocation queue table i is updated.

[0107] 4. If the number of retransmitting users is 0, continue processing other initial transmitting users.

[0108] Fifth, for the first-time user, we need to traverse the total weights of queues 0-j and find the resource pool with the largest total weight. If the jth resource pool in queues 0-j has the largest total weight, we update the weight of user i to queue j and refresh the total weight of queue j.

[0109] 6. After a user updates "queue table 0~j", it updates the next user in sequence and traverses all users in the cell.

[0110] 7. Until all users in the cell have updated the "queue table 0~j", that is, the current cell resource pool allocation is completed, continue Figure 4 Other processing procedures in the process.

[0111] In summary, the embodiments of the present application provide a multi-core processing solution for a resource pool of multiple decoders, a decoding transmission solution based on priority and weight, and a load balancing solution for multiple decoders in a decoding resource pool. Figure 1 / 2 decoding resource utilization rate is 33% to 66%, the embodiment of this application Figure 3 The decoding resource utilization shown can be increased to 100%.

[0112] In summary, the embodiments of the present application implement an uplink decoding pooling solution, propose a shared resource pool mechanism for multi-cell parallel processing scenarios, and a maximum utilization scheduling algorithm for load balancing multiple parallel decoders in the resource pool.

[0113] See also Figure 6 , an embodiment of the present application provides a decoding resource allocation method, including:

[0114] S101, determining a resource pool weight list; the resource pool weight list includes user occupancy information of each resource pool; the resource pool includes at least one low-density parity check code LDPC decoder;

[0115] The resource pool weight list, for example, the above-mentioned queue lists 0 to j.

[0116] The user occupancy information is, for example, shown in Table 4 above.

[0117] S102: Allocate a resource pool to the user according to the resource pool weight list.

[0118] A resource pool weight list is determined by this method, wherein the resource pool weight list includes user occupancy information of each resource pool; the resource pool includes at least one low-density parity check code (LDPC) decoder; and resource pools are allocated to users based on the resource pool weight list, making load balancing processing of multiple distributed decoders in various business scenarios more convenient, which is beneficial to resource sharing of decoders and energy conservation and emission reduction of base stations.

[0119] Optionally, allocating a resource pool to a user according to the resource pool weight list specifically includes:

[0120] According to the resource pool weight list and the transmission order of the cells, a resource pool with the smallest load is selected for the user.

[0121] Optionally, as shown in Table 4 above, the resource pool weight list includes the load of each resource pool, wherein for any of the resource pools, the load of the resource pool is the sum of the loads of all users allocated to the resource pool, and the load of each user is equal to the user log-likelihood ratio LLR length / (resource pool performance*decoding time)*100%, and the resource pool performance is N*single decoder performance, where N is the number of decoders included in the resource pool.

[0122] Optionally, a resource pool is allocated to each user in the cell to be decoded in sequence, taking the cell as a unit.

[0123] Optionally, allocating a resource pool to a user according to the resource pool weight list specifically includes: allocating a resource pool to a user of a current cell to be decoded according to the resource pool weight list, and updating the resource pool weight list.

[0124] Optionally, resource pools are allocated to retransmitting users first, and when allocation of resource pools to retransmitting users is completed, resource pools are allocated to initial transmission users.

[0125] Optionally, for a retransmitting user, the resource pool that was last allocated to the same user is preferentially allocated to the retransmitting user, and the total weight value of the resource pool weight list corresponding to the resource pool is updated.

[0126] Optionally, for the first-time user, traverse the total weight value of each resource pool weight list to find the resource pool weight list with the largest total weight value; assign the resource pool corresponding to the resource pool weight list with the largest total weight value to the first-time user, and update the total weight value of the resource pool weight list corresponding to the resource pool.

[0127] Accordingly, see Figure 7 , an embodiment of the present application provides a decoding resource allocation device, comprising:

[0128] Memory 520, for storing program instructions;

[0129] The processor 500 is configured to call the program instructions stored in the memory and execute according to the obtained program:

[0130] Determine a resource pool weight list; the resource pool weight list includes user occupancy information of each resource pool; the resource pool includes at least one low-density parity check code LDPC decoder;

[0131] A resource pool is allocated to the user according to the resource pool weight list.

[0132] Optionally, the processor 500 allocates a resource pool to the user according to the resource pool weight list, specifically including:

[0133] According to the resource pool weight list and the transmission order of the cells, a resource pool with the smallest load is selected for the user.

[0134] Optionally, the resource pool weight list includes the load of each resource pool, wherein for any of the resource pools, the load of the resource pool is the sum of the loads of all users allocated to the resource pool, and the load of each user is equal to the user log-likelihood ratio LLR length / (resource pool performance*decoding time)*100%, and the resource pool performance is N*single decoder performance, where N is the number of decoders included in the resource pool.

[0135] Optionally, the processor 500 allocates a resource pool to each user in the cell to be decoded in sequence, taking the cell as a unit.

[0136] Optionally, allocating a resource pool to a user according to the resource pool weight list specifically includes: allocating a resource pool to a user of a current cell to be decoded according to the resource pool weight list, and updating the resource pool weight list.

[0137] Optionally, the processor 500 allocates resource pools to retransmitting users first, and when allocation of resource pools to retransmitting users is completed, continues to allocate resource pools to initial transmission users.

[0138] Optionally, the processor 500 preferentially allocates to a retransmitting user the resource pool that was last allocated to the same user, and updates the total weight value of the resource pool weight list corresponding to the resource pool.

[0139] Optionally, for the first-time user, the processor 500 traverses the total weight value of each resource pool weight list and finds the resource pool weight list with the largest total weight value; allocates the resource pool corresponding to the resource pool weight list with the largest total weight value to the first-time user, and updates the total weight value of the resource pool weight list corresponding to the resource pool.

[0140] The transceiver 510 is configured to receive and send data under the control of the processor 500 .

[0141] Among them, Figure 7 In the embodiment, the bus architecture may include any number of interconnected buses and bridges, specifically linking together various circuits of one or more processors represented by processor 500 and memory represented by memory 520. The bus architecture may also link together various other circuits such as peripheral devices, voltage regulators, and power management circuits, which are all well known in the art and therefore will not be described further herein. The bus interface provides an interface. The transceiver 510 may be a plurality of components, i.e., a transmitter and a receiver, providing a unit for communicating with various other devices on a transmission medium. The processor 500 is responsible for managing the bus architecture and general processing, and the memory 520 may store data used by the processor 500 when performing operations.

[0142] The processor 500 may be a central processing unit (CPU), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or a complex programmable logic device (CPLD).

[0143] See also Figure 8 Another decoding resource allocation device provided in an embodiment of the present application includes:

[0144] The first unit 11 is configured to determine a resource pool weight list, wherein the resource pool weight list includes user occupancy information of each resource pool; the resource pool includes at least one low-density parity check code (LDPC) decoder;

[0145] The second unit 12 is configured to allocate a resource pool to the user according to the resource pool weight list.

[0146] Optionally, allocating a resource pool to a user according to the resource pool weight list specifically includes:

[0147] According to the resource pool weight list and the transmission order of the cells, a resource pool with the smallest load is selected for the user.

[0148] Optionally, the resource pool weight list includes the load of each resource pool, wherein for any of the resource pools, the load of the resource pool is the sum of the loads of all users allocated to the resource pool, and the load of each user is equal to the user log-likelihood ratio LLR length / (resource pool performance*decoding time)*100%, and the resource pool performance is N*single decoder performance, where N is the number of decoders included in the resource pool.

[0149] Optionally, a resource pool is allocated to each user in the cell to be decoded in sequence, taking the cell as a unit.

[0150] Optionally, allocating a resource pool to a user according to the resource pool weight list specifically includes: allocating a resource pool to a user of a current cell to be decoded according to the resource pool weight list, and updating the resource pool weight list.

[0151] Optionally, resource pools are allocated to retransmitting users first, and when allocation of resource pools to retransmitting users is completed, resource pools are continued to be allocated to initial transmission users.

[0152] Optionally, for a retransmitting user, the resource pool that was last allocated to the same user is preferentially allocated to the retransmitting user, and the total weight value of the resource pool weight list corresponding to the resource pool is updated.

[0153] Optionally, for the first-time user, traverse the total weight value of each resource pool weight list to find the resource pool weight list with the largest total weight value; assign the resource pool corresponding to the resource pool weight list with the largest total weight value to the first-time user, and update the total weight value of the resource pool weight list corresponding to the resource pool.

[0154] It should be noted that the division of units in the embodiments of the present application is schematic and is merely a logical functional division. In actual implementation, other division methods may be used. Furthermore, the functional units in the various embodiments of the present application may be integrated into a single processing unit, or each unit may exist physically separately, or two or more units may be integrated into a single unit. The aforementioned integrated units may be implemented in the form of hardware or software functional units.

[0155] If the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application is essentially or the part that contributes to the prior art or all or part of the technical solution can be embodied in the form of a software product, and the computer software product is stored in a storage medium, including a number of instructions for enabling a computer device (which can be a personal computer, a server, or a network device, etc.) or a processor to execute all or part of the steps of the method described in each embodiment of the present application. The aforementioned storage medium includes: various media that can store program codes, such as a USB flash drive, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk or an optical disk.

[0156] An embodiment of the present application provides a computing device, which may specifically be a desktop computer, a portable computer, a smart phone, a tablet computer, a personal digital assistant (PDA), etc. The computing device may include a central processing unit (CPU), a memory, input / output devices, etc. The input devices may include a keyboard, a mouse, a touch screen, etc., and the output devices may include a display device such as a liquid crystal display (LCD) or a cathode ray tube (CRT).

[0157] The memory may include a read-only memory (ROM) and a random access memory (RAM), and provides program instructions and data stored in the memory to the processor. In an embodiment of the present application, the memory may be used to store the program of any of the methods provided in the embodiments of the present application.

[0158] The processor calls the program instructions stored in the memory, and the processor is used to execute any of the methods provided in the embodiments of the present application according to the obtained program instructions.

[0159] An embodiment of the present application provides a computer-readable storage medium for storing computer program instructions used by the apparatus provided in the above-mentioned embodiment of the present application, which includes a program for executing any of the methods provided in the above-mentioned embodiment of the present application.

[0160] The computer storage medium can be any available medium or data storage device that can be accessed by a computer, including but not limited to magnetic storage (such as floppy disks, hard disks, magnetic tapes, magneto-optical disks (MO)), optical storage (such as CDs, DVDs, BDs, HVDs, etc.), and semiconductor storage (such as ROMs, EPROMs, EEPROMs, non-volatile memories (NAND FLASH), solid-state drives (SSDs), etc.).

[0161] The above method processing flow can be implemented by a software program, and the software program can be stored in a storage medium. When the stored software program is called, the above method steps are executed.

[0162] Those skilled in the art will appreciate that the embodiments of the present application can be provided as methods, systems, or computer program products. Therefore, the present application can adopt the form of a complete hardware embodiment, a complete software embodiment, or an embodiment in combination with software and hardware. Moreover, the present application can adopt the form of a computer program product implemented on one or more computer-usable storage media (including but not limited to magnetic disk storage and optical storage, etc.) that contain computer-usable program code.

[0163] The present application is described with reference to the flowcharts and / or block diagrams of the methods, devices (systems), and computer program products according to the embodiments of the present application. It should be understood that each process and / or box in the flowchart and / or block diagram, as well as the combination of the processes and / or boxes in the flowchart and / or block diagram, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, an embedded processor, or other programmable data processing device to produce a machine, so that the instructions executed by the processor of the computer or other programmable data processing device generate instructions for implementing the steps in the process. Figure 1 a process or multiple processes and / or boxes Figure 1 A device that provides the functions specified in a block or multiple blocks.

[0164] These computer program instructions may also be stored in a computer readable memory that can direct a computer or other programmable data processing device to work in a specific manner, so that the instructions stored in the computer readable memory produce an article of manufacture comprising an instruction device, which implements the process Figure 1 a process or multiple processes and / or boxes Figure 1 The function specified in one or more boxes.

[0165] These computer program instructions can also be loaded onto a computer or other programmable data processing device so that a series of operational steps are executed on the computer or other programmable device to produce a computer-implemented process, thereby providing the instructions executed on the computer or other programmable device for implementing the process. Figure 1 a process or multiple processes and / or boxes Figure 1 A step that specifies a function in one or more boxes.

[0166] Obviously, those skilled in the art may make various changes and modifications to this application without departing from the spirit and scope of this application. Thus, if these modifications and variations of this application fall within the scope of the claims of this application and their equivalents, this application is intended to include these modifications and variations.

Claims

1. A decoding resource allocation method, characterized in that: The method comprises: Determining a resource pool weight list including at least one queue table; wherein each queue table corresponds to a resource pool, and each resource pool includes at least one low-density parity check code (LDPC) decoder; Allocating resource pools to users based on the resource pool weight list; Each of the queue tables includes: The load of each user assigned to the resource pool corresponding to the queue table, and the total weight of the resource pool corresponding to the queue table, where: The load of each user is equal to the user's log-likelihood ratio (LLR) length / (resource pool performance * decoding time) * 100%. The resource pool performance is N * single decoder performance, where N is the number of decoders in the resource pool. The total weight of the resource pool corresponding to the queue table is equal to 100% minus the actual load of the resource pool. The actual load of the resource pool is equal to the sum of the loads of all users allocated to the resource pool.

2. The method according to claim 1, characterized in that Allocating resource pools to users based on the resource pool weight list includes: According to the resource pool weight list and the transmission order of the cells, a resource pool with the smallest load is selected for the user.

3. The method according to claim 1, characterized in that Taking cells as units, resource pools are allocated sequentially to users in each cell to be decoded.

4. The method according to claim 3, characterized in that Allocating resource pools to users based on the resource pool weight list includes: According to the resource pool weight list, a resource pool is allocated to a user of the current cell to be decoded, and the resource pool weight list is updated.

5. The method according to claim 1, wherein Prioritize allocating resource pools to retransmitting users. When allocating resource pools to retransmitting users is completed, continue allocating resource pools to initial transmission users.

6. The method according to claim 5, characterized in that For a retransmitting user, the resource pool that was last allocated to the same user is preferentially allocated to the retransmitting user, and the total weight value of the queue table corresponding to the resource pool is updated.

7. The method according to claim 5, characterized in that For the first-time user, the total weight value of each queue table is traversed to find the queue table with the largest total weight value; the resource pool corresponding to the queue table with the largest total weight value is allocated to the first-time user, and the total weight value of the queue table corresponding to the resource pool is updated.

8. A decoding resource allocation device, characterized in that: The device includes: a memory for storing program instructions; The processor is configured to call the program instructions stored in the memory and execute according to the obtained program: Determining a resource pool weight list including at least one queue table; wherein each queue table corresponds to a resource pool, and each resource pool includes at least one low-density parity check code (LDPC) decoder; Allocating resource pools to users based on the resource pool weight list; Each of the queue tables includes: The load of each user assigned to the resource pool corresponding to the queue table, and the total weight of the resource pool corresponding to the queue table, where: The load of each user is equal to the user's log-likelihood ratio (LLR) length / (resource pool performance * decoding time) * 100%. The resource pool performance is N * single decoder performance, where N is the number of decoders in the resource pool. The total weight of the resource pool corresponding to the queue table is equal to 100% minus the actual load of the resource pool. The actual load of the resource pool is equal to the sum of the loads of all users allocated to the resource pool.

9. The device according to claim 8, characterized in that The processor allocates a resource pool to the user according to the resource pool weight list, including: According to the resource pool weight list and the transmission order of the cells, a resource pool with the smallest load is selected for the user.

10. The device according to claim 8, characterized in that The processor allocates a resource pool to each user in the cell to be decoded in sequence, taking the cell as a unit.

11. The device according to claim 10, characterized in that Allocating resource pools to users according to the resource pool weight list includes: allocating resource pools to users of the current cell to be decoded according to the resource pool weight list, and updating the resource pool weight list.

12. The device according to claim 8, characterized in that The processor allocates resource pools to retransmitting users first, and when the allocation of resource pools to retransmitting users is completed, it continues to allocate resource pools to initial transmission users.

13. The device according to claim 12, characterized in that For a retransmitting user, the processor preferentially allocates the resource pool that was last allocated to the same user to the retransmitting user, and updates the total weight value of the queue table corresponding to the resource pool.

14. The device according to claim 12, characterized in that For the first-time user, the processor traverses the total weight value of each queue table and finds the queue table with the largest total weight value; allocates the resource pool corresponding to the queue table with the largest total weight value to the first-time user, and updates the total weight value of the queue table corresponding to the resource pool.

15. A decoding resource allocation device, characterized in that: The device includes: The first unit is configured to determine a resource pool weight list including at least one queue table, wherein each queue table corresponds to a resource pool, and each resource pool includes at least one low-density parity check code (LDPC) decoder; The second unit is configured to allocate a resource pool to the user according to the resource pool weight list; Each of the queue tables includes: The load of each user assigned to the resource pool corresponding to the queue table, and the total weight of the resource pool corresponding to the queue table, where: The load of each user is equal to the user's log-likelihood ratio (LLR) length / (resource pool performance * decoding time) * 100%. The resource pool performance is N * single decoder performance, where N is the number of decoders in the resource pool. The total weight of the resource pool corresponding to the queue table is equal to 100% minus the actual load of the resource pool. The actual load of the resource pool is equal to the sum of the loads of all users allocated to the resource pool.

16. A computer-readable storage medium, characterized in that The computer storage medium stores computer-executable instructions, and the computer-executable instructions are used to enable the computer to execute the method according to any one of claims 1 to 7.

Citation Information

Patent Citations

  • Turbo receiver and implementation method thereof

    CN102201821A

  • Method and device for dispatching resources of virtual machine

    CN102945188A