Out-of-order and interleaved data transmission method and device
Through the data transmission method of out-of-order and interleaved, the buffer and cache management circuit are used to realize out-of-order output of data in the storage system, solving the problems of deadlock and low bandwidth utilization caused by traditional sequential transmission, and improving the system transmission Efficiency and bandwidth utilization.
Patent Information
- Application Number
- CN202411383367.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-09-30
- Publication Date
- 2025-01-17
- Estimated Expiration
- 2044-09-30
AI Technical Summary
In complex storage systems, traditional sequential data transmission methods are prone to trigger deadlocks and increase waiting delays, and the master device can only receive data from one slave device at the same time, resulting in low bandwidth utilization and cannot meet the needs of high-speed data access.
Adopt the data transmission method of out-of-order and interleaved, through the queue management module, resource pool management module and calculation module, the cache management circuit is used to generate queue encoding and resource pool encoding for logical operations, and realize the out-of-order output of data to ensure that Data with the same ID is kept in sequence, and data with different IDs are out of order, avoiding deadlocks and improving bandwidth utilization.
This achieves better convergence of timing, and all master devices can receive data from multiple slave devices at the same time, improving the transmission efficiency and bandwidth utilization of the system.
Smart Images

Figure CN119322760A_ABST
Abstract
Description
Technical Field
[0001] The present application belongs to the field of storage systems, and in particular to a method and device for out-of-order and interleaved data transmission. Background Art
[0002] In complex storage systems, there is often a need for high-speed data access to improve the overall performance of the entire system. To meet the above requirements, we can introduce Figure 1 The storage structure of multiple master devices (master) and multiple slave devices (slave) shown in the figure can achieve high bandwidth and high-speed access. Summary of the invention
[0003] The purpose of the present application is to provide a method and device for out-of-order and interleaved data transmission, aiming to improve the transmission efficiency of the system.
[0004] According to a first aspect of the present application, a method for out-of-order and interleaved data transmission is provided, comprising:
[0005] Receive an access request sent by a master device, write attribute information of the access request into an input queue cache, the attribute information including a storage block number corresponding to the slave device in a resource pool and a storage body number in the storage block, and generate a queue code based on the attribute information;
[0006] Acquire 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;
[0007] A queue release signal is obtained by performing a logical operation on the queue code and the resource pool code, a resource release signal is obtained according to the queue release signal, and data in a storage body corresponding to the resource release signal is output from the resource pool.
[0008] In an optional implementation manner, the generating a queue code based on the attribute information further includes:
[0009] Obtaining index information index in the attribute information, where the index represents a sequence number of requests for the same ID issued by the master device;
[0010] When index is 0, that is, the request is the earliest request issued in the ID, the bits of the queue code in the interval [((block_num+1)*n)-1:block_num*n] are set to storage_num, and the rest of the bits are all 0; block_num represents the number of the storage block hit by the request, storage_num represents the number of the storage body hit by the request, and n is the number of storage bodies in each storage block;
[0011] When the index is not 0, that is, the request is the request sent later in the ID, the queue codes are all set to 0.
[0012] In an optional implementation, the generating a resource pool code based on the filling state further includes:
[0013] Get the filling status of each storage bank in each storage block, which is 1 if filled, otherwise 0;
[0014] All the filling states in each memory block are combined into an n-bit memory block code;
[0015] The storage block codes are sequentially concatenated to form the resource pool code.
[0016] In an optional implementation manner, after outputting the data in the storage body corresponding to the resource release signal from the resource pool, the method further includes:
[0017] Update the index information in the input queue buffer.
[0018] In an optional implementation, performing a logical operation on the queue code and the resource pool code to obtain a queue release signal, and obtaining a resource release signal according to 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 sequentially represents a layer in the input queue cache, so that the queue management module obtains the resource release signal from the index information according to the queue release signal.
[0020] According to a second aspect of the present application, a disordered and interleaved data transmission device is provided, comprising:
[0021] A queue management module, configured to receive an access request from a master device, write attribute information of the access request into an input queue buffer, wherein the attribute information includes a storage block number corresponding to the slave device in a resource pool and a storage body number in the storage block, and generate a queue code based on the attribute information;
[0022] A resource pool management module, used for obtaining the filling status of multiple storage blocks in the resource pool and multiple storage bodies in each storage block, and generating a resource pool code based on the filling status;
[0023] The calculation module is used to perform a logical operation on the queue code and the resource pool code to obtain a queue release signal. The queue management module obtains a resource release signal according to the queue release signal, and outputs data in a storage body corresponding to the resource release signal from the resource pool.
[0024] Compared with the related art, the technical solution of this application has the following advantages:
[0025] The use of buffers and buffer management circuits to achieve out-of-order and interleaved data transmission allows for better timing convergence, and all master devices can simultaneously receive data returned by multiple slave devices, resulting in higher bandwidth utilization and improved system transmission efficiency.
[0026] Other features and advantages of the present application will be described in the following description, and partly become apparent from the description, or be understood by practicing the present application. The purpose and other advantages of the present application can be realized and obtained through the structures and processes indicated in the description and the drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0027] In order to more clearly illustrate the technical solutions in the embodiments of the present application or the related technologies, the drawings required for use in the embodiments or the related technical descriptions are briefly introduced below. It is obvious that the drawings described below are certain embodiments of the present application. For ordinary technicians in this field, other drawings can be obtained based on these drawings without paying any creative work.
[0028] Figure 1 It is a schematic diagram of a multi-master and multi-slave circuit structure according to the relevant technology.
[0029] Figure 2 is a flowchart of a method for out-of-order and interleaved data transmission according to an exemplary embodiment of the present application.
[0030] Figure 3 It is a block diagram of an implementation architecture according to an exemplary embodiment of the present application.
[0031] Figure 4 is a block diagram of a resource management pool according to an exemplary embodiment of the present application.
[0032] Figure 5 It is a schematic diagram of the occupation and release of a storage body according to an exemplary embodiment of the present application.
[0033] Figure 6 It is a filling diagram of the queue management buffer according to an exemplary embodiment of the present application.
[0034] Figure 7 It is a schematic diagram of an algorithm according to an exemplary embodiment of the present application. DETAILED DESCRIPTION
[0035] In order to make the purpose, technical solution and advantages of the embodiments of the present application clearer, the technical solution in the embodiments of the present application will be clearly and completely described below in conjunction with the drawings in the embodiments of the present application. Obviously, the described embodiments are part of the embodiments of the present application, not all of the embodiments. Based on the embodiments in the present application, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of this application.
[0036] In a multi-master and multi-slave structure, if the master only supports sequential transmission, it will cause potential deadlock and increase waiting delay. In traditional technology, a sorting buffer is introduced in the master to reorder the data received out of order, but this will make the control logic more complicated, resulting in the failure of backend timing to converge, thus bringing risks and obstacles to the project. In addition, the master can often only receive data from one slave at a time, which will reduce the bandwidth utilization of the slave. If the master supports out-of-order transmission and can receive data returned by multiple slaves at the same time, it can avoid deadlock problems and reduce delays, while also improving the bandwidth utilization of the entire system.
[0037] Based on the above analysis, the present application provides a method and device for random and interleaved data transmission. Different from using a sorting buffer to sort data, a cache and a cache management circuit are used to select data that meets the output conditions at different time points to perform sequential output of data (sequence-preserving output for the same ID and random output for different IDs), thereby realizing random and interleaved data transmission, making the timing converge better, and all masters can receive data returned by multiple slaves at the same time, achieving a one-to-many effect, making the system bandwidth utilization higher and improving the system transmission efficiency.
[0038] See also Figure 2 , illustratively, the random and interleaved data transmission method provided by the present application includes:
[0039] Step 201: Receive an access request from a master device, write 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 body number in the storage block, and generate a queue code based on the attribute information.
[0040] For example, the implementation block diagram of the present application is as follows: Figure 3 As shown in the figure, the overall architecture consists of three parts: queue management module, resource pool management module and computing module.
[0041] The queue management module contains an input queue buffer, and the relevant information of the request issued by the host is put into the input queue buffer in order. When the data of a certain request obtains output permission, the information in the buffer is updated. According to the information in the buffer, a set of specific codes queue_code is output to the calculation module.
[0042] In response to the request, resources are applied for, a block in the resource pool is selected according to the address requested by the host, and according to the internal state of the block, the internal storage body number of the block is output to the queue management module, and the free flag representing the free storage body 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 in the queue buffer.
[0044] Step 202: Obtain 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 is the same as the number of slaves, and each block further contains multiple storage bodies. The number of storage blocks and the number of storage bodies n are variable and determined by design requirements.
[0046] When the requested data enters the storage body, the resource pool management module issues a data output request and outputs pool_code. At the same time, the queue management module outputs queue_code.
[0047] Step 203: Performing a 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 body corresponding to the resource release signal from the resource pool.
[0048] The calculation module contains a logic operation circuit, which is used to perform a logic operation 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 a resource release signal release_num according to the queue release signal grant.
[0049] The computing module performs a logical operation on the pool_code and queue_code output by the resource pool. The operation result grant is input to the queue management module. The queue management module outputs a resource release signal release_num to the resource pool management module according to the grant signal. At the same time, the resource pool outputs the data in the storage body corresponding to release_num.
[0050] Exemplarily, 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 shown. The host request hits the block by address mapping. When the request issued by the host hits the block in the resource pool, the resource pool management module allocates a storage body for the request according to the internal state of the resource pool. When the requested data obtains output permission and is fully output, the storage body is released. When the requested data is stored in the storage body, a set of specific codes is output to the computing module.
[0052] For example, Figure 5 The diagram shows the occupation and release of the storage in the block. Free indicates the number of the first free storage in the block. When the storage in the block is not occupied, free is the storage unit with the smallest number. The storage in the block is occupied in sequence. When the storage unit in the block is released, the unit with the smallest number is the free unit.
[0053] In a preferred embodiment, said generating a resource pool code based on said filling state further comprises:
[0054] Get the filling status of each storage bank of each storage block, which is 1 if filled, otherwise 0;
[0055] All the filling states in each memory block are combined into an n-bit memory block code;
[0056] The storage block codes are sequentially concatenated to form the resource pool code.
[0057] Specifically, the code pool_code generated by the resource pool module is composed of the filling status of the internal storage bodies of each block spliced in sequence.
[0058] Pool_code={blockn_code, blockn-1_code,······, block1_code, block0_code}
[0059] Each block_code is n bits wide, each bit corresponds to the filling status of the internal storage of the block, 1 if filled, otherwise 0. Therefore, the width of pool_code is m*n bits. m is the number of blocks, and n is the number of internal storage of the block.
[0060] Exemplarily, the generating a queue code based on the attribute information further includes:
[0061] Obtaining index information index in the attribute information, where the index represents a sequence number of requests for the same ID issued by the master device;
[0062] When index is 0, that is, the request is the earliest request issued in the ID, the bits of the queue code in the interval [((block_num+1)*n)-1:block_num*n] are set to storage_num, and the rest of the bits are all 0; block_num represents the number of the storage block hit by the request, storage_num represents the number of the storage body 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, that is, the request is the request sent later in the ID, the queue codes are all set to 0.
[0064] Each of the multiple storage blocks can receive data returned by the corresponding slave device (slave), so as to achieve the purpose of receiving data from multiple slaves at the same time.
[0065] Figure 6 It is a filling diagram inside the buffer in the queue management module. free_layer represents the first free layer of the buffer. When a request is input, the layer represented by free_layer is stored. ID represents the ID number of the request issued by the host, Block_num is the number of the block in the resource pool hit by the request issued by the host, storage_num represents the number of the storage body storage inside the block hit by the request issued by the host, index is the sequence number of the request issued by the host with the same ID, and m*n is the buffer depth. When the request issued by the master is input, the corresponding attribute information is stored in the buffer. When all the data of the request is transmitted, the attribute information of the corresponding layer in the queue buffer will become invalid, and the layer can store the relevant information of the new request. At this time, the index information in the buffer needs to be updated.
[0066] The rules for generating queue_code for each buffer layer in the queue management module are as follows:
[0067] When index≠0, queue_code={m*n{1'b0}}. m is the number of blocks, n is the number of storages inside the 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 ID, and queue_code is all 0s.
[0069] When index is 0, it means that the request is the earliest request issued by the ID, and the bits of queue_code in the interval [((block_num+1)*n)-1:block_num*n] are set to storage_num, and the rest of the bits are all 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 layer of the queue buffer generates a code, so the depth of the queue code queue_code is the same as the depth of the queue buffer, which is [m*n]. The queue_code is divided into m fields, each of which corresponds to a block. The width of each field is n bits, corresponding to the number of internal storage bodies of the block, so the width of the queue_code is also m*n bits. The value of queue_code is determined by the block_num, storage_num and index stored in the buffer. The block_num in the queue buffer is used to determine which field of the queue_code the storage_num is in.
[0075] For example, Figure 7As shown in the figure, the calculation module first performs a bitwise AND operation on the queue_code (array with depth and width of m*n) output by the queue management module and the pool_code output by the resource pool management module, and then performs a bitwise OR operation to obtain the grant signal. The width of the grant signal is m*n bits, and each bit of grant sequentially represents a layer in the queue management module buffer.
[0076] In a preferred embodiment, when multiple bits of a grant are 1, the lower bit has the highest priority, that is, the requested data represented by the buffer layer corresponding to the lower bit obtains output permission.
[0077] It can be seen that the out-of-order and interleaved data transmission method provided by the present application has the following advantages compared with the related art:
[0078] The use of buffers and buffer management circuits to achieve out-of-order and interleaved data transmission allows for better timing convergence, and all master devices can simultaneously receive data returned by multiple slave devices, resulting in higher bandwidth utilization and improved system transmission efficiency.
[0079] Accordingly, illustratively, the present application provides a second aspect of a random and interleaved data transmission device, including:
[0080] A queue management module, configured to receive an access request from a master device, write attribute information of the access request into an input queue buffer, wherein the attribute information includes a storage block number corresponding to the slave device in a resource pool and a storage body number in the storage block, and generate a queue code based on the attribute information;
[0081] A resource pool management module, used for obtaining the filling status of multiple storage blocks in the resource pool and multiple storage bodies in each storage block, and generating a resource pool code based on the filling status;
[0082] The calculation module is used to perform a logical operation on the queue code and the resource pool code to obtain a queue release signal. The queue management module obtains a resource release signal according to the queue release signal, and outputs data in a storage body corresponding to the resource release signal from the resource pool.
[0083] The above-mentioned device can be implemented by the out-of-order and interleaved data transmission method provided by the embodiment of the first aspect above. The specific implementation method can be found in the description of the embodiment of the first aspect, and will not be repeated here.
[0084] It is understood that the structures, names and parameters described in the above embodiments are only examples. Those skilled in the art can also easily think of combinations and adjustments to the structural features of the above embodiments according to the use requirements, and should not limit the concept of the present application to the specific details of the above examples.
[0085] Although the present application has been described in detail with reference to the aforementioned embodiments, a person skilled in the art should understand that he or she may still modify the technical solutions described in the aforementioned embodiments, or make equivalent substitutions for some of the technical features therein; 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 the present application.
Claims
1. A method for random and interleaved data transmission, characterized in that: include: Receive an access request sent by a master device, write attribute information of the access request into an input queue cache, the attribute information including a storage block number corresponding to the slave device in a resource pool and a storage body number in the storage block, and generate a queue code based on the attribute information; Acquire 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; A queue release signal is obtained by performing a logical operation on the queue code and the resource pool code, a resource release signal is obtained according to the queue release signal, and data in a storage body corresponding to the resource release signal is output from the resource pool.
2. The method for transmitting data in a disordered and interleaved manner according to claim 1, characterized in that: The generating of the queue code based on the attribute information further comprises: Obtaining index information index in the attribute information, where the index represents a sequence number of requests for the same ID issued by the master device; When index is 0, that is, the request is the earliest request issued in the ID, the bits of the queue code in the interval [((block_num+1)*n)-1:block_num*n] are set to storage_num, and the rest of the bits are all 0; block_nm 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; When the index is not 0, that is, the request is the request sent later in the ID, the queue codes are all set to 0.
3. The method for transmitting data in a disordered and interleaved manner according to claim 1, characterized in that: The generating of the resource pool code based on the filling state further comprises: Get the filling status of each storage bank in each storage block, which is 1 if filled, otherwise 0; The filling status of all memory banks in each memory block is composed into an n-bit memory block code; The storage block codes are sequentially concatenated to form the resource pool code.
4. The method for transmitting data in a disordered and interleaved manner according to claim 1, characterized in that: After outputting the data in the storage body corresponding to the resource release signal from the resource pool, the method further comprises: Update the index information in the input queue buffer.
5. The method for transmitting data in a disordered and interleaved manner according to claim 1, characterized in that: The step of performing a logical operation on the queue code and the resource pool code to obtain a resource release signal further includes: 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 sequentially represents a layer in the input queue cache, so that the queue management module obtains the resource release signal from the index information according to the queue release signal.
6. A random and interleaved data transmission device, characterized in that: include: A queue management module, configured to receive an access request from a master device, write attribute information of the access request into an input queue buffer, wherein the attribute information includes a storage block number corresponding to the slave device in a resource pool and a storage body number in the storage block, and generate a queue code based on the attribute information; A resource pool management module, used for obtaining the filling status of multiple storage blocks in the resource pool and multiple storage bodies in each storage block, and generating a resource pool code based on the filling status; The calculation module is used to perform a logical operation on the queue code and the resource pool code 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 storage body corresponding to the resource release signal from the resource pool.
7. The out-of-order and interleaved data transmission device according to claim 6, characterized in that: The queue management module is further used for: Obtaining index information index in the attribute information, where the index represents a sequence number of requests for the same ID issued by the master device; When index is 0, that is, the request is the earliest request issued in the ID, the bits of the queue code in the interval [((block_num+1)*n)-1:block_num*n] are set to storage_num, and the rest of the bits are all 0; block_num represents the number of the storage block hit by the request, storage_num represents the number of the storage body in the storage block hit by the request, and n is the number of storage bodies in each storage block; When the index is not 0, that is, the request is the request sent later in the ID, the queue codes are all set to 0.
8. The out-of-order and interleaved data transmission device according to claim 6, characterized in that: The resource pool management module is further used to: Get the filling status of each storage bank in each storage block, which is 1 if filled, otherwise 0; All the filling states in each memory block are combined into an n-bit memory block code; The storage block codes are sequentially concatenated to form the resource pool code.
9. The out-of-order and interleaved data transmission device according to claim 6, characterized in that: The queue management module is further used for: After the data in the storage body corresponding to the resource release signal is output from the resource pool, the index information in the input queue buffer is updated.
10. The out-of-order and interleaved data transmission device according to claim 6, characterized in that: The computing module is further used for: The queue code and the resource pool code are bitwise ANDed and then bitwise ORed 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 cache.
Citation Information
Patent Citations
Memory system, access control method therefor, and computer program
CN101609438A
Data storage management method and device
CN103543954A
Sending packets using optimized PIO write sequences without SFENCES
CN106415515A
Memory file system and memory block processing method
CN114546248A
Method and system for reordering out-of-order response based on AXI protocol
CN116414767A