Non-blocking read-only cache and data processing method thereof

By adopting non-blocking data processing methods in read-only cache, the problem of inefficiency of blocked read-only cache is solved, and more efficient and simplified cache processing is achieved.

CN119961183APending Publication Date: 2025-05-09BEIJING FENGHUA CHUANGZHI TECHNOLOGY CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411835690.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-12-13
Publication Date
2025-05-09

AI Technical Summary

Technical Problem

The existing blocking read-only cache will pause the pipeline when it is missing, resulting in inefficiency and high complexity.

Method used

The data processing method of non-blocking read-only cache is adopted to determine whether to send the request to the downstream storage module by receiving requests, address search, and judging the cache line hit and queue full status, and to process the request queue when the data is returned.

Benefits of technology

Avoid blocking of the upstream module's ports, significantly improving the efficiency of read-only caches, and reducing complexity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119961183A_ABST
    Figure CN119961183A_ABST
Patent Text Reader

Abstract

The invention discloses a non-blocking read-only cache and a data processing method thereof, and the method comprises the steps: receiving a request, carrying out address search, and judging whether the request hits a cache line or not; when the request hits the cache line, further judging whether a request queue of the cache line is full or not; when the request queue is full, executing the following first group of steps: sending the request to a downstream storage module; and receiving a data signal returned by the downstream storage module, and sending the returned data signal to the request module. According to different conditions, the requests are classified and processed, including the requests placed in the request queue and the requests not placed in the request queue. On one hand, for requests which are not put into the request queue, data returned by the downstream storage module is also directly sent to the upstream request module; on the other hand, the requests in the request queue are divided into two types; therefore, the read-only cache efficiency is remarkably improved, and the complexity is greatly reduced.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention belongs to the technical field of data processing, and more specifically, relates to a non-blocking read-only cache and a data processing method thereof. Background Art

[0002] Since the speed of the main memory does not match the speed of the processor, cache is usually used in the circuit to make up for the speed difference between the two. In general design, the cache includes read and write functions. In some specific functional modules, such as the value module and the address conversion module, the data read from the main memory will not be modified, so these modules only need read-only cache. A blocking cache structure is generally used in the circuit. When the cache is missing, the cache requests data from the next level cache or main memory. If there is no cache line that can be allocated in the cache, the pipeline is paused. Until the data of the next level is returned and there is a cache line that can be replaced, the cache can continue to process the request of the upstream module. Therefore, the penalty for cache miss depends on the delay of the return data of the downstream cache or memory. Therefore, the efficiency of the blocking read-only cache is relatively low. Summary of the invention

[0003] In view of the above defects or improvement needs of the prior art, the present invention provides a non-blocking read-only cache and a data processing method thereof, which can avoid blocking the port of the upstream module, significantly improve the efficiency of the read-only cache, and greatly reduce the complexity of the read-only cache.

[0004] To achieve the above object, according to one aspect of the present invention, a data processing method for a non-blocking read-only cache is provided, comprising:

[0005] Receive the request, perform address search, and determine whether the request hits the cache line;

[0006] When the request hits the cache line, it is further determined whether the request queue of the cache line is full;

[0007] When the request queue is full, the following first set of steps are performed:

[0008] Send the request to the downstream storage module;

[0009] Receive the data signal returned by the downstream storage module, and send the returned data signal to the request module.

[0010] In some implementations, the data processing method of the non-blocking read-only cache further includes:

[0011] When the request misses a cache line, further determine whether there is an allocatable cache line;

[0012] When there are no cache lines available for allocation, a first set of steps is performed.

[0013] In some implementations, the data processing method of the non-blocking read-only cache further includes:

[0014] When the request misses a cache line, further determine whether there is an allocatable cache line;

[0015] When there is an allocatable cache line, the second set of steps is performed as follows:

[0016] Allocate a cache line and put the request into the queue;

[0017] Send the request to the downstream storage module;

[0018] Save the data signal of the request returned by the downstream storage module;

[0019] The returned data signal is sent to the upstream request module, and the requests in the queue that match the returned data signal are removed.

[0020] In some implementations, the data processing method of the non-blocking read-only cache further includes:

[0021] When the request queue is not full, the following third set of steps are executed:

[0022] Put the request into the queue;

[0023] Determine whether the request queue is waiting for the data signal to return;

[0024] When the request queue is waiting for the data signal to return, execute step 1 and step 2;

[0025] When the request queue is not waiting for the data signal to return, execute step 2;

[0026] Step 1 is as follows: after the downstream storage module returns the data signal, the returned data signal is saved, the returned data signal is sent to the upstream request module, and the request in the queue matching the returned data signal is removed;

[0027] Step 2 is as follows: According to the order of requests in the queue, the read-only cache returns the saved returned data to the upstream request module in sequence and deletes the corresponding requests in the queue.

[0028] In some embodiments, when a request hits a cache line, a hit flag of the request is set to a first value; when a request does not hit a cache line, a hit flag of the request is set to a second value different from the first value; placing the request in a queue in the second group of steps and the third group of steps both include placing an identity flag and a hit flag of the request in a request queue; and judging whether the request queue is waiting for a data signal to be returned based on the hit flag of the request in the request queue.

[0029] In some embodiments, when there is a hit mark of the second value in the request queue, it is determined that the request queue is waiting for the data signal to return; when there is no hit mark of the second value in the request queue, it is determined that the request queue is not waiting for the data signal to return.

[0030] In some implementations, in the second set of steps and the third set of steps, the data ID in the data signal returned by the downstream storage module is compared with the request ID in the queue to confirm whether there is a request in the queue that matches the returned data signal.

[0031] In some implementations, determining whether a request hits a cache line includes: querying a cache line of a read-only cache, if there is a cache line matching the request address, the request hits the cache line; if there is no cache line matching the request address, the request misses the cache line.

[0032] According to another aspect of the present invention, there is provided a non-blocking read-only cache, comprising a cache query module, a first cache unit, a queue query module and a first selection module;

[0033] The cache query module is used to receive the request from the request module, perform address search, and determine whether the request hits the cache line;

[0034] The first cache unit is a hit cache line or an allocated cache line, and is used to store the request queue;

[0035] The cache query module is also used to further determine whether the request queue of the first cache unit is full when the request hits the cache line, and send the request to the downstream storage module when the request queue is full;

[0036] The queue query module is used to receive a data signal returned by the downstream storage module, and when the received data signal cannot match the request in the request queue of the first cache unit, send the returned data signal to the request module through the first selection module.

[0037] In some embodiments, the cache query module is further configured to further determine whether there is an allocatable cache line when the request misses the cache line, and to send the request to the downstream storage module when there is no allocatable cache line.

[0038] In some embodiments, the non-blocking read-only cache further includes a second cache unit;

[0039] The cache query module is also used to further determine whether there is an allocatable cache line when the request misses the cache line, and to allocate the cache line when there is an allocatable cache line, obtain the first cache unit, put the identity identifier and the hit identifier of the request into the request queue of the first cache unit, and send the request to the downstream storage module;

[0040] The queue query module is also used to receive a data signal returned by the downstream storage module, and when the received data signal can match the request in the request queue of the first cache unit, send the returned data signal to the second cache unit through the first selection module;

[0041] The second cache unit is further used to store the data signal from the first selection module and send the data signal from the first selection module to the request module.

[0042] In some embodiments, the cache query module is further used to put the identity identifier and the hit identifier of the request into the request queue of the first cache unit when the request queue is not full;

[0043] The first cache unit is further used to determine whether the request queue is waiting for the data signal to be returned according to the hit identifier of the request in the request queue, and send a control signal to the second cache unit according to the order of the requests in the request queue when the request queue is not waiting for the data signal to be returned;

[0044] The second cache unit is further configured to send the data in the second cache unit to the request module according to a control signal from the first cache unit.

[0045] In some embodiments, the cache query module is also used to set the hit flag of the request to a first value when the request hits the cache line; when the request does not hit the cache line, set the hit flag of the request to a second value different from the first value; the cache query module is also used to place the identity and hit flag of the request into the request queue when placing the request into the request queue of the first cache unit.

[0046] In general, the above technical scheme conceived by the present invention has the following beneficial effects compared with the prior art: first, the requests are classified and processed according to different situations, including requests placed in the request queue and requests not placed in the request queue. Specifically, the requests not placed in the request queue include the following two situations: one is that when the request misses the cache line and there is no cache line that can be allocated in the cache, the request of the upstream request module is directly sent to the downstream storage module; the other is that when the request hits the cache line but the request queue of the cache line is full, the request of the upstream request module is also directly sent to the downstream storage module; therefore, there will be no situation of blocking the port of the upstream module. Secondly, on the one hand, for the request that is not placed in the request queue, the data returned by the downstream storage module is also directly sent to the upstream request module; on the other hand, the requests in the request queue are divided into two types, the first is the request placed in the queue when the request misses the cache line but there is a cache line that can be allocated in the cache, and the second is the request placed in the queue when the request hits the cache line and the request queue is not full, only the first request needs to be sent to the downstream storage module, and the second request can directly use the data returned by the first request. Therefore, the efficiency of the read-only cache is significantly improved and the complexity is greatly reduced. BRIEF DESCRIPTION OF THE DRAWINGS

[0047] Figure 1 is a flow chart of a data processing method for a non-blocking read-only cache according to an embodiment of the present invention;

[0048] Figure 2 Schematic diagram of the structure of a system including a non-blocking read-only cache according to an embodiment of the present invention. DETAILED DESCRIPTION

[0049] In order to make the purpose, technical scheme and advantages of the present invention clearer, the present invention is further described in detail below in conjunction with the accompanying drawings and examples. It should be understood that the specific embodiments described herein are only used to explain the present invention and are not intended to limit the present invention. As those skilled in the art can appreciate, the described embodiments can be modified in various ways without departing from the spirit or scope of the present application. Therefore, the drawings and descriptions are considered to be exemplary and non-restrictive in nature.

[0050] like Figure 1 As shown, the data processing method of the non-blocking read-only cache in the embodiment of the present invention includes:

[0051] Step S101: receiving a request, performing an address search, and determining whether the request hits a cache line.

[0052] In some implementations, the request has an identity (ID) and an address (ADDR).

[0053] In some implementations, a cache line of the read-only cache is queried, and if there is a cache line matching the request address, the request hits the cache line; if there is no cache line matching the request address, the request misses the cache line.

[0054] In some implementations, when a request hits a cache line, a hit flag of the request is set to a first value; when a request misses a cache line, the hit flag of the request is set to a second value different from the first value.

[0055] When the request hits the cache line, step S103 is executed: further determining whether the request queue is full.

[0056] When the request queue is full, step S105 is executed: sending the request to the downstream storage module.

[0057] In some implementations, a request that hits a cache line but the request queue of the cache line is full is a request that is not placed in the request queue.

[0058] In some implementations, if the request queue is full, it means that there is no extra space to store the request, so the request cannot be put into the request queue, and the read-only cache directly forwards the ID and address of the request to the downstream storage module.

[0059] Step S107: receiving a data signal returned by the downstream storage module, and sending the returned data signal to the request module.

[0060] In some implementations, after receiving the request sent by the read-only cache, the downstream storage module returns a data signal to the read-only cache. In some implementations, the data signal includes data and a data ID.

[0061] In some embodiments, the data signal returned by the downstream storage module has the same identity (ID) as the corresponding request, and the returned data ID is compared with the request ID in the queue to confirm whether there is a request matching the returned data signal.

[0062] In some implementations, because the request queue was full before and the request was not put into the request queue, the returned data signal cannot match the request in the queue, so the returned data signal is directly sent to the request module.

[0063] When the request queue is not full, step S109 is executed: the request ID and the hit identifier are put into the request queue.

[0064] In some implementations, a request that hits a cache line and the request queue of the cache line is not full is the second type of request placed in the request queue.

[0065] In some embodiments, when a request hits a cache line and the request queue is not full, the request is not the first request in the request queue of the first cache unit. Since the previous requests in the queue have been sent to the downstream storage module, there is no need to send the second type of request to the downstream storage module.

[0066] Step S111: Determine whether the request queue is waiting for a data signal to return.

[0067] Specifically, a cache line hit does not mean that the data is already in the cache, because other requests may have previously applied for the cache line when the cache line was missing, and need to wait for the data signal to return. Therefore, even if the address tag is valid, the cached data cannot be guaranteed to be valid for subsequent requests that hit the cache line. Therefore, when the data signal is not returned, even if the current request hits the cache line, it still needs to wait.

[0068] In some implementations, it is determined whether the request queue is waiting for the data signal to be returned based on the hit identifier of the request in the request queue. Specifically, when there is a hit identifier of the second value in the request queue, it is determined that the request queue is waiting for the data signal to be returned; when there is no hit identifier of the second value in the request queue, it is determined that the request queue is not waiting for the data signal to be returned.

[0069] When the request queue is waiting for the data signal to return, step S113 is executed: after the downstream storage module returns the data signal, the read-only cache saves the returned data signal, sends the returned data signal to the upstream request module, and removes the request in the queue that matches the returned data signal.

[0070] In some implementations, the returned data ID is compared with the request ID in the queue, and when it is confirmed that there is a request matching the returned data, the read-only cache determines that the returned data signal should be saved, and saves the returned data signal.

[0071] In some implementations, the request queue uses a first-in-first-out rule, so requests with cache line misses are eliminated here. After the read-only cache receives the request, the request does not hit the cache line, and the read-only cache reallocates the cache line for it. This request is usually the first request in the queue.

[0072] Step S115: According to the order of the requests in the queue, the read-only cache returns the saved returned data to the upstream request module in sequence, and deletes the corresponding requests in the queue.

[0073] When the request queue is not waiting for the data signal to be returned, it means that valid data has been returned in the read-only cache, so step S115 is directly executed, that is, the read-only cache returns the saved returned data to the upstream request module in sequence according to the order of the requests in the queue, and deletes the corresponding requests.

[0074] When the request misses a cache line, step S117 is executed: further determining whether there is an allocatable cache line.

[0075] When there is an allocatable cache line, step S119 is executed: allocating the cache line, putting the request ID and the hit flag into a queue, and sending the request to the downstream storage module, waiting for the data signal to be returned.

[0076] In some implementations, a request that misses a cache line but has a cache line that can be allocated in the cache is the first request put into the request queue.

[0077] In some implementations, the request with the cache line miss is usually the first request in the request queue and is also the request ranked first in the queue. At this time, the ID and address of the request need to be sent to the downstream storage module.

[0078] Step S121: the read-only cache stores the data signal of the request returned by the downstream storage module, sends the returned data signal to the upstream request module, and removes the request in the queue that matches the returned data signal.

[0079] In some implementations, when the downstream storage module returns a data signal, the returned data ID can match the ID of the request for the cache line miss, so the read-only cache determines that the returned data signal should be saved and saves the returned data signal.

[0080] In some embodiments, after the data signal corresponding to the request for cache line miss is saved, for the next request in the request queue to read data at the same address and other requests (i.e., the second request placed in the request queue), the saved data can be directly taken out and sent back to the upstream request module, so there is no need to send the second request placed in the request queue to the downstream storage module.

[0081] When there is no allocatable cache line, step S105 and step S107 are executed.

[0082] In some implementations, a request that misses a cache line and for which there is no allocatable cache line is a request that is not placed in the request queue.

[0083] In some implementations, since there is no allocatable cache line, no request queue is formed, and the returned data signal has no matching request, the returned data signal is directly sent to the request module.

[0084] In some embodiments, the data signal of the request not put into the request queue is preferably sent to the upstream request module. In some embodiments, the data signal of the request put into the request queue is preferably sent to the upstream request module. In some embodiments, arbitration is performed according to actual needs, and one of the two types of request data signals is selected to be sent to the upstream request module.

[0085] like Figure 2 As shown, the non-blocking read-only cache of the embodiment of the present invention includes a cache query module, a first cache unit, a queue query module, a second cache unit, a first selection module and a second selection module.

[0086] The cache query module is used to receive the request from the request module, perform address search, and determine whether the request hits the cache line. In some embodiments, the request has an identity (ID) and an address (ADDR). The cache query module queries the cache line of the read-only cache. If there is a cache line that matches the request address, the request hits the cache line; if there is no cache line that matches the request address, the request does not hit the cache line.

[0087] The cache query module is also used to set the hit flag of the request to a first value when the request hits the cache line; and to set the hit flag of the request to a second value different from the first value when the request does not hit the cache line.

[0088] The first cache unit is a hit cache line or an allocated cache line, and is used to store the request queue.

[0089] The cache query module is also used to further determine whether the request queue in the first cache module is full when the request hits the cache line. If so, the request ID and address are directly sent to the downstream storage module; otherwise, the request ID and hit identifier are placed in the request queue of the first cache unit.

[0090] The cache query module is also used to further determine whether there is an allocatable cache line when the request misses the cache line. If so, the cache line is allocated to obtain the first cache unit, the request ID and the hit identifier are placed in the request queue in the first cache unit, and the request ID and address are sent to the downstream storage module; otherwise, the request ID and address are directly sent to the downstream storage module.

[0091] Specifically, when the request hits the cache line and the request queue is not full, the request is not the first request in the request queue of the first cache unit, and the request does not need to be sent to the downstream storage module. When the request does not hit the cache line but there is an allocatable cache line, the request is usually the first request in the request queue of the first cache unit, and the request needs to be sent to the downstream storage module.

[0092] The first cache unit is also used to send the request ID and hit identifier in the queue to the queue query module in a first-in-first-out order. The first cache unit is also used to send a control signal (ctl) to the second cache unit according to the order of the requests in the request queue.

[0093] The queue query module is used to obtain the data ID in the data signal returned by the downstream storage module. If the data ID obtained by the query can match the request ID in the request queue, the first selection module is controlled to send the data signal returned by the downstream storage module to the second cache unit; otherwise, the first selection module is controlled to send the data signal returned by the downstream storage module to the second selection module.

[0094] In some implementations, the queue query module sets the control terminal of the first selection module through the hit identifier of the matching request in the request queue, and controls the first selection module to send the data signal returned by the downstream storage module to the second cache unit.

[0095] The second cache unit is used to send the data signal from the first selection module to the second selection module and store the data signal from the first selection module. The second cache unit is also used to obtain the data ID corresponding to the current request in the queue according to the control signal from the first cache unit when the request queue is not waiting for the data signal to return, and send the data in the stored data signal and the obtained data ID to the second selection module.

[0096] In some embodiments, the first cache unit determines whether the request queue is waiting for the data signal to return based on the hit identifier of the request in the request queue. Specifically, when there is a hit identifier of the second value in the queue, it is determined that the request queue is waiting for the data signal to return; when there is no hit identifier of the second value in the queue, it is determined that the request queue is not waiting for the data signal to return.

[0097] The second selection module is used to select one of the data signal from the first selection module and the data signal from the second cache unit, and send it to the upstream request module.

[0098] In some embodiments, the second selection module preferentially selects to send the data signal from the first selection module to the upstream request module. In some embodiments, the second selection module preferentially selects to send the data signal from the second cache unit to the upstream request module. In some embodiments, the second selection module arbitrates according to actual needs and selects one of the two data signals to send to the upstream request module.

[0099] In some implementations, after the upstream request module receives the data signal, the first cache unit deletes the corresponding request in the request queue when the request corresponding to the data signal exists in the request queue.

[0100] As long as the downstream storage module can receive the request, the present invention can ensure that the request will not be blocked at the port, and the request can be forwarded to the downstream storage module in only one cycle, and the data corresponding to the forwarded request can be accurately returned to the request end. The present invention significantly improves the efficiency of the read-only cache, and is particularly suitable for situations that are sensitive to throughput, such as address translation modules, instruction prefetch modules, etc.

[0101] In the description of this specification, the description with reference to the terms "one embodiment", "some embodiments", "example", "specific example", or "some examples" means that the specific features, structures, materials or characteristics described in conjunction with the embodiment or example are included in at least one embodiment or example of the present application. Moreover, the specific features, structures, materials or characteristics described may be combined in any one or more embodiments or examples in a suitable manner. In addition, those skilled in the art may combine and combine different embodiments or examples described in this specification and the features of different embodiments or examples, unless they are contradictory.

[0102] In addition, the terms "first" and "second" are used for descriptive purposes only and should not be understood as indicating or implying relative importance or implicitly indicating the number of technical features indicated. Therefore, a feature defined as "first" or "second" may explicitly or implicitly include at least one of the features. In the description of this application, the meaning of "plurality" is two or more, unless otherwise clearly and specifically defined.

[0103] Any process or method description in the flow chart or otherwise described herein can be understood to represent a module, fragment or portion of a code including one or more (two or more) executable instructions for implementing the steps of a specific logical function or process. And the scope of the preferred embodiment of the present application includes other implementations, in which the functions may not be performed in the order shown or discussed, including in a substantially simultaneous manner or in a reverse order according to the functions involved.

[0104] The logic and / or steps represented in the flowchart or otherwise described herein, for example, can be considered as an ordered list of executable instructions for implementing logical functions, which can be embodied in any computer-readable medium for use by an instruction execution system, apparatus or device (such as a computer-based system, a system including a processor or other system that can fetch instructions from an instruction execution system, apparatus or device and execute instructions), or used in combination with these instruction execution systems, apparatuses or devices.

[0105] It should be understood that the various parts of the present application can be implemented with hardware, software, firmware or a combination thereof. In the above embodiments, multiple steps or methods can be implemented with software or firmware stored in a memory and executed by a suitable instruction execution system. All or part of the steps of the above embodiment method can be completed by instructing the relevant hardware through a program, which can be stored in a computer-readable storage medium, and when the program is executed, it includes one of the steps of the method embodiment or a combination thereof.

[0106] In addition, each functional unit in each embodiment of the present application can be integrated into a processing module, or each unit can exist physically separately, or two or more units can be integrated into one module. The above-mentioned integrated module can be implemented in the form of hardware or in the form of a software functional module. If the above-mentioned integrated module is implemented in the form of a software functional module and sold or used as an independent product, it can also be stored in a computer-readable storage medium. The storage medium can be a read-only memory, a disk or an optical disk, etc.

[0107] The above is only a specific implementation of the present application, but the protection scope of the present application is not limited thereto. Any technician familiar with the technical field can easily think of various changes or substitutions within the technical scope disclosed in the present application, which should be included in the protection scope of the present application. Therefore, the protection scope of the present application should be based on the protection scope of the claims.

Claims

1. A data processing method for non-blocking read-only cache, characterized in that: include: Receive the request, perform address search, and determine whether the request hits the cache line; When the request hits the cache line, it is further determined whether the request queue of the cache line is full; When the request queue is full, the following first set of steps are performed: Send the request to the downstream storage module; Receive the data signal returned by the downstream storage module, and send the returned data signal to the request module.

2. The data processing method of non-blocking read-only cache according to claim 1, characterized in that: Also includes: When the request misses a cache line, further determine whether there is an allocatable cache line; When there is no allocatable cache line, the first set of steps is performed.

3. The data processing method of non-blocking read-only cache according to claim 1, characterized in that: Also includes: When the request misses a cache line, further determine whether there is an allocatable cache line; When there is an allocatable cache line, the second set of steps is performed as follows: Allocate a cache line and put the request into the queue; Send the request to the downstream storage module; Save the data signal of the request returned by the downstream storage module; The returned data signal is sent to the upstream request module, and the requests in the queue that match the returned data signal are removed.

4. The data processing method of non-blocking read-only cache according to claim 3, characterized in that: Also includes: When the request queue is not full, the following third set of steps are executed: Put the request into the queue; Determine whether the request queue is waiting for the data signal to return; When the request queue is waiting for the data signal to return, execute step 1 and step 2; When the request queue is not waiting for the data signal to return, execute step 2; The step 1 is as follows: after the downstream storage module returns the data signal, the returned data signal is saved, the returned data signal is sent to the upstream request module, and the request in the queue matching the returned data signal is removed; The step 2 is as follows: according to the order of the requests in the queue, the read-only cache returns the saved returned data to the upstream request module in sequence, and deletes the corresponding requests in the queue.

5. The data processing method of non-blocking read-only cache according to claim 4, characterized in that: When the request hits the cache line, the hit flag of the request is set to a first value; when the request does not hit the cache line, the hit flag of the request is set to a second value different from the first value; placing the request in the queue in the second group of steps and the third group of steps both includes placing the identity flag and the hit flag of the request in the request queue; based on the hit flag of the request in the request queue, determining whether the request queue is waiting for the data signal to be returned.

6. The data processing method of non-blocking read-only cache according to claim 5, characterized in that: When there is a hit mark of the second value in the request queue, it is determined that the request queue is waiting for the data signal to return; when there is no hit mark of the second value in the request queue, it is determined that the request queue is not waiting for the data signal to return.

7. The data processing method of non-blocking read-only cache according to claim 4, characterized in that: In the second group of steps and the third group of steps, the data ID in the data signal returned by the downstream storage module is compared with the request ID in the queue to confirm whether there is a request in the queue that matches the returned data signal.

8. The data processing method of a non-blocking read-only cache according to any one of claims 1 to 7, characterized in that: The determining whether the request hits the cache line includes: querying the cache line of the read-only cache, if there is a cache line matching the request address, the request hits the cache line; if there is no cache line matching the request address, the request misses the cache line.

9. A non-blocking read-only cache, characterized in that: It includes a cache query module, a first cache unit, a queue query module and a first selection module; The cache query module is used to receive a request from the request module, perform an address search, and determine whether the request hits a cache line; The first cache unit is a hit cache line or an allocated cache line, and is used to store a request queue; The cache query module is also used to further determine whether the request queue of the first cache unit is full when the request hits the cache line, and send the request to the downstream storage module when the request queue is full; The queue query module is used to receive a data signal returned by a downstream storage module, and when the received data signal cannot match a request in the request queue of the first cache unit, send the returned data signal to the request module through the first selection module.

10. The non-blocking read-only cache according to claim 9, characterized in that: The cache query module is also used to further determine whether there is an allocatable cache line when the request misses the cache line, and send the request to the downstream storage module when there is no allocatable cache line.

11. The non-blocking read-only cache according to claim 9 or 10, characterized in that: Also includes a second cache unit; The cache query module is also used to further determine whether there is an allocatable cache line when the request misses the cache line, and to allocate the cache line when there is an allocatable cache line, obtain the first cache unit, put the identity identifier and the hit identifier of the request into the request queue of the first cache unit, and send the request to the downstream storage module; The queue query module is also used to receive a data signal returned by the downstream storage module, and when the received data signal can match the request in the request queue of the first cache unit, send the returned data signal to the second cache unit through the first selection module; The second cache unit is further used to store the data signal from the first selection module and send the data signal from the first selection module to the request module.

12. The non-blocking read-only cache according to claim 11, characterized in that: The cache query module is also used to put the identity identifier and the hit identifier of the request into the request queue of the first cache unit when the request queue is not full; The first cache unit is further used to determine whether the request queue is waiting for the data signal to be returned according to the hit identifier of the request in the request queue, and send a control signal to the second cache unit according to the order of the requests in the request queue when the request queue is not waiting for the data signal to be returned; The second cache unit is further configured to send the data in the second cache unit to the request module according to a control signal from the first cache unit.

13. The non-blocking read-only cache according to claim 12, characterized in that: The cache query module is also used to set the hit flag of the request to a first value when the request hits the cache line; when the request does not hit the cache line, set the hit flag of the request to a second value different from the first value; the cache query module is also used to put the identity and hit flag of the request into the request queue when placing the request into the request queue of the first cache unit.