Memory scheduling device

By designing the memory adjustment device, using address mapping, priority determination, finding table, hitting determination, storage unit, and scheduling module, etc., solve the problems of frequent Active and Precharge in DDR memory, improve the system performance and bandwidth utilization Rate.

CN119376929APending Publication Date: 2025-01-28SHENZHEN JAGUAR MICROSYSTEMS CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411407225.9
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-10-10
Publication Date
2025-01-28

AI Technical Summary

Technical Problem

In DDR memory scheduling, when read and write requests are in different rows in the same bank, active and precharge operations are frequently performed, resulting in a long response time and reduced bandwidth utilization.

Method used

A memory scheduling device is designed, including the address mapping unit, the priority determination unit, the search table, the hits the unit, the storage unit, and the dispatch module. Through these components, a reasonable scheduling of read and writing requests, priority to perform the requests hit, and reduce the frequency of Active and Precharge operations.

Benefits of technology

Effectively improve the overall performance of the system, reduce the response delay of read and write requests, improve the bandwidth utilization rate of DDR, and avoid the problem of decreased bandwidth utilization.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119376929A_ABST
    Figure CN119376929A_ABST
Patent Text Reader

Abstract

The invention discloses a memory scheduling device which comprises an address mapping unit used for receiving and analyzing a current request to obtain a request address and mapping the request address into a physical address of DDR particles. The priority determination unit is used for determining the priority information of the current request according to the QoS of the current request. And the hit determination unit is used for querying the lookup table according to the physical address, determining whether the request hits the activation address of the corresponding bank in the external DDR or not, and outputting hit identification information. The scheduling module is used for determining a current scheduling request according to the hit identification information, the priority information, the current request and related information of the unscheduled requests stored in the storage unit, and scheduling the current scheduling request, and the related information at least comprises physical address information and priority information corresponding to the unscheduled requests. Reasonable scheduling of the read-write request is realized, the memory scheduling mode is optimized, and the performance of the memory scheduling device is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the technical field of memory scheduling, and in particular to a memory scheduling device. Background Art

[0002] As the demand for big data and AI continues to escalate, products with higher throughput and lower latency are increasingly favored by data centers.

[0003] System on Chip (SoC) is the mainstream of chip design today. Figure 1 As shown in the figure, it mainly includes the central processing unit (CPU), graphics processing unit (GPU), interconnection bus (Interconnection bus), high-speed serial bus (peripheral component interconnect express, PCIE), and storage submodule (Double Data Rate, DDR). Different subsystems have different requirements for DDR access. For example, GPU requires high bandwidth for DDR access, and CPU requires low latency for DDR access. The DDR subsystem is mainly composed of DDR Controller, DDR PHY, and DRAM. The DDR Controller mainly receives read and write requests from the interconnection bus, schedules and processes the read and write requests, and then sends them to the DDR PHY. Scheduling is the most important factor affecting DDR performance. Therefore, a well-designed scheduler is very necessary for the storage subsystem.

[0004] In the related art, for the scheduling of read and write requests, read and write requests of different priorities are generally executed out of order according to their different priorities to ensure that high-priority read and write requests are scheduled first; however, although this method ensures that high-priority requests are scheduled first, if the read and write requests are in different rows in the same bank, precharge and active operations may be continuously performed, and the response to the read and write requests takes a long time, resulting in a decrease in the bandwidth utilization of DDR (Double Data Rate, double-rate synchronous dynamic random access memory). Summary of the invention

[0005] The present application provides a memory scheduling device to avoid the problem of long response time for read and write requests and reduced bandwidth utilization of DDR due to continuous active and precharge operations when read and write requests are in different rows in the same bank, thereby achieving reasonable scheduling of read and write requests and greatly improving the overall performance of the system.

[0006] According to one aspect of the present application, a memory scheduling device is provided, comprising:

[0007] An address mapping unit, used for receiving and parsing a current request to obtain a request address, and mapping the request address to a physical address of a DDR particle;

[0008] A priority determination unit, configured to determine the priority information of the current request according to the QoS of the current request;

[0009] A lookup table, used to store the activation address of the corresponding bank in the external DDR;

[0010] A hit determination unit, configured to query a lookup table according to the physical address, determine whether the request hits an activation address of a corresponding bank in an external DDR, and output hit identification information;

[0011] A storage unit, used to store relevant information of unscheduled requests, wherein the relevant information at least includes physical address information and priority information corresponding to the unscheduled requests;

[0012] The scheduling module is used to determine the current scheduling request according to the hit identification information, the priority information, the current request and the related information of the unscheduled request stored in the storage unit, and schedule the current scheduling request.

[0013] According to another aspect of the present application, a memory scheduling method is provided, the method comprising:

[0014] The address mapping unit receives and analyzes the current request to obtain a request address, and maps the request address to a physical address of a DDR particle;

[0015] The priority determination unit determines the priority information of the current request according to the QoS of the current request;

[0016] The lookup table stores the activation address of the corresponding bank in the external DDR;

[0017] The hit determination unit queries a lookup table according to the physical address to determine whether the request hits the activation address of the corresponding bank in the external DDR, and outputs hit identification information;

[0018] The storage unit stores relevant information of the unscheduled request, wherein the relevant information at least includes physical address information and priority information corresponding to the unscheduled request;

[0019] The scheduling module determines a current scheduling request according to the hit identification information, the priority information, the current request and the related information of the unscheduled request stored in the storage unit, and schedules the current scheduling request.

[0020] According to the technical solution of the embodiment of the present application, the address mapping unit is used to receive and parse the current request to obtain the request address, and map the request address to the physical address of the DDR particle; the priority determination unit is used to determine the priority information of the current request according to the QoS of the current request; the lookup table is used to store the activation address of the corresponding bank in the external DDR; the hit determination unit is used to query the lookup table according to the physical address, determine whether the request hits the activation address of the corresponding bank in the external DDR, and output the hit identification information; thereby, the hit request can be executed preferentially, avoiding the problem of reduced bandwidth utilization of the DDR due to continuous active, precharge and other operations, and the scheduling of the request can be implemented more finely, realizing the maximum utilization of the address status (hit or miss); the storage unit is used to store relevant information of the unscheduled request, and the relevant information at least includes the physical address information and priority information corresponding to the unscheduled request; the introduction of the storage unit can realize a more fine division of the order of request scheduling. The scheduling module is used to determine the current scheduling request based on the hit identification information, priority information, current request and related information of unscheduled requests stored in the storage unit, and schedule the current scheduling request; the scheduling module realizes the reasonable management of read requests and write requests, reduces the response delay of read and write requests, avoids the frequent switching of read requests and write requests, improves the bandwidth utilization, and greatly improves the overall performance of the system.

[0021] It should be understood that the content described in this section is not intended to identify the key or important features of the embodiments of the present application, nor is it intended to limit the scope of the present application. Other features of the present application will become easily understood through the following description. BRIEF DESCRIPTION OF THE DRAWINGS

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

[0023] Figure 1 It is a schematic diagram of the structure of the system on chip;

[0024] Figure 2 is a structural diagram of a memory scheduling device provided according to an embodiment of the present application;

[0025] Figure 3 is an example diagram of priority settings applicable to embodiments of the present application;

[0026] Figure 4 It is a signaling diagram of a memory scheduling device provided according to an embodiment of the present application;

[0027] Figure 5 It is a flowchart of a memory scheduling method provided according to an embodiment of the present application. DETAILED DESCRIPTION

[0028] In order to enable those skilled in the art to better understand the solution of the present application, 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 only 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 should fall within the scope of protection of the present application.

[0029] It should be noted that the terms "first", "second", etc. in the specification and claims of the present application and the above-mentioned drawings are used to distinguish similar objects, and are not necessarily used to describe a specific order or sequence. It should be understood that the data used in this way can be interchangeable where appropriate, so that the embodiments of the present application described herein can be implemented in an order other than those illustrated or described herein. In addition, the terms "including" and "having" and any of their variations are intended to cover non-exclusive inclusions, for example, a process, method, system, product or device comprising a series of steps or units is not necessarily limited to those steps or units clearly listed, but may include other steps or units that are not clearly listed or inherent to these processes, methods, products or devices.

[0030] It should be noted that the modifications of "one" and "plurality" mentioned in the present application are illustrative rather than restrictive, and those skilled in the art should understand that unless otherwise clearly indicated in the context, it should be understood as "one or more".

[0031] The names of the messages or information exchanged between multiple devices in the embodiments of the present application are only used for illustrative purposes and are not used to limit the scope of these messages or information.

[0032] It is understandable that before using the technical solutions disclosed in the embodiments of this application, the type, scope of use, usage scenarios, etc. of the personal information involved in this application should be informed to the user and the user's authorization should be obtained in an appropriate manner in accordance with relevant laws and regulations.

[0033] For example, in response to receiving an active request from a user, a prompt message is sent to the user to clearly prompt the user that the operation requested to be performed will require obtaining and using the user's personal information. Thus, the user can autonomously choose whether to provide personal information to software or hardware such as an electronic device, application, server, or storage medium that performs the operation of the technical solution of the present application according to the prompt message.

[0034] As an optional but non-limiting implementation, in response to receiving an active request from the user, the prompt information may be sent to the user in the form of a pop-up window, in which the prompt information may be presented in text form. In addition, the pop-up window may also carry a selection control for the user to choose "agree" or "disagree" to provide personal information to the electronic device.

[0035] It is understandable that the above notification and the process of obtaining user authorization are merely illustrative and do not constitute a limitation on the implementation method of the present application. Other methods that meet the relevant laws and regulations may also be applied to the implementation method of the present application.

[0036] It is understandable that the data involved in this technical solution (including but not limited to the data itself, the acquisition or use of the data) shall comply with the requirements of relevant laws, regulations and relevant provisions.

[0037] Embodiment 1

[0038] Figure 2 A schematic diagram of the structure of a memory scheduling device provided in an embodiment of the present application. This embodiment is applicable to the situation where read and write requests are flexibly scheduled for memory, and the memory scheduling device can be implemented in the form of hardware and / or software.

[0039] like Figure 2As shown, the memory scheduling device 10 of the present application includes: an address mapping unit 110, a priority determination unit 120, a lookup table 130, a hit determination unit 140, a storage unit 150 and a scheduling module 160. Specifically, the address mapping unit 110 is used to receive and parse the current request to obtain the request address, and map the request address to the physical address of the DDR particle. The priority determination unit 120 is used to determine the priority information of the current request according to the QoS of the current request. The lookup table 130 is used to store the activation address of the corresponding bank in the external DDR. The hit determination unit 140 is used to query the lookup table according to the physical address, determine whether the request hits the activation address of the corresponding bank in the external DDR, and output the hit identification information. The storage unit 150 is used to store the relevant information of the unscheduled request, and the relevant information at least includes the physical address information and priority information corresponding to the unscheduled request. The scheduling module 160 is used to determine the current scheduling request according to the hit identification information, the priority information, the current request and the relevant information of the unscheduled request stored in the storage unit, and schedule the current scheduling request.

[0040] In the embodiment of the present application, the priority information can be understood as the priority level at which each request is executed first when multiple requests are waiting to be executed. The priority information reflects factors such as the relative importance, urgency and demand for system resources of different requests. Requests with higher priorities will be processed first to ensure the smooth progress of key services, meet urgent needs or provide a better user experience. As an optional but non-limiting method in the embodiment of the present application, the quality of service (QoS) characteristics in the interface bus can be fully utilized to map the interface QoS to different internal priority information, specifically: different thresholds can be set through registers, and QoS can be divided into different priority levels according to different set thresholds. A first set threshold and a second set threshold are set to divide QoS into three areas, each area represents a priority level, and a value less than or equal to the first set threshold is set as the first priority, a value between the first set threshold and the second set threshold is set as the second priority, and a value greater than or equal to the second set threshold is set as the third priority, and the third priority is better than the second priority and better than the first priority. For example, Figure 3 As shown, the first set threshold is QoS2, the second set threshold is QoS11, less than or equal to QoS2 is the first priority, between QoS2 and QoS11 is the second priority, and greater than or equal to QoS11 is the third priority.

[0041] It should be noted that the hit identification information can be used to describe the address status of the physical address, and the address status includes page hit and page miss.

[0042] A page hit is used to describe the state where the physical address matches the activation address of the corresponding bank in the external DDR in the lookup table. That is, when the current request accesses an open row in its lookup table, it means that the memory row where the required data is located is already in the activated state and the data in the row can be directly accessed.

[0043] Page loss is used to describe the state where the physical address does not match the activation address of the corresponding bank in the external DDR in the lookup table. That is, when the row currently requested to be accessed is in an inactive state, a Precharge command needs to be issued to close the current active row, and then an Activate command needs to be issued to open the required row before the data in the column can be accessed. Therefore, when the address state corresponding to the physical address currently requested is page loss, a certain degree of delay will occur because two additional Precharge commands and Activate commands need to be executed.

[0044] The unscheduled requests include read requests and write requests. The related information can be understood as various information elements associated with the unscheduled requests, and the information elements can describe specific attributes of the requests, so that the requests can be better understood and processed according to the request association information.

[0045] In this embodiment, the storage unit 150 includes a read CAM unit and a write CAM unit. Figure 4 As shown, the read CAM unit is the Read CAM, and the write CAM unit is the Write CAM. The read CAM unit is used to store the relevant information of the unscheduled read request. The write CAM unit is used to store the relevant information of the unscheduled write request.

[0046] Figure 4 is a signaling diagram of a memory scheduling device provided according to an embodiment of the present application. Figure 4 As shown, in this embodiment, the data buffer unit is used to store the write data of the write request when the write request enters the DDR. When a subsequent write request is scheduled out, the corresponding write request data will be taken out from the data buffer according to the relevant information in the entry in the storage unit.

[0047] The scheduling process of the request in the present application is as follows: after obtaining the current request, the address mapping unit receives and parses the current request to obtain the request address, and maps the request address to the physical address of the DDR particle. The address mapping unit sends the physical address to the hit determination unit, and the hit determination unit queries the lookup table according to the physical address: if the physical address exists in the lookup table, it is determined that the current request hits the activation address of the corresponding bank in the external DDR, and the hit identification information is output as a page hit; if the physical address does not exist in the lookup table, it is determined that the current request does not hit the activation address of the corresponding bank in the external DDR, and the hit identification information is output as a page loss. At the same time, the priority determination unit determines the priority information of the current request according to the QoS of the current request. Further, the scheduling module receives the priority information of the current request sent from the priority determination unit, receives the hit identification information of the current request sent from the hit determination unit, and determines the current scheduling request according to the priority information of the current request, the hit identification information of the current request, and the relevant information of the unscheduled request stored in the storage unit.

[0048] In this embodiment, optionally, the scheduling module determines the current scheduling request based on the priority information of the current request, the hit identification information of the current request, and the relevant information of the unscheduled requests stored in the storage unit, including: if the hit identification information of the current request is a page hit, then determine a reference request, the reference request is the current request and the request in the storage unit with the same physical address as the hit identification information of the current request. The request with the highest priority level corresponding to the priority information in the reference request is used as the current scheduling request. If the hit identification information of the current request is a page loss, the current request and all uncalled requests in the storage unit are used as candidate requests, and the request with the highest priority level corresponding to the priority information in the candidate requests is used as the current scheduling request.

[0049] Specifically, the priority determination unit is specifically used to determine the priority information of the request according to the request type entering the DDR and the QoS value of the request corresponding to the request type.

[0050] When the current request is a read request, if the QoS value of the current read request is less than the first set threshold, the priority information of the current read request is the first priority, and the current read request is determined as a variable priority read request (Variable priority read, VPR); if the QoS value of the current read request is greater than the second set threshold, the priority information of the current read request is the third priority, and the current read request is determined as a high priority read request (High priority read, HPR); if the QoS value of the current read request is greater than the first set threshold and less than the second set threshold, the priority information of the current read request is the second priority, and the current read request is determined as a low priority read request (Lower priority read, LPR).

[0051] If the current request is a write request and the QoS value of the current write request is less than the first set threshold, the priority information of the current write request is the first priority, and the current write request is determined as a variable priority write request (Variable priority write, VPW); if the QoS value of the current write request is greater than the second set threshold, the priority information of the current write request is the third priority, and the current write request is determined as a high priority write request (High priority write, HPW); if the QoS value of the current read request is greater than the first set threshold and less than the second set threshold, the priority information of the current write request is the second priority, and the current write request is determined as a low priority write request (Lower priority write, LPW).

[0052] The technical solution of this embodiment determines the priority information of the request according to the request type entering the DDR and the QoS value of the request corresponding to the request type, thereby achieving accurate determination of the priority information and avoiding problems such as request scheduling delays due to misalignment of the priority information.

[0053] According to the technical solution of the embodiment of the present application, the address mapping unit is used to receive and parse the current request to obtain the request address, and map the request address to the physical address of the DDR particle; the priority determination unit is used to determine the priority information of the current request according to the QoS of the current request; the lookup table is used to store the activation address of the corresponding bank in the external DDR; the hit determination unit is used to query the lookup table according to the physical address, determine whether the request hits the activation address of the corresponding bank in the external DDR, and output the hit identification information; thereby, the hit request can be executed preferentially, avoiding the problem of reduced bandwidth utilization of the DDR due to continuous active, precharge and other operations, and the scheduling of the request can be implemented more finely, realizing the maximum utilization of the address status (hit or miss); the storage unit is used to store relevant information of the unscheduled request, and the relevant information at least includes the physical address information and priority information corresponding to the unscheduled request; the introduction of the storage unit can realize a more fine division of the order of request scheduling. The scheduling module is used to determine the current scheduling request based on the hit identification information, priority information, current request and related information of unscheduled requests stored in the storage unit, and schedule the current scheduling request; the scheduling module realizes the reasonable management of read requests and write requests, reduces the delay of read and write requests, avoids the frequent switching of read requests and write requests, improves the bandwidth utilization, and greatly improves the overall performance of the system.

[0054] Embodiment 2

[0055] This embodiment is based on the above embodiment and further describes in detail that the storage unit in the above embodiment is used to store the related information of the unscheduled request. This embodiment can be combined with one or more of the above optional solutions.

[0056] The memory scheduling device of the present application also includes a first counter and a second counter, and the storage unit includes a read CAM unit and a write CAM unit, wherein the read CAM unit is used to store relevant information of unscheduled read requests; the write CAM unit is used to store relevant information of unscheduled write requests.

[0057] The first counter is used to increase the count value by a first fixed value each time a read request in the read CAM unit is scheduled, so as to obtain the current first count value; the second counter is used to increase the count value by a second fixed value each time a write request in the write CAM unit is scheduled, so as to obtain the current second count value. That is, the count values ​​displayed on the first counter and the second counter are increased when the DDR starts to schedule the request. For example, each time a read request in the read CAM unit is scheduled, the count value of the first counter can be increased by a value of one. Similarly, each time a write request in the write CAM unit is scheduled, the count value of the second counter can be increased by a value of one.

[0058] In the memory scheduling device of the present application, each entry of the read CAM unit stores relevant information of an unscheduled read request, and the relevant information of the read request at least includes a first counting threshold corresponding to the unscheduled read request. Each entry of the write CAM unit stores relevant information of an unscheduled write request, and the relevant information of the write request at least includes a second counting threshold corresponding to the unscheduled write request.

[0059] Among them, the first counting threshold corresponding to the unscheduled read request is used to reflect the storage time of the unscheduled read request in the read CAM unit, that is, when the count value displayed in the first counter reaches the first counting threshold corresponding to the unscheduled read request, the unscheduled read request needs to execute the scheduling task.

[0060] Correspondingly, the second counting threshold corresponding to the unscheduled write request is used to reflect the storage time of the unscheduled write request in the write CAM unit, that is, when the count value displayed in the second counter reaches the second counting threshold corresponding to the unscheduled write request, the unscheduled write request needs to be scheduled.

[0061] For example, the entry field of the read CAM unit may include the content in Table 1:

[0062] Table 1 Read CAM unit entry field

[0063] Valid Rank num Bg num Bank num Page num Priority Entry count

[0064] Among them, Valid: used to record whether the read request is valid; Rank num: used to record the rank of the physical address corresponding to the read request; Bg num: used to record the bank group of the physical address corresponding to the read request; Bank num: used to record the bank num of the physical address corresponding to the read request; Page num: used to record the page of the physical address corresponding to the read request; Priority: used to record the priority information of the read request; Entry count: used to record the first counting threshold of the read request.

[0065] The entry field of the write CAM unit may include the content in Table 2:

[0066] Table 2 Write CAM unit entry field

[0067]

[0068] Among them, Valid: used to record whether the write request is valid; data addr: used to record the starting address of the write request data in the SRAM (for write requests, the data is stored in the SRAM); data length: used to record the length of the write data corresponding to the write request; Rank num: used to record the rank of the physical address corresponding to the write request; Bg num: used to record the bank group of the physical address corresponding to the write request; Bank num: used to record the bank num of the physical address corresponding to the write request; Page num: used to record the page of the physical address corresponding to the write request; Priority: used to record the priority information of the read request; Entry count: used to record the second counting threshold of the write request.

[0069] In this embodiment, when the current request is a read request and the current request has not been determined as a current scheduling request, the scheduling module is also used to determine a first counting threshold of the current request based on the first current counting value of the first counter and the priority information of the read request, and write the first counting threshold into the entry of the read CAM unit corresponding to the read request.

[0070] The first current count value is the count value displayed on the first counter when the current request is not determined as the current scheduling request and needs to be stored first, that is, the first current count value. The increment of the first count value is determined according to the priority information of the read request, and the first count threshold corresponding to the read request is obtained by adding the increment of the first count value to the first current count value, wherein the higher the priority of the read request, the smaller the increment of the first count value.

[0071] In this embodiment, if the current request is a write request and the current request has not been determined as the current scheduling request, the scheduling module is also used to determine the second counting threshold of the current request based on the second current counting value of the second counter and the priority information of the write request, and write the second counting threshold into the entry of the write CAM unit corresponding to the write request.

[0072] The second current count value is the count value displayed on the second counter when the current request is not determined as the current scheduling request and needs to be stored first. That is, the second current count value, and then the second count value increment is determined according to the priority information of the write request, and the second count value increment plus the second current count value are used to obtain the second count threshold, wherein the higher the priority of the write request, the smaller the second count value increment.

[0073] The technical solution of this embodiment determines the first counting threshold of the current request according to the first current counting value of the first counter and the priority information of the read request, and determines the second counting threshold of the current request according to the second current counting value of the second counter and the priority information of the write request. Further, different priority information corresponds to different numerical increments. Therefore, the first counting increment is determined according to the priority information of the read request, and the second counting increment is determined according to the priority information of the write request, so as to clarify the numerical increments corresponding to different requests, so as to increase the corresponding numerical increments on the count value currently displayed by the counter to obtain the counting threshold corresponding to the request. Further, the read request that reaches the first counting threshold of the unscheduled read request among the unscheduled read requests can be used as the current scheduling request and / or the write request that reaches the second counting threshold of the unscheduled write request among the unscheduled write requests can be used as the current scheduling request, so as to avoid the occurrence of requests that have not been called for a long time, and the requests that have not been called for a long time are generally low-priority requests. Therefore, the addition of the first counting threshold and the second counting threshold effectively avoids the situation where the low-priority request is always in a "starving" state and cannot be scheduled, and realizes the reasonable scheduling of requests.

[0074] Embodiment 3

[0075] This embodiment is based on the above embodiment and further describes in detail how the scheduling module in the above embodiment performs the requested scheduling when receiving the hit identification information. This embodiment can be combined with one or more of the above optional solutions.

[0076] The storage unit is a content addressable memory (CAM), which can be understood as a memory with configurable storage depth and can be searched in time. The storage unit includes a read CAM unit and a write CAM unit. The storage depth of the read CAM unit and the write CAM unit can be set according to the actual business throughput. The storage depth can reflect the corresponding data volume when the request is full.

[0077] In this embodiment, when the hit identification information is received, it can be determined whether the write CAM unit is full of write requests according to the storage depth of the write CAM unit. When it is full, it is necessary to execute the scheduling of the write request. If it is not full, the scheduling task can be executed according to the second scheduling rule and the third scheduling rule, specifically:

[0078] The scheduling module includes a first scheduling unit and a second scheduling unit; the first scheduling unit is specifically used for: when receiving hit identification information, if it is determined that the write CAM unit is full of write requests and the current request is a write request, then the highest priority write request is determined from the write requests in the write CAM unit and the current request, and the highest priority write request is determined as the current scheduling request; if the current request is a read request, then the highest priority write request is determined from the write requests in the write CAM unit, and the highest priority write request is determined as the current scheduling request. The second scheduling unit is specifically used for: if it is determined that the write CAM unit is not full of write requests, when the hit identification information is a hit, the current scheduling request is determined according to the second scheduling rule, and when the hit identification information is a miss, the current scheduling request is determined according to the third scheduling rule.

[0079] Among them, the second scheduling rule can be understood as when the write CAM unit is not fully stored with write requests and the hit identification information is a hit, the scheduling rule for the current scheduling request is determined from the first target request according to the priority information corresponding to the first target request, and the first target request is an unscheduled request and the current request that is consistent with the physical address of the current request.

[0080] The third scheduling rule can be understood as when the write CAM unit is not full of write requests and the hit identification information is a miss, the scheduling rule for the current scheduling request is determined from the second target request according to the priority information corresponding to the second target request. The second target request is all unscheduled requests and the current request.

[0081] Further, in the case of receiving the hit identification information, if it is determined that the write CAM unit is full of write requests, the determination of the current scheduling request may include: combining the priority information of the current request, the relevant information of the unscheduled request stored in the storage unit, the first counting threshold corresponding to the unscheduled read request, and the second counting threshold corresponding to the unscheduled write request to determine the current scheduling request, specifically as follows:

[0082] The first scheduling unit in the scheduling module is also specifically used for: if it is determined that the write CAM unit is full of write requests and the current request is a write request, determining whether there is an unscheduled timed-out low-priority write request in the write CAM unit, if so, selecting a timed-out low-priority write request as the current scheduling request; otherwise, determining whether there is an unscheduled timed-out variable-priority write request in the write CAM unit, if so, selecting a timed-out variable-priority write request as the current scheduling request; otherwise, determining whether there is a high-priority write request between the write request in the write CAM unit and the current request, if so, selecting a high-priority write request. The write request is the current scheduling request, otherwise, determine whether there is an unscheduled low-priority write request in the write CAM unit and the current request, if so, select a low-priority write request as the current scheduling request, otherwise, select a variable priority request as the current scheduling request, wherein the timed-out low-priority write request is a low-priority write request whose current second count value is equal to the second count threshold corresponding to the low-priority write request, and the timed-out variable-priority write request is the variable-priority write request whose second count threshold is equal to the current second count value and is equal to the second count threshold corresponding to the variable-priority write request.

[0083] The technical solution of this embodiment, when the hit identification information is received, first determines whether the write CAM unit is full of write requests. When the write CAM unit is full of write requests, the current scheduling task is switched to the mode of scheduling write requests, that is, the task of scheduling write requests is executed; when the write CAM unit is not full of write requests, when the hit identification information is a hit, the current scheduling request is determined according to the second scheduling rule, and when the hit identification information is a miss, the current scheduling request is determined according to the third scheduling rule; that is, the above method greatly reduces the frequent switching of read and write requests, and effectively avoids the problem of low bandwidth utilization and degradation of overall system performance due to the frequent switching of read and write requests.

[0084] Embodiment 4

[0085] This embodiment is based on the above embodiment and further describes in detail how the scheduling module in the above embodiment schedules requests when it receives the hit identification information and determines that the write CAM unit is not full of write requests, that is, describes in detail the second scheduling rule and the third scheduling rule. This embodiment can be combined with one or more of the above optional solutions.

[0086] In this implementation, when the hit identification information is a hit, determining the current scheduling request according to the second scheduling rule specifically includes: the scheduling module is specifically used to:

[0087] If it is determined that the write CAM unit is not full of write requests, when the hit identification information is a hit, determine whether there is an unscheduled timed-out low-priority read request with the same address as the current request in the write CAM unit. If so, select a timed-out low-priority read request as the current scheduling request. Otherwise, determine whether there is an unscheduled timed-out low-priority write request with the same address as the current request in the write CAM unit. If so, select a timed-out low-priority write request as the current scheduling request. Otherwise, determine whether there is an unscheduled timed-out variable-priority read request with the same address as the current request in the read CAM unit. If so, select a timed-out variable-priority read request as the current scheduling request. Otherwise, determine whether there is an unscheduled timed-out variable-priority write request with the same address as the current request in the write CAM unit. If so, select a timed-out variable-priority write request as the current scheduling request. Otherwise, determine whether there is an unscheduled timed-out variable-priority write request with the same address as the current request in the read CAM unit. If so, select a timed-out variable-priority write request as the current scheduling request. Otherwise, determine whether there is a high-priority read request in the read CAM unit and the current request with the same address as the current request. If so, select a high-priority read request as the current scheduling request. Otherwise, determine whether there is an unscheduled timed-out variable-priority read request with the same address as the current request in the read CAM unit and the current request. Whether there is an unscheduled low-priority read request in the request, if so, select a low-priority read request as the current scheduling request, otherwise, determine whether there is a write request with the same address as the current request in the write CAM unit and whether there is a high-priority write request in the current request, if so, select a high-priority write request as the current scheduling request, otherwise determine whether there is an unscheduled low-priority write request with the same address as the current request in the write CAM unit and whether there is an unscheduled low-priority write request in the current request, if so, select a low-priority write request as the current scheduling request, otherwise, determine whether there is an unscheduled variable-priority read request with the same address as the current request in the read CAM unit, if so, select a variable-priority read request as the current scheduling request, otherwise, determine whether there is an unscheduled variable-priority write request with the same address as the current request in the write CAM unit, and select a low-priority write request as the current scheduling request, wherein the timed-out low-priority read request is the low-priority read request whose current first count value is equal to the first count threshold corresponding to the low-priority read request, and the timed-out variable-priority read request is the variable-priority read request whose current first count value is equal to the first count threshold corresponding to the variable-priority read request.

[0088] In this embodiment, when the hit identification information is a miss, the scheduling module determines the current scheduling request according to the third scheduling rule, including:

[0089] If it is determined that the write CAM unit is not full of write requests, when the hit identification information is a miss, determine whether there is an unscheduled timed-out low-priority read request in the read CAM unit. If so, select a timed-out low-priority read request as the current scheduling request. Otherwise, determine whether there is an unscheduled timed-out low-priority write request in the write CAM unit. If so, select a timed-out low-priority write request as the current scheduling request. Otherwise, determine whether there is an unscheduled timed-out variable-priority write request in the read CAM unit. If so, select a timed-out variable-priority read request as the current scheduling request. Otherwise, determine the write CAM unit. Whether there is an unscheduled timed-out variable-priority write request in the write CAM unit, if so, select a timed-out variable-priority write request as the current scheduling request, otherwise, determine whether there is a high-priority read request in the read request in the write CAM unit and the current request, if so, select a high-priority write request as the current scheduling request, otherwise, determine whether there is a low-priority read request in the read request in the write CAM unit and the current request, if so, select a low-priority read request as the current scheduling request, otherwise, determine whether there is an unscheduled high-priority write request in the write request in the write CAM unit and the current request, if so, select a high-priority write request is the current scheduling request, otherwise, determining whether there is an unscheduled variable priority read request in the write request in the read CAM unit and the current request, if so, selecting a variable priority read request as the current scheduling request, otherwise, determining whether there is an unscheduled variable priority write request in the write CAM unit and the current request, if so, selecting a variable priority write request as the current scheduling request, wherein the timed-out low-priority write request is a low-priority write request whose current second count value is equal to the second count threshold corresponding to the low-priority write request, and the timed-out variable priority write request is a low-priority write request whose current second count value is equal to the second count threshold corresponding to the variable priority write request A variable priority write request with a corresponding second counting threshold is sought, wherein the timed-out low priority read request is the low priority read request whose current first counting value is equal to the first counting threshold corresponding to the low priority read request, the timed-out variable priority read request is the variable priority read request whose current first counting value is equal to the first counting threshold corresponding to the variable priority read request, the timed-out low priority write request is the low priority write request whose current second counting value is equal to the second counting threshold corresponding to the low priority write request, and the timed-out variable priority write request is the variable priority write request whose current second counting value is equal to the second counting threshold corresponding to the variable priority write request.

[0090] The technical solution of this embodiment, if it is determined that the write CAM unit is not full of write requests, further determines whether to use the second scheduling rule or the third scheduling rule to determine the current scheduling request by judging whether the hit identification information is a hit, and divides the second scheduling rule and the third scheduling rule into more detailed divisions, thereby achieving reasonable scheduling of requests and improving the overall performance of the system.

[0091] Embodiment 5

[0092] Figure 5 A flowchart of a memory scheduling method provided in an embodiment of the present application. This embodiment is applicable to situations where read and write requests are flexibly scheduled for memory. The method can be executed by a memory scheduling device, which can be implemented in the form of hardware and / or software.

[0093] like Figure 5 As shown, the memory scheduling method of the present application may specifically include the following process:

[0094] S210: The address mapping unit receives and analyzes the current request to obtain a request address, and maps the request address to a physical address of a DDR particle.

[0095] S220. The priority determination unit determines the priority information of the current request according to the QoS of the current request.

[0096] S230, the hit determination unit queries the lookup table according to the physical address, determines whether the request hits the activation address of the corresponding bank in the external DDR, and outputs hit identification information; the lookup table is used to store the activation address of the corresponding bank in the external DDR.

[0097] S240, the scheduling module determines the current scheduling request according to the hit identification information, the priority information, the current request and the relevant information of the unscheduled request stored in the storage unit, and schedules the current scheduling request; the storage unit is used to store the relevant information of the unscheduled request, and the relevant information includes at least the physical address information and priority information corresponding to the unscheduled request.

[0098] Based on the above embodiment, optionally, the priority determination unit determines the priority information of the current request according to the QoS of the current request, including:

[0099] When the current request is a read request, if the QoS value of the current read request is less than the first set threshold, the current read request is determined as a variable priority read request; if the QoS value of the current read request is greater than the second set threshold, the current read request is determined as a high priority read request; if the QoS value of the current read request is greater than the first set threshold and less than the second set threshold, the current read request is determined as a low priority read request;

[0100] When the current request is a write request, if the QoS value of the current write request is less than the first set threshold, the current write request is determined as a variable priority write request; if the QoS value of the current write request is greater than the second set threshold, the current write request is determined as a high priority write request; if the QoS value of the current read request is greater than the first set threshold and less than the second set threshold, the current write request is determined as a low priority write request.

[0101] On the basis of the above embodiment, optionally, the memory scheduling device also includes a first counter and a second counter, and the storage unit includes a read CAM unit and a write CAM unit, wherein the read CAM unit is used to store relevant information of unscheduled read requests; the write CAM unit is used to store relevant information of unscheduled write requests; the first counter is used to increase the count value by a first fixed value each time a read request in the read CAM unit is scheduled to obtain a current first count value; the second counter is used to increase the count value by a second fixed value each time a write request in the write CAM unit is scheduled to obtain a current second count value.

[0102] Based on the above embodiment, optionally, each entry of the read CAM unit stores relevant information of an unscheduled read request, and the relevant information of the read request includes at least a first counting threshold corresponding to the unscheduled read request; each entry of the write CAM unit stores relevant information of an unscheduled write request, and the relevant information of the write request includes at least a second counting threshold corresponding to the unscheduled write request.

[0103] Based on the above embodiment, optionally, the scheduling module determines the current scheduling request according to the hit identification information, the priority information, the current request, and the related information of the unscheduled request stored in the storage unit, and schedules the current scheduling request, including:

[0104] In the case of receiving the hit identification information, if it is determined that the write CAM unit is full of write requests and the current request is a write request, then determine the write request with the highest priority from the write requests in the write CAM unit and the current request, and determine the write request with the highest priority as the current scheduling request; if the current request is a read request, then determine the write request with the highest priority from the write requests in the write CAM unit, and determine the write request with the highest priority as the current scheduling request;

[0105] If it is determined that the write CAM unit is not full of write requests, when the hit identification information is a hit, the current scheduling request is determined according to the second scheduling rule; when the hit identification information is a miss, the current scheduling request is determined according to the third scheduling rule.

[0106] Based on the above embodiment, optionally, the method includes:

[0107] If it is determined that the write CAM unit is full of write requests and the current request is a write request, determine whether there is an unscheduled timed-out low-priority write request in the write CAM unit, and if so, select a timed-out low-priority write request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out variable-priority write request in the write CAM unit, and if so, select a timed-out variable-priority write request as the current scheduling request; otherwise, determine whether there is a high-priority write request in the write request in the write CAM unit and the current request, and if so, select a high-priority write request as the current scheduling request; otherwise, determine whether there is an unscheduled low-priority write request in the write request in the write CAM unit and the current request, and if so, select a low-priority write request as the current scheduling request; otherwise, select a variable-priority request as the current scheduling request, wherein the timed-out low-priority write request is the low-priority write request whose current second count value is equal to the second count threshold corresponding to the low-priority write request, and the timed-out variable-priority write request is the variable-priority write request whose current second count value is equal to the second count threshold corresponding to the variable-priority write request.

[0108] Based on the above embodiment, optionally, the method includes:

[0109] If it is determined that the write CAM unit is not full of write requests, when the hit identification information is a hit, determine whether there is an unscheduled timed-out low-priority read request with the same address as the current request in the read CAM unit, and if so, select a timed-out low-priority read request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out low-priority write request with the same address as the current request in the write CAM unit, and if so, select a timed-out low-priority write request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out low-priority write request with the same address as the current request in the read CAM unit. A variable priority read request is selected as the current scheduling request if it exists. Otherwise, it is determined whether there is an unscheduled timed variable priority write request with the same address as the current request in the write CAM unit. If so, a timed variable priority write request is selected as the current scheduling request. Otherwise, it is determined whether there is a high priority read request in the read CAM unit and the current request with the same address as the current request. If so, a high priority read request is selected as the current scheduling request. Otherwise, it is determined whether there is a high priority read request in the read CAM unit and the current request with the same address as the current request. Whether there is an unscheduled low-priority read request in the request, if so, select a low-priority read request as the current scheduling request, otherwise, determine whether there is a high-priority write request in the write CAM unit and the current request with the same address as the current request, if so, select a high-priority write request as the current scheduling request, otherwise, determine whether there is an unscheduled low-priority write request in the write CAM unit and the current request with the same address as the current request, if so, select a low-priority write request as the current scheduling request, otherwise, determine whether there is a high-priority write request in the read CAM unit and the current request with the same address as the current request, if so, select a low-priority write request as the current scheduling request, If there is an unscheduled variable priority read request with the same address as the current request, then select a variable priority read request as the current scheduling request; otherwise, determine whether there is an unscheduled variable priority write request with the same address as the current request in the write CAM unit, then select a low priority write request as the current scheduling request, wherein the timed-out low priority read request is the low priority read request whose current first count value is equal to the first count threshold corresponding to the low priority read request, and the timed-out variable priority read request is the variable priority read request whose current first count value is equal to the first count threshold corresponding to the variable priority read request.

[0110] Based on the above embodiment, optionally, the method includes:

[0111] If it is determined that the write CAM unit is not full of write requests, when the hit identification information is a miss, determine whether there is an unscheduled timed-out low-priority read request in the read CAM unit, and if so, select a timed-out low-priority read request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out low-priority write request in the write CAM unit, and if so, select a timed-out low-priority write request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out variable-priority write request in the read CAM unit, and if so, select a timed-out variable-priority read request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out variable-priority write request in the write CAM unit. If there is a timed-out variable-priority write request that is not scheduled, then select a timed-out variable-priority write request as the current scheduling request. Otherwise, determine whether there is a high-priority read request between the read request in the write CAM unit and the current request. If so, select a high-priority write request as the current scheduling request. Otherwise, determine whether there is a low-priority read request between the read request in the write CAM unit and the current request. If so, select a low-priority read request as the current scheduling request. Otherwise, determine whether there is an unscheduled high-priority write request between the write request in the write CAM unit and the current request. If so, select a high-priority write request as the current scheduling request. Otherwise, Determine whether there is an unscheduled variable priority read request in the write request in the read CAM unit and the current request, and if so, select a variable priority read request as the current scheduling request; otherwise, determine whether there is an unscheduled variable priority write request in the write request in the write CAM unit and the current request, and if so, select a variable priority write request as the current scheduling request, wherein the timed-out low priority write request is the low priority write request whose current second count value is equal to the second count threshold corresponding to the low priority write request, and the timed-out variable priority write request is the variable priority write request whose current second count value is equal to the second count threshold corresponding to the variable priority write request. The variable priority write request, wherein the timed-out low priority read request is the low priority read request whose current first count value is equal to the first count threshold corresponding to the low priority read request, the timed-out variable priority read request is the variable priority read request whose current first count value is equal to the first count threshold corresponding to the variable priority read request, the timed-out low priority write request is the low priority write request whose current second count value is equal to the second count threshold corresponding to the low priority write request, and the timed-out variable priority write request is the variable priority write request whose current second count value is equal to the second count threshold corresponding to the variable priority write request.

[0112] Based on the above embodiment, optionally, the method includes:

[0113] When the current request is a read request and the current request is not determined as the current scheduling request, the scheduling module further determines a first counting threshold of the current request according to the first current count value of the first counter and the priority information of the read request, and writes the first counting threshold into an entry of a read CAM unit corresponding to the read request; and / or

[0114] When the current request is a write request and the current request has not been determined as the current scheduling request, the scheduling module also determines the second counting threshold of the current request based on the second current counting value of the second counter and the priority information of the write request, and writes the second counting threshold into the entry of the write CAM unit corresponding to the write request.

[0115] Based on the above embodiment, optionally, the scheduling module further determines a first counting threshold of the current request according to a first current counting value of the first counter and the priority information of the read request, and the scheduling module further determines a second counting threshold of the current request according to a second current counting value of the second counter and the priority information of the write request, including:

[0116] Determine an increment of a first count value according to the priority information of the read request, and obtain the first count threshold by adding the first count value increment to the first current count value, wherein the higher the priority of the read request, the smaller the increment of the first count value; and / or

[0117] The second count value increment is determined according to the priority information of the write request, and the second count threshold is obtained by adding the second count value increment to the second current count value, wherein the higher the priority of the write request, the smaller the second count value increment is.

[0118] The memory scheduling method provided in the embodiments of the present application is applied to the memory scheduling device provided in any embodiment of the present application, and has the corresponding beneficial effects of the memory scheduling device.

[0119] The above specific implementations do not constitute a limitation on the protection scope of this application. It should be understood by those skilled in the art that various modifications, combinations, sub-combinations and substitutions can be made according to design requirements and other factors. Any modifications, equivalent substitutions and improvements made within the spirit and principles of this application should be included in the protection scope of this application.

Claims

1. A memory scheduling device, characterized in that: include: An address mapping unit, used for receiving and parsing a current request to obtain a request address, and mapping the request address to a physical address of a DDR particle; A priority determination unit, configured to determine the priority information of the current request according to the QoS of the current request; Lookup table, used to store the activation address of the corresponding bank in the external DDR; A hit determination unit, configured to query a lookup table according to the physical address, determine whether the current request hits the activation address of the corresponding bank in the external DDR, and output hit identification information; A storage unit, used to store relevant information of unscheduled requests, wherein the relevant information at least includes physical address information and priority information corresponding to the unscheduled requests; The scheduling module is used to determine the current scheduling request according to the hit identification information, the priority information and the relevant information of the unscheduled request stored in the storage unit, and schedule the current scheduling request.

2. The device according to claim 1, characterized in that The priority determination unit is specifically used for: When the current request is a read request, if the QoS value of the current read request is less than a first set threshold, the current read request is determined as a variable priority read request; if the QoS value of the current read request is greater than a second set threshold, the current read request is determined as a high priority read request; if the QoS value of the current read request is greater than the first set threshold and less than the second set threshold, the current read request is determined as a low priority read request; When the current request is a write request, if the QoS value of the current write request is less than the first set threshold, the current write request is determined as a variable priority write request; if the QoS value of the current write request is greater than the second set threshold, the current write request is determined as a high priority write request; if the QoS value of the current read request is greater than the first set threshold and less than the second set threshold, the current write request is determined as a low priority write request.

3. The device according to claim 1 or 2, characterized in that: The device further comprises a first counter and a second counter, and the storage unit comprises a read CAM unit and a write CAM unit, wherein: The read CAM unit is used to store relevant information of unscheduled read requests; The write CAM unit is used to store relevant information of unscheduled write requests; The first counter is used to increase the count value by a first fixed value each time a read request in the read CAM unit is scheduled to obtain a current first count value; The second counter is used to increase the count value by a second fixed value each time a write request in the write CAM unit is scheduled to obtain a current second count value.

4. The device according to claim 3, characterized in that: Each entry of the read CAM unit stores relevant information of an unscheduled read request, and the relevant information of the read request at least includes a first counting threshold corresponding to the unscheduled read request; Each entry of the write CAM unit stores relevant information of an unscheduled write request, and the relevant information of the write request at least includes a second counting threshold corresponding to the unscheduled write request.

5. The device according to claim 4, characterized in that The scheduling module is specifically used for: In the case of receiving the hit identification information, if it is determined that the write CAM unit is full of write requests and the current request is a write request, then determine the write request with the highest priority from the write requests in the write CAM unit and the current request, and determine the write request with the highest priority as the current scheduling request; if the current request is a read request, then determine the write request with the highest priority from the write requests in the write CAM unit, and determine the write request with the highest priority as the current scheduling request; If it is determined that the write CAM unit is not full of write requests, when the hit identification information is a hit, the current scheduling request is determined according to the second scheduling rule; when the hit identification information is a miss, the current scheduling request is determined according to the third scheduling rule.

6. The device according to claim 5, characterized in that The scheduling module is specifically used for: If it is determined that the write CAM unit is full of write requests and the current request is a write request, determine whether there is an unscheduled timed-out low-priority write request in the write CAM unit, and if so, select a timed-out low-priority write request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out variable-priority write request in the write CAM unit, and if so, select a timed-out variable-priority write request as the current scheduling request; otherwise, determine whether there is a high-priority write request in the write request in the write CAM unit and the current request, and if so, select a high-priority write request as the current scheduling request; otherwise, determine whether there is an unscheduled low-priority write request in the write request in the write CAM unit and the current request, and if so, select a low-priority write request as the current scheduling request; otherwise, select a variable-priority request as the current scheduling request, wherein the timed-out low-priority write request is the low-priority write request whose current second count value is equal to the second count threshold corresponding to the low-priority write request, and the timed-out variable-priority write request is the variable-priority write request whose current second count value is equal to the second count threshold corresponding to the variable-priority write request.

7. The device according to claim 5, wherein the scheduling module is specifically used for: If it is determined that the write CAM unit is not full of write requests, when the hit identification information is a hit, determine whether there is an unscheduled timed-out low-priority read request with the same address as the current request in the read CAM unit, and if so, select a timed-out low-priority read request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out low-priority write request with the same address as the current request in the write CAM unit, and if so, select a timed-out low-priority write request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out variable-priority read request with the same address as the current request in the read CAM unit, and if so, select a timed-out variable-priority read request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out variable-priority write request with the same address as the current request in the write CAM unit, and if so, select a timed-out variable-priority write request as the current scheduling request; otherwise, determine whether there is a high-priority read request in the read CAM unit and the current request with the same address as the current request, and if so, Then select a high priority read request as the current scheduling request, otherwise, determine whether there is an unscheduled low priority read request in the read CAM unit and the current request with the same address as the current request, if so, select a low priority read request as the current scheduling request, otherwise, determine whether there is a high priority write request in the write CAM unit and the current request with the same address as the current request, if so, select a high priority write request as the current scheduling request, otherwise determine whether there is an unscheduled low priority write request in the write CAM unit and the current request with the same address as the current request, if so, select a low priority write request as the current scheduling request, otherwise, determine whether there is an unscheduled variable priority read request with the same address as the current request in the read CAM unit, if so, select a variable priority read request as the current scheduling request, otherwise, determine whether there is an unscheduled variable priority write request with the same address as the current request in the write CAM unit, then select a low priority write request as the current scheduling request, wherein, The timed-out low-priority read request is the low-priority read request whose current first count value is equal to the first count threshold corresponding to the low-priority read request, and the timed-out variable-priority read request is the variable-priority read request whose current first count value is equal to the first count threshold corresponding to the variable-priority read request.

8. The device according to claim 5, characterized in that The scheduling module is specifically used for: If it is determined that the write CAM unit is not full of write requests, when the hit identification information is a miss, determine whether there is an unscheduled timed-out low-priority read request in the read CAM unit, and if so, select a timed-out low-priority read request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out low-priority write request in the write CAM unit, and if so, select a timed-out low-priority write request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out variable-priority write request in the read CAM unit, and if so, select a timed-out variable-priority read request as the current scheduling request; otherwise, determine whether there is an unscheduled timed-out variable-priority write request in the write CAM unit. If there is a timed-out variable-priority write request that is not scheduled, then select a timed-out variable-priority write request as the current scheduling request. Otherwise, determine whether there is a high-priority read request between the read request in the write CAM unit and the current request. If so, select a high-priority write request as the current scheduling request. Otherwise, determine whether there is a low-priority read request between the read request in the write CAM unit and the current request. If so, select a low-priority read request as the current scheduling request. Otherwise, determine whether there is an unscheduled high-priority write request between the write request in the write CAM unit and the current request. If so, select a high-priority write request as the current scheduling request. Otherwise, Determine whether there is an unscheduled variable priority read request in the write request in the read CAM unit and the current request, and if so, select a variable priority read request as the current scheduling request; otherwise, determine whether there is an unscheduled variable priority write request in the write request in the write CAM unit and the current request, and if so, select a variable priority write request as the current scheduling request, wherein the timed-out low priority write request is the low priority write request whose current second count value is equal to the second count threshold corresponding to the low priority write request, and the timed-out variable priority write request is the variable priority write request whose current second count value is equal to the second count threshold corresponding to the variable priority write request. The variable priority write request, wherein the timed-out low priority read request is the low priority read request whose current first count value is equal to the first count threshold corresponding to the low priority read request, the timed-out variable priority read request is the variable priority read request whose current first count value is equal to the first count threshold corresponding to the variable priority read request, the timed-out low priority write request is the low priority write request whose current second count value is equal to the second count threshold corresponding to the low priority write request, and the timed-out variable priority write request is the variable priority write request whose current second count value is equal to the second count threshold corresponding to the variable priority write request.

9. The device according to claim 5, characterized in that The scheduling module is also used for: When the current request is a read request and the current request is not determined as the current scheduling request, the scheduling module is further used to determine a first counting threshold of the current request according to a first current counting value of the first counter and the priority information of the read request, and write the first counting threshold into an entry of a read CAM unit corresponding to the read request; and / or When the current request is a write request and the current request has not been determined as the current scheduling request, the scheduling module is also used to determine a second counting threshold of the current request based on the second current counting value of the second counter and the priority information of the write request, and write the second counting threshold into the entry of the write CAM unit corresponding to the write request.

10. The device according to claim 9, characterized in that: The scheduling module is specifically used for: Determine an increment of a first count value according to the priority information of the read request, and obtain the first count threshold by adding the first count value increment to the first current count value, wherein the higher the priority of the read request, the smaller the increment of the first count value; and / or The second count value increment is determined according to the priority information of the write request, and the second count threshold is obtained by adding the second count value increment to the second current count value, wherein the higher the priority of the write request, the smaller the second count value increment is.