A method and apparatus for out-of-order and interleaved data transmission

By employing out-of-order and interleaved data transmission methods using caches and cache management circuits in multi-master and multi-slave storage systems, the problems of deadlock and low bandwidth utilization are solved, achieving more efficient data transmission and improved system performance.

CN119322760BActive Publication Date: 2026-03-31WUXI STARS MICRO SYSTEM TECHNOLOGIES CO LTD
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-09-30
Publication Date
2026-03-31

AI Technical Summary

Technical Problem

In storage systems with multiple master and multiple slave devices, existing technologies suffer from deadlock and low bandwidth utilization. In particular, when supporting out-of-order transmission, traditional sorting caches cause timing issues to fail to converge, affecting system performance.

Method used

By employing a buffer and buffer management circuit, logical operations are performed using generated queue codes and resource pool codes to achieve out-of-order and interleaved data transmission, avoiding sorting buffers, ensuring timing convergence, and allowing multiple slave devices to return data simultaneously.

Benefits of technology

This improved the system's bandwidth utilization and transmission efficiency, avoided deadlock issues, and enhanced the overall system performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119322760B_ABST
    Figure CN119322760B_ABST
Patent Text Reader

Abstract

The application provides a data transmission method and device for disordering and interleaving, which comprises the following steps: receiving an access request sent by a master device, writing attribute information of the access request into an input queue buffer, the attribute information comprising a storage block number corresponding to a slave device in a resource pool and a storage bank number in the storage block, generating a queue code based on the attribute information; obtaining filling states of a plurality of storage blocks in the resource pool and a plurality of storage banks in each storage block, generating a resource pool code based on the filling states; performing logical operation on the queue code and the resource pool code to obtain a queue release signal, obtaining a resource release signal according to the queue release signal, and outputting data in a storage bank corresponding to the resource release signal from the resource pool. The technical scheme of the application improves the transmission efficiency of the system.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present application belongs to the field of storage systems, and particularly relates to a data transmission method and device with out-of-order and interleaving. BACKGROUND

[0002] In a complex storage system, there is often a high-speed data access requirement to improve the overall performance of the entire system. In view of the above requirement, a storage structure with multiple master devices and multiple slave devices as shown in FIG. 1 can be introduced to achieve large bandwidth and high-speed access. Figure 1 SUMMARY

[0003] The present application aims to provide a data transmission method and device with out-of-order and interleaving, and aims to improve the transmission efficiency of the system.

[0004] According to a first aspect of the present application, a data transmission method with out-of-order and interleaving is provided, comprising:

[0005] receiving an access request issued by a master device, writing attribute information of the access request into an input queue cache, the attribute information including a storage block number corresponding to a slave device in a resource pool and a storage bank number in the storage block, and generating a queue code based on the attribute information;

[0006] obtaining a filling state of a plurality of storage blocks in the resource pool and a plurality of storage banks in each storage block, and generating a resource pool code based on the filling state;

[0007] performing logical operation on the queue code and the resource pool code to obtain a queue release signal, obtaining a resource release signal according to the queue release signal, and outputting data in a storage bank corresponding to the resource release signal from the resource pool.

[0008] In an optional embodiment, the generating of the queue code based on the attribute information further comprises:

[0009] obtaining index information index in the attribute information, the index representing a sequential number of a request with the same ID issued by the master device;

[0010] when the index is 0, i.e. the request is the earliest request issued in the ID, setting the queue code at bits in the interval of [((block_num+1)*n)-1:block_num*n] to storage_num, and all the other bits to 0; wherein block_num represents the storage block number hit by the request, storage_num represents the storage bank number hit by the request, and n is the number of storage banks in each storage block;

[0011] ​When the index is not 0, meaning the request is the last one issued within that ID, the queue code is set to 0.

[0012] In an optional implementation, generating resource pool codes based on the filling state further includes:

[0013] Get the fill status of each storage cell in each storage block; if it is filled, the value is 1, otherwise it is 0.

[0014] All the fill states in each memory block are combined into an n-bit memory block code;

[0015] The codes of each storage block are concatenated in sequence to form the resource pool code.

[0016] In an optional implementation, after outputting the data in the storage corresponding to the resource release signal from the resource pool, the method further includes:

[0017] Update the index information in the input queue cache.

[0018] In an optional implementation, the step of performing logical operations on the queue code and the resource pool code to obtain a queue release signal, and obtaining a resource release signal based on the queue release signal, further includes:

[0019] The queue code and the resource pool code are bitwise ANDed and then bitwise ORed to obtain the queue release signal. Each bit of the queue release signal represents a layer in the input queue buffer, so that the queue management module can obtain the resource release signal from the index information based on the queue release signal.

[0020] According to a second aspect of this application, a data transmission apparatus for out-of-order and interleaved data transmission is provided, comprising:

[0021] The queue management module is used to receive access requests from the master device, write the attribute information of the access request into the input queue cache, the attribute information includes the storage block number corresponding to the slave device in the resource pool and the storage body number in the storage block, and generate a queue code based on the attribute information.

[0022] The resource pool management module is used to obtain the filling status of multiple storage blocks in the resource pool and multiple storage bodies in each storage block, and generate a resource pool code based on the filling status;

[0023] The calculation module is used to perform logical operations on the queue code and the resource pool code to obtain a queue release signal. The queue management module obtains a resource release signal based on the queue release signal and outputs the data in the storage corresponding to the resource release signal from the resource pool.

[0024] Compared with related technologies, the technical solution of this application has the following advantages:

[0025] By employing a buffer and buffer management circuit to achieve out-of-order and interleaved data transmission, the timing convergence is improved, and all master devices can simultaneously receive data returned from multiple slave devices, resulting in higher bandwidth utilization and improved system transmission efficiency.

[0026] Other features and advantages of this application will be set forth in the description which follows, and will be apparent in part from the description, or may be learned by practicing the application. The objectives and other advantages of this application may be realized and obtained by means of the structures and processes shown in the description and the accompanying drawings. Attached Figure Description

[0027] To more clearly illustrate the technical solutions in the embodiments or related technologies of this application, the accompanying drawings used in the description of the embodiments or related technologies will be briefly introduced below. Obviously, the accompanying drawings described below are some embodiments of this application. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.

[0028] Figure 1 This is a schematic diagram of a multi-master, multi-slave circuit structure based on relevant technologies.

[0029] Figure 2 This is a flowchart of a method for out-of-order and interleaved data transmission according to an exemplary embodiment of this application.

[0030] Figure 3 This is an implementation architecture block diagram according to an exemplary embodiment of this application.

[0031] Figure 4 This is a block diagram of a resource management pool according to an exemplary embodiment of this application.

[0032] Figure 5 This is a schematic diagram illustrating the occupancy and release of storage according to an exemplary embodiment of this application.

[0033] Figure 6 This is a filled diagram of the queue management buffer according to an exemplary embodiment of this application.

[0034] Figure 7 This is a schematic diagram of an algorithm according to an exemplary embodiment of this application. Detailed Implementation

[0035] To make the objectives, technical solutions, and advantages of the embodiments of this application clearer, the technical solutions of the embodiments of this application will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this application, not all embodiments. Based on the embodiments of this application, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of this application.

[0036] In multi-master and multi-slave architectures, if the master only supports sequential transmission, it can lead to potential deadlocks and increased latency. Traditionally, a sorting buffer is introduced in the master to reorder out-of-order data. However, this complicates the control logic, causing backend timing to fail to converge, thus introducing risks and obstacles to the project. Furthermore, the master can often only receive data from one slave at a time, reducing the slave's bandwidth utilization. If the master supports out-of-order transmission and can simultaneously receive data from multiple slaves, deadlocks can be avoided, latency reduced, and the overall system bandwidth utilization improved.

[0037] Based on the above analysis, this application provides a method and apparatus for out-of-order and interleaved data transmission. Unlike using a sorting buffer to sort data, it uses a buffer and buffer management circuit to select data that meets the output conditions at different time points to perform sequential output of the data (same ID is output in order, different ID is output out of order), thereby realizing out-of-order and interleaved data transmission, making the timing better convergent, and all masters can receive data returned by multiple slaves at the same time, achieving a one-to-many effect, making the system's bandwidth utilization higher and improving the system's transmission efficiency.

[0038] See Figure 2 The flowchart illustrates, for example, the out-of-order and interleaved data transmission method provided in this application, which includes:

[0039] Step 201: Receive the access request sent by the master device, write the attribute information of the access request into the input queue cache, the attribute information includes the storage block number corresponding to the slave device in the resource pool and the storage body number in the storage block, and generate a queue code based on the attribute information.

[0040] For example, the implementation block diagram of this application is as follows: Figure 3 As shown, the overall architecture consists of three parts: a queue management module, a resource pool management module, and a computing module.

[0041] The queue management module contains an input queue buffer, into which information related to requests issued by the host is sequentially placed. When output permission is granted for a request, the information in the buffer is updated. Based on the information in the buffer, a specific set of codes (queue_code) is output to the computation module.

[0042] In response to the request, a resource request is made. Based on the address requested by the host, a block in the resource pool is selected. Based on the internal state of the block, the internal storage unit number of the block is output to the queue management module, and the free flag representing the free storage unit inside the storage block in the resource pool is updated.

[0043] Store the block_num, id, index, storage_num, and other information corresponding to the request into the queue buffer.

[0044] Step 202: Obtain the filling status of multiple storage blocks in the resource pool and multiple storage bodies in each storage block, and generate a resource pool code based on the filling status.

[0045] The resource pool management module contains multiple storage blocks, the number of blocks (m) being the same as the number of slaves. Each block further contains multiple storage units (n). The number of storage blocks and the number of storage units (n) are variable and determined by design requirements.

[0046] Once the requested data enters the storage, the resource pool management module issues a data output request and outputs the pool_code. Simultaneously, the queue management module outputs the queue_code.

[0047] Step 203: Perform logical operations on the queue code and the resource pool code to obtain the queue release signal, obtain the resource release signal based on the queue release signal, and output the data in the storage corresponding to the resource release signal from the resource pool.

[0048] The calculation module internally contains logic operation circuits used to perform logical operations on the code `queue_code` output by the queue management module and the code `pool_code` output by the resource pool management module, and output a queue release signal `grant`. The queue management module obtains the resource release signal `release_num` based on the queue release signal `grant`.

[0049] The calculation module performs a logical operation on the `pool_code` and `queue_code` output by the resource pool. The result is then sent to the queue management module via a `grant` signal. Based on this `grant` signal, the queue management module outputs a resource release signal `release_num` to the resource pool management module. Simultaneously, the resource pool outputs the data from the storage corresponding to `release_num`.

[0050] For example, after the data is output, the resource pool status is updated, and the information in the queue management buffer is updated.

[0051] For example, Figure 4 The structure of the resource management pool is illustrated. Host requests hit blocks via address mapping. When a request from a host hits a block within the resource pool, the resource pool management module allocates storage for the request based on the pool's internal state. Once the requested data has been granted output permission and fully output, the storage is released. After the requested data is stored in the storage, a specific set of codes is output to the computing module.

[0052] For example, Figure 5 This diagram illustrates the occupancy and release of memory within a block. `free` represents the number of the first free storage unit within the block. When storage within a block is not occupied, `free` is the storage unit with the smallest number. Memory units within a block are occupied sequentially, and when a storage unit within a block is released, the unit with the smallest number becomes the `free` unit.

[0053] In a preferred embodiment, generating resource pool codes based on the filling state further includes:

[0054] Get the fill status of each storage cell in each storage block; if it is filled, the value is 1, otherwise it is 0.

[0055] All the fill states in each memory block are combined into an n-bit memory block code;

[0056] The codes of each storage block are concatenated in sequence to form the resource pool code.

[0057] Specifically, the pool_code generated by the resource pool module is composed of the filling states of the internal storage of each block concatenated in sequence.

[0058] Pool_code={blockn_code, blockn-1_code,······, block1_code, block0_code}

[0059] Each `block_code` is n bits wide, and each bit corresponds to the fill state of the block's internal storage; it is 1 if filled and 0 otherwise. Therefore, the width of `pool_code` is m * n bits, where m is the number of blocks and n is the number of internal storage units within each block.

[0060] For example, the step of generating queue codes based on the attribute information further includes:

[0061] Obtain the index information from the attribute information, where the index represents the sequential number of requests with the same ID issued by the master device;

[0062] When the index is 0, meaning the request is the earliest one issued in this ID, the bits of the queue code in the range [((block_num+1)*n)-1:block_num*n] are set to storage_num, and all other bits are 0; where block_num represents the storage block number hit by the request, storage_num represents the storage body number in the storage block hit by the request, and n is the number of storage bodies in each storage block;

[0063] When the index is not 0, meaning the request is the last one issued within that ID, the queue code is set to 0.

[0064] Each of the multiple storage blocks can receive data returned by the corresponding slave device, thus achieving the goal of receiving data from multiple slaves simultaneously.

[0065] Figure 6 This diagram illustrates the internal structure of the buffer within the queue management module. `free_layer` represents the first free layer of the buffer; when a request is received, it is stored in the layer represented by `free_layer`. `ID` represents the ID of the request issued by the host, `Block_num` is the block number in the resource pool that the host's request hits, `storage_num` is the storage number within the block that the host's request hits, `index` is the sequential number of requests with the same ID issued by the host, and `m*n` is the buffer depth. When a request is received from the master, the corresponding attribute information is stored in the buffer. After all data for that request has been transmitted, the attribute information of the corresponding layer in the queue buffer becomes invalid, and that layer can store information related to new requests. At this point, the `index` information in the buffer needs to be updated.

[0066] The rules for generating queue_code for each buffer level in the queue management module are as follows:

[0067] When index ≠ 0, queue_code = {m * n{1'b0}}. Here, m is the number of blocks, and n is the number of storage entries within a block. 1'b0 represents a binary 0 with a width of 1.

[0068] Where index≠0 means that the request corresponding to this layer is the request that comes later in the queue with this ID, and in this case, queue_code is all 0.

[0069] When index is 0, it indicates that the request was the earliest one issued for this ID. The bits of queue_code in the range [((block_num+1)*n)-1:block_num*n] are set to storage_num, and all other bits are 0. Specifically:

[0070] When index = 0 and block_num = 0:

[0071] queue_code={{n'b0},{n'b0},...,{n'b0},{n'b0},{n'b0},{n'b0},storage_num}

[0072] When index = 0 and block_num = 1:

[0073] queue_code={{n'b0},{n'b0},...,{n'b0},{n'b0},{n'b0},storage_num,{n'b0}}

[0074] Each level of the queue buffer generates an encoding, therefore the depth of the queue encoding `queue_code` is the same as the depth of the queue buffer, both being [m*n]. `queue_code` is divided into m segments, each segment corresponding to a block. The width of each segment is n bits, corresponding to the number of storage units within the block; therefore, the width of `queue_code` is also m*n bits. The value of `queue_code` is determined by `block_num`, `storage_num`, and `index` stored internally in the buffer. The `block_num` in the queue buffer is used to determine which segment of the `queue_code` `storage_num` belongs to.

[0075] For example, such as Figure 7As shown, the calculation module performs a bitwise AND operation on the queue_code (an array with both depth and width of m*n) output by the queue management module and the pool_code output by the resource pool management module, followed by a bitwise OR operation, to obtain the grant signal. The grant signal has a width of m*n bits, and each bit of the grant signal represents a layer in the queue management module's buffer.

[0076] In a preferred embodiment, when multiple bits of the grant are 1, the lower bit has the highest priority, meaning that the data requested by the buffer layer corresponding to the lower bit is granted output permission.

[0077] It is evident that the out-of-order and interleaved data transmission method provided in this application has the following advantages compared to related technologies:

[0078] By employing a buffer and buffer management circuit to achieve out-of-order and interleaved data transmission, the timing convergence is improved, and all master devices can simultaneously receive data returned from multiple slave devices, resulting in higher bandwidth utilization and improved system transmission efficiency.

[0079] Accordingly, exemplarily, this application provides a second aspect of an out-of-order and interleaved data transmission apparatus, comprising:

[0080] The queue management module is used to receive access requests from the master device, write the attribute information of the access request into the input queue cache, the attribute information includes the storage block number corresponding to the slave device in the resource pool and the storage body number in the storage block, and generate a queue code based on the attribute information.

[0081] The resource pool management module is used to obtain the filling status of multiple storage blocks in the resource pool and multiple storage bodies in each storage block, and generate a resource pool code based on the filling status;

[0082] The calculation module is used to perform logical operations on the queue code and the resource pool code to obtain a queue release signal. The queue management module obtains a resource release signal based on the queue release signal and outputs the data in the storage corresponding to the resource release signal from the resource pool.

[0083] The above-described device can be implemented using the out-of-order and interleaved data transmission method provided in the first aspect of the embodiments. For specific implementation details, please refer to the description in the first aspect of the embodiments, which will not be repeated here.

[0084] It is understood that the structures, names, and parameters described in the above embodiments are merely examples. Those skilled in the art can also make readily conceived combinations and adjustments to the structural features of the above embodiments according to their needs, and the concept of this application should not be limited to the specific details of the above examples.

[0085] Although this application has been described in detail with reference to the foregoing embodiments, those skilled in the art should understand that modifications can still be made to the technical solutions described in the foregoing embodiments, or equivalent substitutions can be made to some of the technical features; and these modifications or substitutions do not cause the essence of the corresponding technical solutions to deviate from the spirit and scope of the technical solutions of the embodiments of this application.

Claims

1. A method of data transmission with out-of-order and interleaving, characterized by, The method comprises the following steps: receiving an access request sent by a master device, writing attribute information of the access request into an input queue cache, the attribute information comprising a storage block number corresponding to a slave device in a resource pool and a storage bank number in the storage block, and generating a queue code based on the attribute information; obtaining filling states of a plurality of storage blocks in the resource pool and a plurality of storage banks in each storage block, and generating a resource pool code based on the filling states; performing logical operation on the queue code and the resource pool code to obtain a queue release signal, obtaining a resource release signal from the index information based on the queue release signal, and outputting data in a storage bank corresponding to the resource release signal from the resource pool.

2. The data transmission method of out-of-order and interleaving according to claim 1, wherein, The method further comprises the following steps: obtaining index information index in the attribute information, wherein the index represents a sequential number of a request with the same ID sent by the master device; when the index is 0, i.e., the request is the earliest request sent by the master device, setting bits in a range of [((block_num+1)*n)-1:block_num*n] of the queue code to storage_num, and setting the remaining bits to 0, wherein block_num represents the storage block number hit by the request, storage_num represents the storage bank number in the storage block hit by the request, and n represents the number of storage banks in each storage block; when the index is not 0, i.e., the request is a later request sent by the master device, setting the queue code to 0.

3. The data transmission method of out-of-order and interleaving according to claim 1, wherein, The method further comprises the following steps: obtaining the filling state of each storage bank in each storage block, wherein 1 represents that the storage bank is filled, and 0 represents that the storage bank is not filled; composing n-bit storage block codes of all storage banks in each storage block; splicing the storage block codes in sequence to obtain the resource pool code.

4. The data transmission method of out-of-order and interleaving according to claim 1, wherein, After the data in the storage bank corresponding to the resource release signal is output from the resource pool, the method further comprises the following step: updating the index information in the input queue cache.

5. The data transmission method of out-of-order and interleaving according to claim 1, wherein, The method further comprises the following step: performing bitwise AND operation and bitwise OR operation on the queue code and the resource pool code to obtain the queue release signal, wherein each bit of the queue release signal sequentially represents a layer in the input queue cache, so that the queue management module obtains the resource release signal from the index information based on the queue release signal.

6. An apparatus for out-of-order and interleaved data transmission, the apparatus comprising: The method comprises the following steps: a queue management module, configured to receive an access request sent by a master device, write attribute information of the access request into an input queue cache, the attribute information comprising a storage block number corresponding to a slave device in a resource pool and a storage bank number in the storage block, and generate a queue code based on the attribute information; a resource pool management module, configured to obtain filling states of a plurality of storage blocks in the resource pool and a plurality of storage banks in each storage block, and generate a resource pool code based on the filling states; and a queue release module, configured to perform logical operation on the queue code and the resource pool code to obtain a queue release signal, obtain a resource release signal from the index information based on the queue release signal, and output data in a storage bank corresponding to the resource release signal from the resource pool. The computing module is configured to perform logical operation on the queue encoding and the resource pool encoding to obtain a queue release signal, so that the queue management module obtains a resource release signal according to the queue release signal, and outputs data in a memory cell corresponding to the resource release signal from the resource pool.

7. The apparatus of claim 6, wherein, The queue management module is further configured to: obtain index information index in the attribute information, the index indicating a sequence number of a request with a same ID sent by the host device; when the index is 0, that is, the request is the earliest request sent in the ID, set storage_num to bits in a range of [((block_num+1)*n)-1:block_num*n] of the queue encoding, and set all other bits to 0; wherein block_num indicates a storage block number hit by the request, storage_num indicates a memory cell number in the storage block hit by the request, and n is a number of memory cells in each storage block; when the index is not 0, that is, the request is a later request sent in the ID, set all bits of the queue encoding to 0.

8. The apparatus of claim 6, wherein, The resource pool management module is further configured to: obtain a filling state of each memory cell in each storage block, 1 if filled, otherwise 0; compose n-bit storage block encodings from all filling states in each storage block; splice the storage block encodings in sequence to compose the resource pool encoding.

9. The data transmission apparatus of claim 6, wherein, The queue management module is further configured to: update the index information in the input queue buffer after outputting data in the memory cell corresponding to the resource release signal from the resource pool.

10. The data transmission apparatus of claim 6, wherein, The computing module is further configured to: perform bitwise AND operation on the queue encoding and the resource pool encoding, and then perform bitwise OR operation to obtain a queue release signal, so that the queue management module obtains the resource release signal according to the queue release signal, and each bit of the queue release signal sequentially represents a layer in the input queue buffer.

Citation Information

Patent Citations

  • Memory system, access control method therefor, and computer program

    CN101609438A

  • Atomic read / write support in a multi-module memory configuration

    US20060047919A1