Bandwidth control method and system, electronic equipment and vehicle

The bandwidth control method and system address the inefficiencies in integrated circuits by matching bandwidth levels with available resources, reducing delays and enhancing system performance.

JP7868813B2Active Publication Date: 2026-06-02XG TECHNOLOGIES PTE LTD

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
XG TECHNOLOGIES PTE LTD
Filing Date
2024-12-05
Publication Date
2026-06-02

AI Technical Summary

Technical Problem

When multiple operating systems share hardware units in integrated circuits, the mismatch between bandwidth resources and access bandwidth leads to increased access delays and reduced execution efficiency.

Method used

A bandwidth control method and system that determines and matches the bandwidth levels of functional modules with the available resources by using bandwidth control modules to manage access to hardware units.

Benefits of technology

This approach reduces access delays and improves the execution efficiency of processors and operating systems by aligning bandwidth usage with available resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007868813000008
    Figure 0007868813000008
  • Figure 0007868813000009
    Figure 0007868813000009
  • Figure 0007868813000010
    Figure 0007868813000010
Patent Text Reader

Abstract

To relate to a bandwidth control method and system, an electronic device and a vehicle in the technical field of integrated circuit.SOLUTION: A method includes the steps of: determining bandwidth levels corresponding to a plurality of respective function modules, in a first hardware unit; and controlling bandwidths with which the function modules access a second hardware unit, on the basis of the bandwidth levels corresponding to the function modules.SELECTED DRAWING: Figure 4
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to the technical field of integrated circuits, and particularly to bandwidth control methods and systems, electronic devices, and vehicles.

Background Art

[0002] When some integrated circuits (for example, system on chip (SoC)) execute multiple operating systems (OS), each operating system can call the processor of the SoC to access at least one hardware unit (for example, memory), read the commands to be executed, and write the results of command execution. Each hardware unit can be assigned to at least one operating system and used.

[0003] The bandwidth resources of different hardware units are different. When the same hardware unit is assigned to multiple operating systems and used, the bandwidth resources obtained by each operating system may be different. Therefore, the bandwidth for the operating system to access the hardware unit cannot match (align) with the bandwidth resources obtained by the operating system, which may cause an increase in access delay and data waiting, and reduce the execution efficiency of the processor and the performance of the operating system.

Summary of the Invention

Problems to be Solved by the Invention

[0004] Embodiments of this disclosure provide a bandwidth control method, system, integrated circuit, electronic device, and vehicle that, when multiple operating systems are running on an integrated circuit, control the bandwidth with which an operating system accesses a hardware unit, thereby matching the bandwidth with which an operating system accesses a hardware unit to bandwidth resources obtained by the operating system. [Means for solving the problem]

[0005] A bandwidth control method according to a first aspect of the present disclosure includes the steps of determining bandwidth levels corresponding to each of a plurality of functional modules in a first hardware unit, and controlling the bandwidth by which each functional module accesses a second hardware unit based on the bandwidth level corresponding to each functional module.

[0006] A bandwidth control system according to a second aspect of the present disclosure includes a first hardware unit including a plurality of functional modules, a second hardware unit communicating with the plurality of functional modules, and a plurality of bandwidth control modules provided in one-to-one correspondence with the plurality of functional modules, each bandwidth control module provided between the first hardware unit and the second hardware unit, each bandwidth control module determines the bandwidth level corresponding to each functional module in the first hardware unit, and controls the bandwidth by which each functional module accesses the second hardware unit based on the bandwidth level corresponding to each functional module.

[0007] The electronic device relating to the third aspect of this disclosure includes a bandwidth control system relating to the second aspect.

[0008] A vehicle according to the fourth aspect of this disclosure includes a bandwidth control system according to the third aspect or electronic equipment according to the fourth aspect. [Effects of the Invention]

[0009] According to the technical configuration of the embodiment of this disclosure, when multiple functional modules in a first hardware unit each execute different operating systems, the bandwidth level corresponding to each of the multiple functional modules in the first hardware unit is determined, and the bandwidth by which each functional module accesses the second hardware unit is controlled based on the bandwidth level corresponding to each functional module. This allows the bandwidth by which the functional modules corresponding to each operating system access the second hardware unit to be matched with the bandwidth resources obtained by each operating system, thereby reducing access delay, decreasing data waiting, and improving the execution efficiency of the processor and the performance of the operating system. [Brief explanation of the drawing]

[0010] [Figure 1] This is a block diagram of the structure of a cockpit driving integration system according to one exemplary embodiment of the present disclosure. [Figure 2] This is a schematic diagram of the structure of a bandwidth control system according to one exemplary embodiment of the present disclosure. [Figure 3] This is a schematic diagram of the structure of a bandwidth control system according to another exemplary embodiment of the present disclosure. [Figure 4] This is a flowchart of a bandwidth control method according to one exemplary embodiment of the present disclosure. [Figure 5] This is a flowchart of step S130 of a bandwidth control method according to one exemplary embodiment of the present disclosure. [Figure 6] This is a flowchart of step S131 of a bandwidth control method according to one exemplary embodiment of the present disclosure. [Figure 7] This is a schematic diagram showing how a bandwidth control module according to one embodiment of the present disclosure acquires a bandwidth level. [Figure 8] This is a flowchart of a bandwidth control method according to another exemplary embodiment of the present disclosure. [Figure 9]This is a flowchart of a bandwidth control method according to yet another exemplary embodiment of the present disclosure. [Figure 10] This is a flowchart of step S530 of a bandwidth control method according to one exemplary embodiment of the present disclosure. [Figure 11] This is a schematic diagram illustrating the dynamic control of access bandwidth according to one exemplary embodiment of the present disclosure. [Figure 12] This is a schematic diagram illustrating the dynamic control of access bandwidth according to another exemplary embodiment of the present disclosure. [Figure 13] This is a schematic diagram of the structure of a bandwidth control device according to one embodiment of the present disclosure. [Figure 14] This is a schematic diagram of the structure of a bandwidth control device according to another embodiment of the present disclosure. [Figure 15] This is a schematic diagram of the structure of an integrated circuit according to one embodiment of the present disclosure. [Figure 16] This is a schematic diagram of the structure of an integrated circuit according to another embodiment of the present disclosure. [Modes for carrying out the invention]

[0011] Hereinafter, exemplary embodiments relating to this disclosure will be described in detail with reference to the drawings. The embodiments described are only a selection of embodiments of this disclosure, not all embodiments of this disclosure, and this disclosure is not limited to the exemplary embodiments described herein.

[0012] Unless otherwise specified, the relative arrangements of parts and steps, numerical expressions, and numerical values ​​described in these embodiments do not limit the scope of this disclosure.

[0013] A "bus" in a computer system is a channel used to connect modules / units and enable data transmission. The main function of a bus is to transmit data, addresses, and control signals between different modules / units (e.g., processor, memory, input / output (I / O) modules, memory controller).

[0014] "Bandwidth" refers to the amount of data transmitted per unit time. The unit of bandwidth may be bits per second (bps), kilobits per second (Kbps), megabits per second (Mbps), gigabits per second (Gbps), etc., or bytes per second (B / s), kilobytes per second (KB / s), megabytes per second (MB / s), gigabytes per second (GB / s), etc.

[0015] "Memory" is a component in a computer system that temporarily stores data and commands for the processor to quickly access and execute easily. Memory can include, for example, random access memory (RAM) such as dynamic random access memory (DRAM) and static random access memory (SRAM).

[0016] "Bandwidth resource" refers to the maximum amount of data that can be transmitted per unit time. The unit of bandwidth resource can be bps, kbps, Mbps, Gbps, etc.

[0017] "Memory bandwidth", also called the bandwidth resource of memory, means the maximum amount of data that memory can transmit per unit time.

[0018] "SoC" is an integrated circuit that integrates multiple modules / units of a computer system onto one chip. Modules / units that can be integrated into SoC include a central processing unit (CPU), a graphics processing unit (GPU), SRAM, an I / O interface, a digital signal processor (DSP), a neural processing unit (NPU), and an image signal processor (ISP). <Overview of the Application>

[0019] An operating system can run on an integrated circuit. For example, an integrated circuit may include a processor, and the operating system can be executed by the processor. The processor can establish communication with memory (e.g., DRAM and SRAM) via a bus. In this way, while the operating system is running, the operating system can load commands into memory, the processor can read commands and data from memory via the bus, perform various operations based on these commands (e.g., arithmetic operations, logical operations and data transmission), and then write the results of the command execution to memory via the bus.

[0020] High-performance integrated circuits can run multiple operating systems.

[0021] Figure 1 is a block diagram of the structure of a cockpit driving integration system according to one exemplary embodiment of the present disclosure.

[0022] The cockpit driving integrated system can be applied to various robots such as vehicles (e.g., intelligent connected vehicles), autonomous vehicles such as steamships, trains, subways, and airplanes, service robots, transport robots, automated guided vehicles (AGVs), unmanned ground vehicles (UGVs), and various construction machinery.

[0023] As shown in Figure 1, in one embodiment, the cockpit driving integrated system may include an SoC100. In one example, the SoC100 may include one or more functional modules. Examples of one or more functional modules include one or more CPUs and / or one or more GPUs and / or one or more ISPs and / or one or more DSPs and / or one or more NPUs. These functional modules can provide computing resources to multiple operating systems to support each operating system in performing its functions.

[0024] In one embodiment, the cockpit driving integrated system may further include a memory 200. The memory 200 can store commands and / or data, and the processor can read and execute commands in the memory 200 and write the execution results to the memory 200. In one example, the memory 200 may include, for example, DRAM and / or SRAM. The memory 200 may be integrated into the SoC 100, for example, SRAM and embedded DRAM (eDRAM), and thus the memory 200 may be part of the SoC 100, or the memory 200 may be an independent device outside the SoC 100, for example, DRAM. In some examples, the memory 200 may further include read-only memory (ROM), erasable programmable read-only memory (EPROM), flash memory, etc., and the embodiments of this disclosure are not specifically limited thereto.

[0025] In one embodiment, the SoC100 can run multiple operating systems (e.g., operating systems 1 to OSN). Exemplarily, the multiple operating systems may include at least a cockpit operating system ("cockpit system") and an intelligent driving operating system ("intelligent driving system"). The intelligent driving system is primarily responsible for the autonomous driving and safety of the vehicle, including environmental sensing, path planning, decision-making, and control. The cockpit system is primarily responsible for the in-vehicle driving and passenger experience and human-machine interaction, including infotainment, instrument display, media playback, and environmental control. Compared to the independent existence of the cockpit system and the intelligent driving system, the integrated cockpit-driving system offers a higher degree of integration and intelligence, which is advantageous for improving the vehicle's driving safety, comfort, and driving and passenger experience.

[0026] If the SoC100 runs multiple operating systems, the cockpit driving integrated system may include multiple memories 200 to meet the operational demands of the multiple operating systems. The multiple memories 200 may include, for example, at least one SRAM and / or eDRAM integrated with the SoC100, and / or at least one independently installed DRAM, flash memory, etc. Exemplarily, as shown in Figure 1, the memory 200 includes SRAM integrated with the SoC100 and DRAM provided independently of the SoC100.

[0027] To make it clear, different memory 200s can have different hardware specifications, and therefore different memory 200s can also have different bandwidth resources. For example, if a cockpit driving integrated system includes three memory 200s (e.g., memory 200-1 to memory 200-3), the bandwidth resource of memory 200-1 could be 100 GB / s, the bandwidth resource of memory 200-2 could be 50 GB / s, and the bandwidth resource of memory 200-3 could be 10 GB / s.

[0028] When the SoC100 runs multiple operating systems, different memory 200 can be allocated and used by different operating systems, and / or the same memory 200 can be allocated and used by multiple operating systems, allowing multiple operating systems to share the bandwidth resources of memory 200, meaning that the bandwidth resources of memory 200 obtained by each operating system can be different.

[0029] For example, if three operating systems are running on SoC100, memory 200-1 can be allocated to operating system 1, memory 200-2 to operating system 2, and memory 200-3 to operating system 3. The processor in each SoC transmits access traffic to memory 200 according to its own maximum capacity when implementing the functions of the corresponding operating system. In such a case, if the access bandwidth of the processor in the SoC to memory 200 is greater than the bandwidth resources available by the corresponding operating system, access congestion occurs, causing increased access delays and data waiting, reducing the execution efficiency of each functional module and the performance of the operating system.

[0030] Furthermore, when the SoC100 runs multiple operating systems, the same memory 200 can be allocated and used by multiple operating systems, and each operating system can obtain a portion of the processor's bandwidth resources. For example, if the bandwidth resource of memory 200-1 is 100 GB / s, this 100 GB / s bandwidth resource can be allocated to three operating systems, of which operating system 1 can obtain 40 GB / s of bandwidth resources, operating system 2 can obtain 30 GB / s of bandwidth resources, and operating system 3 can obtain 30 GB / s of bandwidth resources. In such a case, if the bandwidth required for operating system 1 to access memory 200-1 is greater than the bandwidth resources allocated to operating system 1, for example, greater than 40 GB / s, then increased access delay and data waiting problems will occur. Accordingly, the processor running operating system 1 must wait until the current access transmission is complete before proceeding to the next operation, reducing the processor's execution efficiency and the performance of operating system 1.

[0031] Embodiments of this disclosure provide bandwidth control methods, systems, integrated circuits, electronic devices, and vehicles. When an integrated circuit (e.g., SoC) runs multiple operating systems, the bandwidth can be controlled by differentiating the actions of the operating systems in accessing different memory. This allows the bandwidth used by each operating system to access memory to be matched with the bandwidth resources allocated to the operating system, thereby avoiding increased access delays and data wait problems, and improving the execution efficiency of the processor and the performance of the operating system. <Example System>

[0032] Figure 2 is a schematic diagram of the structure of a bandwidth control system according to one exemplary embodiment of the present disclosure.

[0033] This bandwidth control system can be implemented in an integrated circuit (e.g., SoC100). As shown in Figure 2, in one embodiment, this bandwidth control system may include a first hardware unit 10.

[0034] The first hardware unit 10 can be provided on an integrated circuit (e.g., SoC 100), meaning that the integrated circuit (e.g., SoC 100) includes the first hardware unit 10. For example, the first hardware unit 10 is one or more functional modules 11 on the integrated circuit (e.g., SoC 100). Each functional module 11 is for realizing one or more functions of the integrated circuit (e.g., SoC 100). For example, the functional modules 11 can be a CPU, GPU, NPU, ISP, DSP, etc.

[0035] The first hardware unit 10 can run multiple operating systems, such as an intelligent driving system, a cockpit system, and / or other operating systems. Multiple operating systems can run in the first hardware unit 10. Different operating systems can run in different functional modules 11, or different functional modules 11 can be managed by different operating systems, or different functional modules 11 can correspond to different operating systems. That is, multiple functional modules each correspond to a different operating system.

[0036] As an example, suppose the first hardware unit 10 can run three operating systems, Operating Systems 1 to 3, and includes eight CPUs, CPUs 1 to 8. Operating System 1 can run on CPUs 1 and 2 (or CPUs 1 and 2 are managed by Operating System 1), Operating System 2 can run on CPUs 3 to 6 (or CPUs 3 to 6 are managed by Operating System 2), and Operating System 3 can run on CPUs 7 and 8 (or CPUs 7 and 8 are managed by Operating System 3). Similarly, one operating system can manage one or more GPUs, one operating system can manage one or more NPUs, one operating system can manage one or more ISPs, and one operating system can manage one or more DSPs.

[0037] In one implementation, each functional module 11 of the first hardware unit 10 can communicate with other hardware units (for example, a second hardware unit 20). For example, each functional module 11 of the first hardware unit 10 can access the second hardware unit 20.

[0038] For example, each functional module 11 of the first hardware unit 10 and the second hardware unit 20 can communicate with each other via a bus 30. Specifically, the bus 30 can be an advanced extensible interface (AXI) bus, which is, for example, A read address channel (AR) for transmitting read access addresses. A read data channel (R) for transmitting data during read access. A write address channel (AW) for transmitting write access addresses. A write data channel (W) for transmitting data for write access. It can include five channels called write response channels (B) for transmitting write access responses.

[0039] Of course, other protocol buses (e.g., advanced high-performance bus (AHB), inter-integrated circuit (I2C) bus, HyperTransport bus, etc.) may be used, and the embodiments of this disclosure are not limited to these.

[0040] The second hardware unit 20 may include memory 200 (e.g., memory, or other hardware units that communicate with the first hardware unit 10). Exemplarily, the second hardware unit 20 may be DRAM and / or SRAM. Correspondingly, the bus may be a DRAM bus in the SoC 100 for a functional module 11 (e.g., a CPU) to access DRAM, or an SRAM bus for accessing SRAM. Correspondingly, the memory bandwidth includes the bandwidth of the DRAM bus (abbreviated as "DRAM bandwidth") and / or the bandwidth of the SRAM bus (abbreviated as "SRAM bandwidth").

[0041] In the embodiments of this disclosure, the first hardware unit 10 and the second hardware unit 20 can be provided on different integrated circuits. For example, the first hardware unit 10 may be provided on the SoC 100, and the second hardware unit 20 may be a DRAM provided independently of the SoC 100. Alternatively, the first hardware unit 10 and the second hardware unit 20 can be provided on the same integrated circuit. For example, the first hardware unit 10 may be provided on the SoC 100, and the second hardware unit 20 may be an SRAM integrated on the SoC 100 chip.

[0042] In one implementation, the second hardware unit 20 may include a plurality of memories 200, and the plurality of memories 200 may be of the same type, for example, all of the plurality of memories 200 may be DRAM or all of SRAM. The plurality of memories 200 may be of different types, for example, some of the memories 200 may be DRAM and the remaining memories 200 may be SRAM.

[0043] In one implementation, the multiple memories 200 can all be provided on the SoC 100. Alternatively, the multiple memories 200 may all be devices independently provided with respect to the SoC 100, or some of the memories 200 may be provided on the SoC 100 and the remaining memories 200 may be independently provided devices. The embodiments of this disclosure are not specifically limited to these.

[0044] When the first hardware unit 10 runs multiple operating systems, each operating system calls its corresponding function module 11 to implement its corresponding function. Correspondingly, each function module 11 can access the second hardware unit 20 to read commands and data, or write the results of command execution, etc., in order to implement its own function. Therefore, the access of each function module 11 to the second hardware unit 20 can be described as the operating system corresponding to each function module 11 accessing the second hardware unit 20. For example, when CPU1 and CPU2 run operating system 1, the access of CPU1 and CPU2 to DRAM can be described as operating system 1 accessing DRAM.

[0045] In one implementation, each memory 200 of the second hardware unit 20 can have a specific address range, and the address ranges of different memories 200 are different. Each address range can contain multiple addresses, and the addresses within different address ranges are different. In other words, there is a one-to-one correspondence between multiple memories 200 and multiple address ranges, and each address range can correspond to one memory 200.

[0046] For example, if the second hardware unit 20 includes memory 200-1 to memory 200-N, The address range 1 of memory 200-1 can be, for example, 0×1000 to 0×1999. The address range 2 of memory 200-2 can be, for example, 0x2000 to 0x2999. The address range N of memory 200-N can be, for example, 0×N000 to 0×N999.

[0047] Each address can store data of a specific length; for example, each address can store 1 byte of data. Therefore, each functional module 11 can access different memories 200 based on different addresses.

[0048] For the convenience of explaining the subsequent technical configuration, in the embodiments of this disclosure, when the functional module 11 accesses a certain address in memory 200, it can be said that the functional module 11 accesses the address range corresponding to that address. Furthermore, because the functional module 11 and the operating system have a correspondence, when the functional module 11 accesses a certain address range, it can be said that the operating system corresponding to the functional module 11 accesses that address range.

[0049] In one implementation, each memory 200 can be allocated and used by one or more operating systems. For example, by dividing the address in one memory 200 into multiple address ranges and allocating different address ranges to different operating systems, each operating system can access the address range allocated to it. Thus, it is possible to realize that one memory 200 can be allocated and used by multiple operating systems. Each address range can correspond to one operating system.

[0050] For example, if we allocate memory 200-2 to operating system 1 to operating system 3, The access address of memory 200-2 is, The address range 21 is 0x2000 to 0x2299, The address range 22 is 0x2300 to 0x2599, It can be divided into an address range 23, from 0x2600 to 0x2999.

[0051] We can assign address range 21 to operating system 1, address range 22 to operating system 2, and address range 23 to operating system 3. Therefore, operating system 1 can access address range 21, operating system 2 can access address range 22, and operating system 3 can access address range 23.

[0052] In one implementation, if one memory 200 is allocated and used by multiple operating systems, the bandwidth resources of memory 200 can also be allocated to each operating system. For example, if memory 200-2 contains a bandwidth resource of 100 Gbps, a bandwidth resource of 50 Gbps can be allocated to operating system 1, a bandwidth resource of 30 Gbps to operating system 2, and a bandwidth resource of 20 Gbps to operating system 3. The bandwidth resources allocated to each operating system may be fixed or may change dynamically.

[0053] Since there is a correspondence between the operating system and the address range, in the embodiments of this disclosure, for the convenience of explaining the subsequent technical configuration, allocating bandwidth resources to the operating system can be expressed as allocating bandwidth resources to the address range corresponding to the operating system. For example, allocating 50 Gbps of bandwidth resources to operating system 1 can be expressed as allocating 50 Gbps of bandwidth resources to address range 21.

[0054] In one embodiment, the bandwidth control system may further include a plurality of bandwidth control modules 40, such as bandwidth control modules 40-1, 40-2 to 40-N. The plurality of bandwidth control modules 40-1, 40-2 to 40-N are provided in a one-to-one correspondence with a plurality of functional modules 11-1, 11-2 to 11-N of the first hardware unit 10. The bandwidth control modules 40 can be provided in the communication link between the corresponding functional module 11 and the second hardware unit 20. For example, the bandwidth control module 40 can be provided on the exit side of the corresponding functional module 11, or the bandwidth control module 40 can be provided downstream of the functional module 11. Therefore, when each functional module 11 accesses the second hardware unit 20, this access (e.g., commands, data, etc.) can be transmitted to the second hardware unit 20 first via the bandwidth control module 40 corresponding to the functional module 11. For example, access from each functional module 11 can be transmitted to the second hardware unit 20 first via the bandwidth control module 40 and then via the bus 30 downstream of the bandwidth control module 40. Each bandwidth control module 40 determines the bandwidth level corresponding to each functional module 11 in the first hardware unit 10 and controls the bandwidth that each functional module 11 uses to access the second hardware unit 20 based on the bandwidth level corresponding to each functional module 11.

[0055] In one implementation, each bandwidth control module 40 can correspond to multiple functional modules 11. In such a case, the bandwidth control module 40 can be provided in the communication link between the multiple functional modules 11 corresponding to it and the bus 30. Note that the fewer the functional modules 11 corresponding to each bandwidth control module 40, the finer the granularity of bandwidth control becomes, and the more functional modules 11 corresponding to each bandwidth control module 40, the coarser the granularity of bandwidth control becomes. Therefore, in the embodiments of this disclosure, the correspondence between the bandwidth control module 40 and the functional modules 11 can be flexibly set according to the required granularity of bandwidth control, and is not limited thereto.

[0056] Figure 3 is a schematic diagram of the structure of a bandwidth control system according to another exemplary embodiment of the present disclosure.

[0057] As shown in Figure 3, in one implementation, the bandwidth control system further includes an instruction module 50, which in one example may be a bandwidth allocation module. The instruction module 50 is for generating bandwidth levels corresponding to each operating system.

[0058] In one implementation, the instruction module 50 can determine the bandwidth level corresponding to the operating system based on the state of the operating system (for example, the state in which the operating system accesses the second hardware unit 20). The bandwidth level corresponds to the bandwidth resources currently allocated to the operating system. For example, the more bandwidth resources currently allocated to the operating system, the higher the bandwidth level currently corresponding to the operating system, and the less bandwidth resources currently allocated to the operating system, the lower the bandwidth level currently corresponding to the operating system.

[0059] In one implementation, as shown in Figure 3, the bandwidth control system may further include a bandwidth sharing module 60. The bandwidth sharing module 60 is located downstream of each bandwidth control module 40 and upstream of the second hardware unit 20. The bandwidth sharing module 60 is communicated to each bandwidth control module 40 and the second hardware unit 20. Therefore, access to each functional module 11 can first reach the bandwidth control module 40 and then be transmitted to the second hardware unit 20 via the bandwidth sharing module 60.

[0060] In one implementation, the bandwidth sharing module 60 has a corresponding register in which a command queue is stored, and the command queue is for caching access commands (e.g., read access commands and write access commands) that each functional module 11 uses to access the second hardware unit 20.

[0061] In one implementation, the instruction module 50 can determine the bandwidth level corresponding to the operating system based on the usage status of the command queue in the bandwidth sharing module 60 (e.g., saturation level or idle level). A higher command queue saturation level indicates that the operating system transmits a large number of accesses to the second hardware unit 20 and that the bandwidth level corresponding to the operating system is low. A higher idle level of the command queue indicates that the operating system transmits a small number of accesses to the second hardware unit 20 and that the bandwidth level corresponding to the operating system is high.

[0062] In the embodiments of this disclosure, when access to the functional module 11 passes through the bandwidth control module 40, the bandwidth control module 40 can throttle this access. Therefore, it can control the transmission bandwidth downstream of this access. In other words, it controls the bandwidth with which the functional module 11 accesses the second hardware unit 20.

[0063] In one implementation, the bandwidth control module 40 can determine the address range to be accessed and control the bandwidth to be accessed based on that address range. Since there is a correspondence between the address range and the operating system, the bandwidth control module 40 can control the bandwidth that functional modules corresponding to different operating systems access to the second hardware unit 20 based on the address range to be accessed.

[0064] In another implementation, the bandwidth control module 40 can dynamically control the bandwidth by which each functional module 11 accesses the second hardware unit 20 based on the bandwidth level of the operating system currently corresponding to each functional module 11, thereby enabling the functional module 11 to access the second hardware unit 20 with the bandwidth resources available to the corresponding operating system and avoiding congestion during access.

[0065] Although not shown in the diagram, the bandwidth control system shown in Figure 3 further includes a bus provided between the bandwidth control module 40 and the second hardware unit 20. (Example method)

[0066] The bandwidth control method relating to this disclosure includes the steps of determining a bandwidth level corresponding to each of a plurality of functional modules in a first hardware unit, wherein each of the plurality of functional modules corresponds to a different operating system, and controlling the bandwidth by which each functional module accesses the second hardware unit based on the bandwidth level corresponding to each functional module.

[0067] In one implementation, different functional modules may be managed by different operating systems, or different functional modules may correspond to different operating systems. Therefore, the step of determining the bandwidth levels corresponding to each of the multiple functional modules in the first hardware unit may be the step of determining the bandwidth levels corresponding to each of the multiple operating systems that manage the multiple functional modules.

[0068] As an example, let us assume that the first functional module is any functional module among a plurality of functional modules, and that the first functional module corresponds to a first operating system. The step of determining the bandwidth level corresponding to the first functional module can be the step of determining the first bandwidth level corresponding to the first operating system. The step of determining the first bandwidth level corresponding to the first operating system can be realized by steps S510 to S520 in the following specific embodiment, which will not be explained further here.

[0069] In another implementation, different address ranges of the second hardware unit can be assigned to different operating systems, and different operating systems can correspond to different functional modules. That is, different functional modules correspond to different address ranges of the second hardware unit. Therefore, the step of determining the bandwidth levels corresponding to each of the multiple functional modules can be the step of determining the bandwidth levels corresponding to each of the multiple address ranges to which the multiple functional modules access the second hardware unit.

[0070] In one specific embodiment, the step of controlling the bandwidth by which each functional module accesses the second hardware unit based on the bandwidth level corresponding to each functional module includes the steps of determining a bandwidth threshold corresponding to each functional module based on the bandwidth level corresponding to each functional module, and controlling the bandwidth by which each functional module accesses the second hardware unit based on the bandwidth threshold corresponding to each functional module.

[0071] In one implementation, when different operating systems support different functional modules, the step of determining the bandwidth threshold corresponding to each functional module can be the same as the step of determining the bandwidth threshold corresponding to multiple operating systems that manage multiple functional modules.

[0072] As an example, suppose the first functional module is any functional module among a plurality of functional modules, and the first functional module corresponds to a first operating system. The step of determining the bandwidth threshold corresponding to the first functional module based on the bandwidth level corresponding to the first functional module can be the step of determining the first bandwidth threshold corresponding to the first operating system based on the first bandwidth level corresponding to the first operating system. The step of determining the first bandwidth threshold corresponding to the first operating system based on the first bandwidth level corresponding to the first operating system can be realized by step S531 in the following embodiment, which will not be explained further here.

[0073] In one implementation, if different functional modules correspond to different address ranges of a second hardware unit, the step of determining the bandwidth threshold corresponding to each functional module can be the step of determining the bandwidth threshold corresponding to each different address range of the second hardware unit.

[0074] For example, taking the case where the first functional module is any functional module among a plurality of functional modules, and the first functional module accesses a first address range of the second hardware unit, the step of determining the bandwidth threshold corresponding to the first functional module based on the bandwidth level corresponding to the first functional module can be the step of determining the first bandwidth threshold corresponding to the first address range based on the bandwidth level corresponding to the first address range. The step of determining the first bandwidth threshold corresponding to the first address range based on the bandwidth level corresponding to the first address range can be realized by step S1312 in the following embodiment, which will not be explained further here.

[0075] In one specific embodiment, the step of determining the bandwidth levels corresponding to each of several functional modules in the first hardware unit includes the step of determining the address range corresponding to each functional module's access to the second hardware unit, and the step of determining the bandwidth levels corresponding to each functional module based on the address range corresponding to each functional module's access to the second hardware unit.

[0076] For example, taking the case where a first functional module accesses a first address range of a second hardware unit, the step of determining the bandwidth level corresponding to the first functional module based on the first address range can be implemented based on step S1311 in the following embodiment, which will not be explained further here.

[0077] In one specific embodiment, the step of determining the address range corresponding to each functional module's access to the second hardware unit includes the steps of determining the access address corresponding to each functional module's access to the second hardware unit, and determining the address range corresponding to each functional module's access to the second hardware based on the access address corresponding to each functional module's access to the second hardware unit.

[0078] For illustrative purposes, taking the example of a first functional module accessing a second hardware unit, the step of determining the address to which the first functional module accesses the second hardware unit can be implemented by step S110 in a subsequent embodiment. Based on the address corresponding to the first functional module's access to the second hardware unit, the step of determining a first address range corresponding to the first functional module's access to the second hardware unit can be implemented by step S120 in a subsequent embodiment. Further explanation is not provided here.

[0079] In one specific embodiment, the step of controlling the bandwidth by which each functional module accesses the second hardware unit based on a bandwidth threshold corresponding to each functional module includes the step of controlling the bandwidth by which each functional module accesses the second hardware unit based on a bandwidth threshold corresponding to each functional module and the current bandwidth of each address range.

[0080] For example, taking the case where a first functional module accesses a first address range of a second hardware unit, the step of controlling the bandwidth over which the first functional module accesses the second hardware unit, based on a bandwidth threshold corresponding to the first functional module, can be achieved by step S132 in the following embodiment, which will not be described further here.

[0081] In one specific embodiment, the step of controlling the bandwidth by which each functional module accesses the second hardware unit, based on a bandwidth threshold corresponding to each functional module and the current bandwidth of each address range, includes the steps of determining a bandwidth threshold corresponding to each functional module and the magnitude of the numerical value of the current bandwidth by which each functional module accesses the address range of the second hardware unit, and controlling the bandwidth by which each functional module accesses the second hardware unit, based on a bandwidth threshold corresponding to each functional module and the magnitude of the numerical value of the current bandwidth by which each functional module accesses the address range of the second hardware unit.

[0082] In one specific embodiment, the step of controlling the bandwidth with which each functional module accesses the second hardware unit, based on a bandwidth threshold corresponding to each functional module and the magnitude of the current bandwidth with which each functional module accesses the address range of the second hardware unit, includes the steps of: transmitting access of a first functional module to the second hardware unit in response to the current bandwidth with which any first functional module among the functional modules accesses the address range of the second hardware unit being less than the bandwidth threshold corresponding to the first functional module; and blocking access of a first functional module to the second hardware unit in response to the current bandwidth with which any first functional module among the functional modules accesses the address range of the second hardware unit being greater than or equal to the bandwidth threshold corresponding to the first functional module.

[0083] As an example, suppose a first functional module corresponds to a first bandwidth threshold, and a first hardware unit accesses a first address range of a second hardware unit. If the current bandwidth of the first address range is less than the first bandwidth threshold, access to the first address range of the second hardware unit from the first functional module is transmitted; if the current bandwidth of the first address range is greater than or equal to the first bandwidth threshold, access to the first address range of the second hardware unit from the first functional module is blocked.

[0084] In one specific embodiment, the step of controlling the bandwidth by which each functional module accesses the second hardware unit based on a bandwidth threshold corresponding to each functional module includes the step of controlling the bandwidth by which each functional module accesses the second hardware unit so that it is less than the bandwidth threshold corresponding to each functional module.

[0085] For example, taking the case where the first functional module corresponds to a first bandwidth threshold, the step of controlling the bandwidth by which the first functional module accesses the second hardware unit based on the first bandwidth threshold corresponding to the first functional module can be realized by step S532 in the following embodiment, which will not be described further here.

[0086] In the embodiment of the present disclosure, when multiple functional modules in a first hardware unit each execute different operating systems, the method determines the bandwidth level corresponding to each of the multiple functional modules in the first hardware unit, and controls the bandwidth that each functional module uses to access the second hardware unit based on the bandwidth level corresponding to each functional module. This allows the bandwidth used by the functional modules corresponding to each operating system to access the second hardware unit to be matched with the bandwidth resources obtained by each operating system, thereby reducing access delay, decreasing data latency, and improving processor execution efficiency and operating system performance.

[0087] Hereinafter, several embodiments of the present disclosure will be described with reference to the drawings. In some embodiments, each step of the bandwidth control method according to the present disclosure can be performed by any bandwidth control module 40 in a bandwidth control system. For convenience of explanation, in the following embodiments, any bandwidth control module 40 in a bandwidth control system will be referred to as the first control module, and any functional module 11 that is communicated with the first control module will be referred to as the first functional module.

[0088] Figure 4 is a flowchart of a bandwidth control method according to one exemplary embodiment of the present disclosure.

[0089] In one embodiment, if different functional modules correspond to different address ranges, this bandwidth control method may include the following steps S110 to S130.

[0090] In step S110, the first address of the first access to the second hardware unit 20 is obtained, which includes at least one address range of the first functional module of the first hardware unit 10.

[0091] In a scenario where the first hardware unit 10 runs multiple operating systems, the address range of the second hardware unit 20 can be allocated and used by multiple operating systems, and each operating system can be allocated at least one address range. Each address range may correspond to one memory 200 or to one operating system.

[0092] As an example, let us consider a case where the second hardware unit 20 includes memories 200-1 to 200-3.

[0093] The address range 1 of memory 200-1 is 0x1000 to 0x1999. When address range 1 is allocated to and used by operating system 1, address range 1 can correspond to operating system 1 or to memory 200-1.

[0094] The address range 2 of memory 200-2 is 0×2000 to 0×2999. Address range 2 is further divided into address range 21 (e.g., 0×2000 to 0×2299), address range 22 (e.g., 0×2300 to 0×2599), and address range 23 (0×2600 to 0×2999). When address range 21 is assigned to operating system 1, address range 22 to operating system 2, and address range 23 to operating system 3, address range 21 can correspond to operating system 1, address range 22 to operating system 2, and address range 23 to operating system 3.

[0095] The address range 3 of memory 200-3 is 0x3000 to 0x3999. Address range 3 is further divided into address range 31 (e.g., 0x3000 to 0x3499) and address range 32 (e.g., 0x3500 to 0x3599). When address range 31 is assigned to operating system 1 and address range 32 is assigned to operating system 3, address range 31 can correspond to operating system 1 and address range 32 can correspond to operating system 3.

[0096] When the first functional module runs on or is managed by any one operating system, the first functional module can access the second hardware unit 20. For example, the first functional module can access any one address range assigned to this operating system. In embodiments of this disclosure, for convenience of explanation, the access of the first functional module to the second hardware unit 20 may be referred to as the first access, and the access address of the first access may be referred to as the first address.

[0097] Furthermore, the operating system executed by the first functional module may be fixed and immutable, or it may change dynamically. Since different operating systems correspond to different address ranges, when the first functional module executes a different operating system, the first address can be located within a different address range.

[0098] For example, when the first functional module executes the operating system 1, the first functional module can access address range 1 of memory 200-1, address range 21 of memory 200-2, and address range 31 of memory 200-3. Then, the first address can be located within address range 1, for example, the first address can be 0×1001; the first address can further be located within address range 21, for example, the first address can be 0×2001; and the first address can further be located within address range 31, for example, the first address can be 0×3001.

[0099] For example, when the first functional module is running the operating system 2, the first functional module can access the address range 22 of memory 200-2. Then, the first address can be located within the address range 22, for example, the first address could be 0x2301.

[0100] In one implementation, the first control module can obtain a first address from the bus's address channel. For example, if the first access is a read access, the first control module can obtain a first address from the bus's read address channel, and if the first access is a write access, the first control module can obtain a first address from the bus's write address channel.

[0101] In step S120, the first address range corresponding to the first address is determined.

[0102] Furthermore, if the second hardware unit 20 includes multiple memories 200, or if the memories 200 within the second hardware unit 20 are allocated and used by multiple operating systems, the second hardware unit 20 can include multiple address ranges. In one implementation, the first address can be matched to each of the multiple address ranges to determine the first address range corresponding to the first address.

[0103] Table 1 illustrates the correspondence between multiple memory locations 200, multiple address ranges, and multiple operating systems of the second hardware unit 20, using the example that the second hardware unit 20 includes memory locations 200-1 to 200-3.

[0104] [Table 1]

[0105] Referring to Table 1, for example, if the first address is 0×1500, the corresponding first address range is address range 1; if the first address is 0×2500, the corresponding first address range is address range 22; and if the first address is 0×3600, the corresponding first address range is address range 32.

[0106] In step S130, the bandwidth of the first access is controlled based on the current bandwidth of the first address range.

[0107] Controlling the bandwidth of a first access may also be called controlling the first access, or it may be called performing transmission control over the first access. Methods for controlling the bandwidth of a first access include, but are not limited to, transmitting the first access or blocking the first access.

[0108] The current bandwidth of the first address range may be the amount of data transmitted by the first address range per unit time at the current time or current time period (e.g., at least one current clock cycle), or the throughput of the first address range per unit time, and the unit of the current bandwidth may be, for example, bps, kbps, Mbps, Gbps, etc.

[0109] For example, if the clock period is 1 ms and the amount of data transmitted within one clock period for the first address range is 1 Gb, then the current bandwidth of the first address range is 1000 Gbps.

[0110] Alternatively, the current bandwidth of the first address range can be described as the total bandwidth that each functional module 11 accesses to the first address range at the current time or time zone.

[0111] For example, if, within the current clock cycle, three functional modules 11 access addresses within a first address range, with bandwidths of 10 Gbps, 15 Gbps, and 20 Gbps respectively, then the current bandwidth of the first address range is 45 Gbps.

[0112] Since each address range has a corresponding bandwidth resource, the usage status of the bandwidth resource in the first address range can be determined based on the current bandwidth of the first address range. For example, it can be determined whether or not there is idle bandwidth resource in the first address range. Furthermore, the bandwidth of the first access can be controlled. For example, if there is idle bandwidth resource in the first address range, the first access can be transmitted, and if there is no idle bandwidth resource in the first address range, the first access can be blocked.

[0113] The method according to the embodiment of this disclosure determines a first address range corresponding to the first address of the first access, utilizes the correspondence between the address range and the operating system, and controls the bandwidth of the first access based on the current bandwidth of the first address range. This enables control of the bandwidth by which the operating system accesses the second hardware unit 20 corresponding to the first address range, and by matching the bandwidth by which the operating system accesses the second hardware unit 20 with the bandwidth resources obtained by the operating system, access delays can be reduced, data waiting can be decreased, and the execution efficiency of the processor and the performance of the operating system can be improved.

[0114] Figure 5 is a flowchart of step S130 of a bandwidth control method according to one exemplary embodiment of the present disclosure.

[0115] As shown in Figure 5, in one embodiment, step S130 may include steps S131 to S132.

[0116] In step S131, a first bandwidth threshold corresponding to the first address range is determined.

[0117] The first bandwidth threshold can be the maximum bandwidth allowed when an operating system corresponding to a first address range accesses that first address range.

[0118] In one implementation, the first bandwidth threshold corresponding to the first address range can be less than or equal to the bandwidth resource corresponding to the first address range. Note that the bandwidth resources corresponding to different address ranges may be the same or different, so the first bandwidth thresholds corresponding to different address ranges may be the same or different.

[0119] For example, if the first address range is address range 1 and the bandwidth resource corresponding to the first address range is 50 Gbps, then the first bandwidth threshold could be 50 Gbps, 45 Gbps, etc.

[0120] Furthermore, the bandwidth resources corresponding to each address range may be fixed and unchanging, or they may change dynamically. Therefore, when the bandwidth resources corresponding to a certain address range change, the first bandwidth threshold corresponding to that address range can also change. In other words, for any one address range, the first bandwidth threshold corresponding to it may be a fixed and unchanging value, or it may be a dynamically changing value.

[0121] In step S132, the bandwidth of the first access is controlled based on the first bandwidth threshold and the current bandwidth of the first address range.

[0122] In one implementation, a first bandwidth threshold can be compared with the current bandwidth value of a first address range. If the current bandwidth of the first address range is less than the first bandwidth threshold, it indicates that there are idle bandwidth resources in the first address range, and the first access can be transmitted. If the current bandwidth of the first address range is greater than or equal to the first bandwidth threshold, it indicates that there are no idle bandwidth resources in the first address range, and the first access can be blocked.

[0123] For example, assuming a first bandwidth threshold of 50 Gbps, if the current bandwidth of a first address range is 45 Gbps, it indicates that there is idle bandwidth resources available in the first address range for transmitting a first access, and in such a case, the first control module can transmit the first access to the downstream bus 30 so that the first access is transmitted to the first address via the downstream bus 30.

[0124] For example, assuming a first bandwidth threshold of 50 Gbps, if the current bandwidth of the first address range is 55 Gbps, this indicates that there are no idle bandwidth resources available to transmit the first access to the first address range. In such a case, the first control module can block the first access so that it is not transmitted to the downstream bus 30. Subsequently, if the current bandwidth of the first address range falls below 50 Gbps, the first control module can transmit the first access so that it is transmitted to the first address via the downstream bus 30.

[0125] The method according to the embodiments of this disclosure controls the bandwidth of a first access based on a first bandwidth threshold corresponding to a first address range and the current bandwidth of the first address range, thereby transmitting the first access downstream when there are idle resources in the first address range, blocking it when there are no idle resources in the first address range, and matching the bandwidth used by each operating system to access the first address range with the bandwidth resources corresponding to the first address range.

[0126] Figure 6 is a flowchart of step S131 of a bandwidth control method according to one exemplary embodiment of the present disclosure.

[0127] As shown in Figure 6, in one embodiment, step S131 may include steps S1311 to S1312.

[0128] In step S1311, a first bandwidth level corresponding to the first address range is obtained.

[0129] In one implementation, one bandwidth level can be pre-configured for each address range.

[0130] Each address range may include at least one selectable bandwidth level, also known as a bandwidth level indication or bandwidth indication information, and is not specifically limited here. The bandwidth levels of different address ranges may be the same or different. When specifically configured, the bandwidth level of each address range can be reasonably determined depending on factors such as the bandwidth resources corresponding to each address range. The bandwidth level corresponding to each address range may be fixed and unchanging, or it may change dynamically. For example, if the bandwidth resources allocated to one address range change, the bandwidth level corresponding to this address range may change accordingly.

[0131] In one implementation, the bandwidth level corresponding to each address range can be set in a register. Therefore, the first control module can read the bandwidth levels corresponding to each address range from the register and, based on the read information, determine the first bandwidth level corresponding to the first address range.

[0132] For example, an address range may have five selectable bandwidth levels, for instance, bandwidth levels 1 through 5, where different bandwidth levels can be represented by different numerical values ​​(e.g., 1 through 5) in a register. Bandwidth level 1 may be the lowest level, bandwidth level 2 a relatively low level, bandwidth level 3 a medium level, bandwidth level 4 a relatively high level, and bandwidth level 5 the highest level. The number of selectable bandwidth levels across different address ranges may be the same or different, and is not specifically limited here.

[0133] Table 2 illustrates the bandwidth levels corresponding to multiple address ranges. The values ​​shown in Table 2 are for illustrative purposes only and do not specifically limit the embodiments of this disclosure.

[0134] [Table 2]

[0135] In other words, if the first address range is address range 1, then based on Table 2, the first control module can determine that the first bandwidth level corresponding to the first address range is bandwidth level 1.

[0136] Figure 7 is a schematic diagram showing how a bandwidth control module 40 according to one embodiment of the present disclosure acquires a bandwidth level.

[0137] As shown in Figure 7, in one implementation, an integrated circuit (e.g., SoC 100) can include multiple registers corresponding to the number of address ranges. Each register is for storing the bandwidth level corresponding to one address range. Exemplaryly, register 1 may store the bandwidth level corresponding to address range 1, register 2 may store the bandwidth level corresponding to address range 2, and register 3 may store the bandwidth level corresponding to address range 3. Each bandwidth control module 40 (e.g., bandwidth control module 40-1 to bandwidth control module 40-N) can read the bandwidth level in each register.

[0138] In one implementation, bandwidth levels corresponding to multiple address ranges may be stored in the same register, thereby reducing the number of registers and lowering the hardware complexity of the integrated circuit.

[0139] In one implementation, the bandwidth control module 40 can read the bandwidth level in each register when it receives an access from the function module 11. Alternatively, the bandwidth control module 40 can periodically read the bandwidth level in each register. For example, a timer can be placed in the bandwidth control module 40, which periodically times out for a preset duration, and the bandwidth control module 40 can read the bandwidth level in each register in response to the timer's timeout signal.

[0140] In step S1312, based on the first bandwidth level, the first bandwidth threshold is determined from the correspondence between at least one bandwidth level corresponding to the first address range and at least one bandwidth threshold.

[0141] In one implementation, each address range can be assigned a correspondence between at least one bandwidth level and at least one bandwidth threshold, and each bandwidth level can correspond to one bandwidth threshold. The same address range will have different bandwidth thresholds corresponding to different bandwidth levels.

[0142] In one implementation, a register can store the correspondence between at least one bandwidth level and at least one bandwidth threshold corresponding to each address range. Therefore, when a first bandwidth level corresponding to a first address range is obtained, the bandwidth threshold corresponding to the first bandwidth level can be indexed from the correspondence between at least one bandwidth level and at least one bandwidth threshold corresponding to the first address range. This indexed bandwidth threshold is the first bandwidth threshold corresponding to the first address range.

[0143] As an example, the correspondence between at least one bandwidth level and at least one bandwidth threshold corresponding to address range 1 is shown in Table 3. Note that the values ​​shown in Table 3 are for illustrative purposes only and do not specifically limit the embodiments of this disclosure.

[0144] [Table 3]

[0145] According to Table 3, if the first address range is address range 1 and the first bandwidth level is bandwidth level 1, then it can be indexed that the bandwidth threshold corresponding to bandwidth level 1 is 60 Gbps, and therefore it can be determined that the first bandwidth threshold corresponding to address range 1 is 60 Gbps. In this case, if the current bandwidth of address range 1 is less than 60 Gbps, the first control module transmits the first access, and if the current bandwidth of address range 1 is 60 Gbps or greater, the first control module blocks the first access.

[0146] In contrast, if the first address range is address range 1 and the first bandwidth level is bandwidth level 4, then we can index that the bandwidth threshold corresponding to bandwidth level 4 is 90 Gbps, and therefore we can determine that the first bandwidth threshold corresponding to address range 1 is 90 Gbps. In this case, if the current bandwidth of address range 1 is less than 90 Gbps, the first control module transmits the first access, and if the current bandwidth of address range 1 is 90 Gbps or greater, the first control module blocks the first access.

[0147] As can be seen from the above, for any one address range, each operating system can control the bandwidth it accesses by adjusting the first bandwidth level corresponding to that address range.

[0148] Since each bandwidth level corresponds to one bandwidth threshold, for any one address range, the bandwidth threshold corresponding to any one address range can be determined based on the bandwidth level corresponding to any one address range. In other words, the bandwidth level serves to indicate the bandwidth threshold. In some implementations, in addition to using the bandwidth level, other information such as flag bits or the register address where the bandwidth threshold is stored can be used to indicate the bandwidth threshold, and the embodiments of this disclosure are not limited to these.

[0149] Furthermore, since the bandwidth resources corresponding to different address ranges can be the same or different, the bandwidth thresholds corresponding to different address ranges can be the same or different at the same bandwidth level.

[0150] Table 4 shows cases where the bandwidth thresholds are the same or different for different address ranges at the same bandwidth level. Note that the values ​​shown in Table 4 are simply illustrative and do not limit the embodiments of this disclosure.

[0151] [Table 4]

[0152] According to Table 4, when the first bandwidth level corresponding to both address range 1 and address range 21 is bandwidth level 1, the first bandwidth threshold corresponding to address range 1 is 60 Gbps, and the first bandwidth threshold corresponding to address range 21 is 10 Gbps. Therefore, when the current bandwidth of address range 1 is 30 Gbps, access to address range 1 is transmitted to the downstream bus 30. In contrast, when the current bandwidth of address range 21 is 30 Gbps, access to address range 21 is blocked.

[0153] As can be seen from the above, the same bandwidth level can correspond to different first bandwidth thresholds for different address ranges, enabling the operating system to differentiate and control the bandwidth used to access different address ranges.

[0154] Figure 8 is another flowchart of a bandwidth control method according to one exemplary embodiment of the present disclosure.

[0155] In one embodiment, this method can be performed by any one of the bandwidth control modules 40 of the bandwidth control system. As shown in Figure 8, this method may include the following steps S410 to S450.

[0156] In step S410, when an access transmitted by the function module 11-x is received, the address range x of the access is determined.

[0157] For example, based on steps S110 and S120, the access address range x can be determined.

[0158] In step S420, the bandwidth level x corresponding to the address range x is obtained.

[0159] For example, based on step S1311, the bandwidth level x corresponding to the address range x can be obtained.

[0160] In step S430, the bandwidth threshold x corresponding to the address range x is determined based on the bandwidth level x corresponding to the address range x.

[0161] For example, based on step S1312, the bandwidth threshold x corresponding to the address range x can be determined.

[0162] In step S440, it is determined whether the current bandwidth x of the address range x is greater than or equal to the bandwidth threshold x.

[0163] If the current bandwidth x is greater than or equal to the bandwidth threshold x, the bandwidth control module 40-x can block this access. If the current bandwidth x is less than the bandwidth threshold x, the bandwidth control module 40-x can perform step S450 to transmit this access to the downstream bus 30.

[0164] Since different bandwidth control modules 40 correspond to different function modules 11, and different function modules 11 correspond to different operating systems, multiple bandwidth control modules 40 can simultaneously control the bandwidth used by multiple operating systems to access the second hardware unit 20 so that the bandwidth used by each operating system to access the second hardware unit 20 is matched to the bandwidth resources obtained by each operating system.

[0165] Figure 9 is a flowchart of a bandwidth control method according to another exemplary embodiment of the present disclosure.

[0166] In one embodiment, if different functional modules correspond to different operating systems, this bandwidth control method may include the following steps S510 to S530.

[0167] In step S510, the first operating system that manages the first functional module is determined.

[0168] In one implementation, after the first operating system calls the first functional module, the first functional module generates a logical address, and the Memory Management Unit (MMU) can map the logical address generated by the first functional module to a physical address in the second hardware unit 20, which is the physical address corresponding to the first operating system.

[0169] In one implementation, the first control module can map the logical address of the first functional module to the physical address of the second hardware unit 20, and based on this physical address, it can determine the first operating system that manages the first functional module.

[0170] Of course, the first control module can also determine the first operating system corresponding to the first functional module according to other methods, for example, by having a memory management unit transmit the ID of the first operating system corresponding to the first functional module to the first control module, and the embodiments of this disclosure are not limited thereto.

[0171] In step S520, a first bandwidth level corresponding to the first operating system is obtained.

[0172] The first bandwidth level can represent the bus bandwidth allocated to the first operating system. For example, the more bus bandwidth allocated to the first operating system, the higher the first bandwidth level corresponding to the first operating system; and the less bus bandwidth allocated to the first operating system, the lower the first bandwidth level corresponding to the first operating system.

[0173] In one implementation, the instruction module 50 can determine the bandwidth level corresponding to the operating system based on the usage status of the command queue in the bandwidth sharing module 60.

[0174] The command queue usage status may include any parameter values ​​or indicator information that can display the idleness / saturation level of the command queue.

[0175] In one implementation, the usage status of a command queue may include a first status value, which can indicate the idleness or saturation level of the command queue. A command queue may contain multiple channel entries, each channel which can cache one access command, for example, a read channel for caching read access commands and a write channel for caching write access commands. A channel in which an access command is cached is an unavailable channel, and a channel in which an access command is not cached is an available channel.

[0176] For example, if a command queue contains 10 channels and commands are cached in 8 channels, the number of available channels in the command queue is 2 and the number of unavailable channels is 8. If commands are cached in 2 channels, the number of available channels in the command queue is 8 and the number of unavailable channels is 2.

[0177] In one implementation, the first state value may include the number of available channels in the command queue (also known as the "idle channel count") or the number of unavailable channels (also known as the "non-idle channel count").

[0178] Furthermore, if the first status value of the command queue includes the number of available channels in the command queue, a larger first status value indicates a higher idle level of the command queue and more idle bandwidth resources for the second hardware unit 20, while a smaller first status value indicates a higher saturation level of the command queue and less idle bandwidth resources for the second hardware unit 20. If the first status value of the command queue includes the number of unavailable channels in the first queue, a larger first status value indicates a higher saturation level of the command queue and less idle bandwidth resources for the second hardware unit 20, while a smaller first status value indicates a higher idle level of the command queue and more idle bandwidth resources for the second hardware unit 20.

[0179] In one implementation, the bandwidth sharing module 60 can periodically transmit a first status value of the command queue to the instruction module 50. Alternatively, when the bandwidth sharing module 60 detects the ingress or egress of a command to or from the command queue, it can transmit a first status value of the command queue to the instruction module 50, and this first status value includes the latest number of available or unavailable channels in the command queue.

[0180] In one implementation, at least one bandwidth level can be pre-configured for each operating system, and the correspondence between the first state value of the command queue and each bandwidth level of the operating system can be pre-configured.

[0181] In a multi-operating system scenario, the tasks of different operating systems may differ, and the bandwidth requirements for the second hardware unit 20 may also differ. Therefore, for the same first state value, the bandwidth levels corresponding to each operating system may be the same or different. Specifically, they can be set reasonably according to the task requirements of each operating system, and are not specifically limited here.

[0182] In one implementation, different first state values ​​correspond to different bandwidth levels. For example, a command queue contains 10 channels, and the first state value (e.g., number of available channels) can contain 10 values, correspondingly these 10 first state values ​​correspond to 10 bandwidth levels. For example, the number of available channels is 10, and the corresponding bandwidth level is 1; the number of available channels is 9, and the corresponding bandwidth level is 2.

[0183] In one implementation, different state value ranges correspond to different bandwidth levels. A first state value is divided into multiple state value ranges, each state value range containing at least one first state value, and each state value range corresponds to one bandwidth level.

[0184] As an example, assuming that the command queue includes 10 channels and the first status value includes the number of available channels, the correspondence between the status value range and the bandwidth level of each operating system can be as shown in Table 5. Note that the values ​​shown in Table 5 are for illustrative purposes only and do not specifically limit the embodiments of this disclosure.

[0185] [Table 5]

[0186] As shown in Table 5, the bandwidth levels corresponding to operating system 1 include 1 to 2, with corresponding state value ranges of 6 to 10 available channels and 1 to 5 available channels, respectively. The bandwidth levels corresponding to operating system 2 include 1 to 3, with corresponding state value ranges of 8 to 10 available channels, 5 to 7 available channels, and 1 to 4 available channels, respectively. The bandwidth levels corresponding to operating system 3 include 1 to 5, with corresponding state value ranges of 9 to 10 available channels, 7 to 8 available channels, 5 to 6 available channels, 3 to 4 available channels, and 1 to 2 available channels, respectively.

[0187] Therefore, the instruction module 50 can determine the bandwidth level corresponding to the acquired first state value from a plurality of bandwidth levels corresponding to each operating system, based on the first state value transmitted by the bandwidth sharing module 60.

[0188] For example, if the number of available channels included in the first state value is 6, the instruction module 50 can determine that the bandwidth level corresponding to operating system 1 is 1, the bandwidth level corresponding to operating system 2 is 2, and the bandwidth level corresponding to operating system 3 is 3.

[0189] For example, the correspondence between the bandwidth level of each operating system and a first state value can be stored in a register corresponding to the instruction module 50.

[0190] In one implementation, the instruction module 50 can determine the bandwidth level corresponding to each operating system and then write the bandwidth level corresponding to each operating system to the corresponding register. For example, the instruction module 50 can generate a corresponding bandwidth level instruction based on the bandwidth level corresponding to each operating system and write this bandwidth level instruction to the corresponding register. The instruction module 50 can generate one bandwidth level instruction, which is intended to specify the bandwidth level corresponding to each operating system. Alternatively, the instruction module 50 can generate multiple bandwidth level instructions, each of which specifies the bandwidth level corresponding to one operating system.

[0191] In one implementation, the first control module can read the bandwidth level corresponding to each operating system from the registers corresponding to the instruction module 50.

[0192] In one implementation, the first control module can read a bandwidth level instruction from a register corresponding to the instruction module 50, and based on this bandwidth level instruction, determine the bandwidth level corresponding to each operating system.

[0193] In one implementation, the first control module can periodically read the bandwidth level corresponding to each operating system from the register corresponding to the instruction module 50.

[0194] In one implementation, the instruction module 50 can write the bandwidth level of each operating system to a register and then transmit a read command to the first control module. Based on this read command, the first control module can read the bandwidth level corresponding to each operating system from the register corresponding to the instruction module 50.

[0195] In one implementation, the first control module can determine the first bandwidth level corresponding to the first operating system based on the bandwidth levels corresponding to each operating system obtained. For example, if the first control module obtains that the bandwidth level corresponding to OS1 is 1, the bandwidth level corresponding to OS2 is 2, and the bandwidth level corresponding to OS3 is 1, and the first operating system is OS1, then the first control module can determine that the bandwidth level corresponding to the first operating system is 1.

[0196] In step S530, the first bandwidth through which the first functional module accesses the second hardware unit is controlled based on a first bandwidth level.

[0197] The first bandwidth is the bandwidth through which the first functional module accesses the second hardware unit 20.

[0198] In one implementation, when the first functional module accesses the second hardware unit 20 via the first control module, the first control module can throttle this access based on a first bandwidth level corresponding to the first operating system, thereby controlling the first bandwidth through which the first functional module accesses the second hardware unit 20.

[0199] As can be seen from the above technical configuration, the method according to the embodiment of this disclosure can avoid congestion in access to the second hardware unit 20 of the function module 11 by throttling each function module 11 corresponding to the operating system based on the bandwidth level corresponding to the operating system.

[0200] Figure 10 is a flowchart of step S530 of a bandwidth control method according to one exemplary embodiment of the present disclosure.

[0201] As shown in Figure 10, in one implementation, step S530 may include the following steps S531 to S532.

[0202] In step S531, a first bandwidth threshold corresponding to the first functional module is determined based on the first bandwidth level.

[0203] The first bandwidth threshold is the maximum bandwidth that the first functional module can allow when accessing the second hardware unit, provided that the first operating system corresponding to the first functional module supports the first bandwidth level.

[0204] In one implementation, at least one bandwidth threshold can be pre-set for each functional module 11, and the bandwidth level corresponding to each bandwidth threshold can be pre-set.

[0205] A higher bandwidth level indicates that more memory bandwidth is allocated to the operating system, a larger maximum allowable bandwidth for the function module 11 to access the second hardware unit 20, and a larger bandwidth threshold for the function module 11. A lower bandwidth level indicates that less memory bandwidth is allocated to the operating system, a smaller maximum allowable bandwidth for the function module 11 to access the second hardware unit 20, and a smaller bandwidth threshold for the function module 11.

[0206] Furthermore, since the performance requirements of different functional modules 11 differ, the bandwidth required when different functional modules 11 access the second hardware unit 20 may be the same or different for the same operating system. Therefore, when pre-setting bandwidth thresholds for each functional module 11, the bandwidth threshold corresponding to each functional module 11 can be determined according to the performance requirements of this functional module 11 and other functional modules 11 that may support the same operating system as this functional module 11.

[0207] In one implementation, the performance requirements of the functional module 11 can be expressed by the priority of the functional module 11. Among multiple functional modules 11 corresponding to the same operating system, a higher priority for a functional module 11 indicates that it needs to preferentially satisfy the bandwidth required for accessing the second hardware unit 20, meaning that a higher bandwidth threshold needs to be set for this functional module 11 when corresponding to the same bandwidth level. On the other hand, a lower priority for a functional module 11 indicates that it can satisfy the bandwidth required for accessing the second hardware unit 20 later, meaning that a lower bandwidth threshold can be set for this functional module 11 when corresponding to the same bandwidth level.

[0208] In one implementation, the performance requirements of the functional module 11 can be expressed by the amount of access data generated when the functional module 11 performs a task. In multiple functional modules 11 corresponding to the same operating system, the higher the throughput amount at which the functional module 11 performs tasks required for business operations, the more bandwidth the functional module 11 needs to access the second hardware unit 20. To ensure the performance and efficiency of the functional module 11 when performing tasks, more bandwidth needs to be allocated to this functional module 11, meaning that a higher bandwidth threshold needs to be set for this functional module 11 when corresponding to the same bandwidth level. On the other hand, the lower the throughput amount at which the functional module 11 performs tasks required for business operations, the less bandwidth the functional module 11 needs to access the second hardware unit 20. That is, the performance and efficiency can be ensured when this functional module 11 performs tasks with relatively little bandwidth, meaning that a lower bandwidth threshold can be set for this functional module 11 when corresponding to the same bandwidth level.

[0209] In a multi-operating system scenario, different operating systems may have different business needs. Therefore, when the same functional module 11 is managed by different operating systems, or when the same functional module 11 corresponds to different operating systems, the bandwidth required to access the second hardware unit 20 may be the same or different. For example, when functional module 11-1 is managed by operating system OS1 (i.e., functional module 11-1 corresponds to operating system OS1), the bandwidth required to access the second hardware unit 20 is relatively high. On the other hand, when functional module 11-1 is managed by operating system OS2 (i.e., functional module 11-1 corresponds to operating system OS2), the bandwidth required to access the second hardware unit 20 is relatively low. Specifically, the bandwidth threshold corresponding to functional module 11 can be reasonably set according to the business needs of each operating system, and this is not specifically limited here.

[0210] In one implementation, the bandwidth threshold corresponding to the functional module 11 can be the same for the same bandwidth level corresponding to different operating systems.

[0211] For illustrative purposes, the correspondence between bandwidth levels and bandwidth thresholds can be as shown in Table 6. Note that the values ​​shown in Table 6 are for illustrative purposes only and do not specifically limit the embodiments of this disclosure.

[0212] [Table 6]

[0213] As shown in Table 6, if we take the example that the functional module 11 currently corresponds to operating system 1 and the bandwidth level currently corresponding to operating system 1 is 1, then we can determine that the bandwidth threshold corresponding to functional module 11 is 70 Gbps. If we take the example that the functional module 11 currently corresponds to operating system 2 and the bandwidth level currently corresponding to operating system 2 is 2, then we can determine that the bandwidth threshold corresponding to functional module 11 is 50 Gbps.

[0214] In another implementation, for the same bandwidth level corresponding to different operating systems, the bandwidth threshold for the functional module 11 can differ. Depending on the operational demands of the operating system, for the same bandwidth level, if the bandwidth required by the functional module 11 to access the second hardware unit 20 is relatively large, the functional module 11 can support a higher bandwidth threshold, and if the bandwidth required by the functional module 11 to access the second hardware unit 20 is relatively small, the functional module 11 can support a lower bandwidth threshold.

[0215] In one implementation, the correspondence between bandwidth levels and bandwidth thresholds further includes identifier information for the operating system corresponding to this correspondence. The operating system identifier information is for identifying the operating system corresponding to the correspondence and may include the operating system's ID, address, name, etc. When the first control module determines the bandwidth threshold corresponding to the first functional module, it first determines the correspondence corresponding to the first operating system from each correspondence, and then determines the bandwidth threshold corresponding to the first functional module based on this correspondence.

[0216] For illustrative purposes, the correspondence between bandwidth levels and bandwidth thresholds can be as shown in Table 7. Note that the values ​​shown in Table 7 are for illustrative purposes only and do not specifically limit the embodiments of this disclosure.

[0217] [Table 7]

[0218] As shown in Table 7, if we take the example that the first functional module currently corresponds to operating system 1 and the bandwidth level corresponding to operating system 1 is 1, then the first control module can determine from each correspondence that the correspondence corresponding to operating system 1 is the correspondence between the bandwidth threshold and bandwidth level in the first column, based on the name of the first operating system (e.g., "OS1"). Based on this correspondence, the first control module can determine that the bandwidth threshold corresponding to bandwidth level 1 is 70 Gbps, meaning that the first bandwidth threshold corresponding to the first functional module is 70 Gbps. If we take the example that the first functional module currently corresponds to operating system 3 and the bandwidth level corresponding to operating system 3 is 3, then the first control module can determine from each correspondence that the correspondence corresponding to operating system 3 is the correspondence between the bandwidth threshold and bandwidth level in the third column, based on the name of the first operating system (e.g., "OS3"). Based on this correspondence, the first control module can determine that the bandwidth threshold corresponding to bandwidth level 3 is 40 Gbps, meaning that the first bandwidth threshold corresponding to the first functional module is 40 Gbps.

[0219] In one implementation, the correspondence between the bandwidth level and the bandwidth threshold corresponding to each functional module 11 can be stored in the register corresponding to the corresponding bandwidth control module 40. Each bandwidth control module 40 may correspond to one register, or multiple bandwidth control modules 40 may share a register; this is not limited to the above.

[0220] In step S532, the first bandwidth is controlled based on the first bandwidth threshold.

[0221] In one implementation, the first bandwidth is controlled to be less than or equal to the first bandwidth threshold.

[0222] In one implementation, when the first functional module accesses the second hardware unit 20 via the first control module, the first control module can throttle this access based on a first bandwidth threshold so that the first bandwidth used by the first functional module to access the second hardware unit 20 is less than or equal to the first bandwidth threshold.

[0223] For example, referring to the schematic diagram of dynamically controlling access bandwidth shown in Figure 11, operating system 1 corresponds to function module 11-1, operating system 2 corresponds to function module 11-2, function module 11-1 corresponds to bandwidth control module 40-1, and function module 11-2 corresponds to bandwidth control module 40-2. If the bandwidth level corresponding to operating system 1 is 1 and the bandwidth level corresponding to operating system 2 is 2, the instruction module 50 transmits the bandwidth levels corresponding to operating systems 1 and 2 to bandwidth control modules 40-1 and 40-2, respectively, for example, the bandwidth level for OS1 is 1 and the bandwidth level for OS2 is 2. Correspondingly, each bandwidth control module can obtain the bandwidth levels corresponding to operating systems 1 and 2. For example, bandwidth control module 40-1 can obtain that the bandwidth level for OS1 is 1 and the bandwidth level for OS2 is 2. Bandwidth control module 40-2 can obtain that the bandwidth level for OS1 is 1 and the bandwidth level for OS2 is 2. Each bandwidth control module obtains the bandwidth level corresponding to the operating system corresponding to the corresponding function module. Bandwidth control module 40-1 can determine that the bandwidth level corresponding to operating system 1 is 1, since the bandwidth level of OS1 is 1 and the bandwidth level of OS2 is 2. Bandwidth control module 40-2 can determine that the bandwidth level corresponding to operating system 2 is 2, since the bandwidth level of OS1 is 1 and the bandwidth level of OS2 is 2. Each bandwidth control module determines the bandwidth threshold corresponding to the corresponding function module based on the correspondence between the bandwidth level corresponding to the corresponding function module and the bandwidth threshold.Referring to Table 7, the bandwidth control module 40-1 can determine the correspondence between the bandwidth level and the bandwidth threshold when the functional module 11-1 corresponds to operating system 1, based on the name of operating system 1. Based on this correspondence, the bandwidth control module 40-1 can determine that the bandwidth threshold currently corresponding to functional module 11-1 is 70 Gbps. The bandwidth control module 40-2 can determine the correspondence between the bandwidth level and the bandwidth threshold when the functional module 11-2 corresponds to operating system 2, based on the name of operating system 2. Based on this correspondence, the bandwidth control module 40-2 can determine that the bandwidth threshold currently corresponding to functional module 11-2 is 30 Gbps. Each bandwidth control module controls the bandwidth over which the functional module accesses the second hardware unit 20, based on the bandwidth threshold corresponding to the functional module. When functional module 11-1 accesses the second hardware unit 20 via the bandwidth control module 40-1, the bandwidth control module 40-1 throttles this access based on the bandwidth threshold of 70 Gbps, so that the bandwidth transmitted over the bus for this access is 70 Gbps or less. When access to the second hardware unit 20 of the functional module 11-2 is made via the bandwidth control module 40-2, the bandwidth control module 40-2 throttles this access based on a bandwidth threshold of 30 Gbps, so that the bandwidth transmitted over the bus for this access is 30 Gbps or less.

[0224] In another example, referring to the bandwidth control system shown in Figure 12, operating system 1 corresponds to function modules 11-1 and 11-2, function module 11-1 corresponds to bandwidth control module 40-1, and function module 11-2 corresponds to bandwidth control module 40-2. When the bandwidth level corresponding to operating system 1 is 1, the instruction module 50 transmits the bandwidth level corresponding to operating system 1 to bandwidth control modules 40-1 and 40-2, respectively. For example, the bandwidth level of OS1 is 1. Correspondingly, each bandwidth control module can obtain the bandwidth level corresponding to operating system 1. For example, bandwidth control module 40-1 can obtain that the bandwidth level of OS1 is 1, and bandwidth control module 40-2 can obtain that the bandwidth level of OS1 is 1. Each bandwidth control module obtains the bandwidth level corresponding to the operating system corresponding to the corresponding function module. Bandwidth control module 40-1 can confirm that the bandwidth level corresponding to operating system 1 is 1. Bandwidth control module 40-2 can confirm that the bandwidth level corresponding to operating system 1 is 1. Each bandwidth control module determines the bandwidth threshold corresponding to the corresponding functional module based on the correspondence between the bandwidth level and bandwidth threshold corresponding to the corresponding functional module. Referring to Table 7, bandwidth control module 40-1 can determine the correspondence between the bandwidth level and bandwidth threshold when functional module 11-1 corresponds to operating system 1, based on the name of operating system 1. Based on this correspondence, bandwidth control module 40-1 can determine that the bandwidth threshold currently corresponding to functional module 11-1 is 70 Gbps.The bandwidth control module 40-2 can determine the correspondence between the bandwidth level and the bandwidth threshold when the function module 11-2 corresponds to the operating system 1, based on the name of the operating system 1. Based on this correspondence, the bandwidth control module 40-2 can determine that the bandwidth threshold currently corresponding to the function module 11-2 is 70 Gbps. Each bandwidth control module controls the bandwidth over which the function module accesses the second hardware unit 20, based on the bandwidth threshold corresponding to the function module. When the function module 11-1 accesses the second hardware unit 20 via the bandwidth control module 40-1, the bandwidth control module 40-1 throttles this access based on the bandwidth threshold of 70 Gbps so that the bandwidth transmitted over the bus for this access is 70 Gbps or less. When the function module 11-2 accesses the second hardware unit 20 via the bandwidth control module 40-2, the bandwidth control module 40-2 throttles this access based on the bandwidth threshold of 70 Gbps so that the bandwidth transmitted over the bus for this access is 70 Gbps or less.

[0225] During the execution of each operating system, the amount of access each operating system has to the second hardware unit 20 changes dynamically, and correspondingly, the memory bandwidth allocated to each operating system also changes dynamically. Therefore, the bandwidth level corresponding to each operating system also changes dynamically. As a result, the bandwidth threshold that the bandwidth control module 40 determines for the function module 11 also changes dynamically. In other words, the bandwidth control module 40 dynamically controls the bandwidth that the function module 11 uses to access the second hardware unit 20.

[0226] In one implementation, when the system state of the operating system changes, for example, when the first state value of the command queue in the bandwidth sharing module 60 changes, the instruction module 50 re-determines the bandwidth level corresponding to each operating system based on the changed first state value and transmits the latest bandwidth level to the first control module. The first control module obtains the latest bandwidth level corresponding to the first function module and re-determines the first bandwidth threshold corresponding to the first function module based on this latest bandwidth level. Based on this re-determined first bandwidth threshold, the first control module controls the first bandwidth through which the first function module accesses the second hardware unit 20.

[0227] For example, function module 11-1 corresponds to operating system 2, and bandwidth control module 40-1, corresponding to function module 11-1, determines, for example, that the bandwidth threshold corresponding to function module 11-1 is 70Gbps based on bandwidth level 1 corresponding to operating system 2, and controls function module 11-1 so that the bandwidth used to access the second hardware unit 20 is 70Gbps or less. If the first state value of the command queue in bandwidth sharing module 60 changes, such as when memory bandwidth is reallocated to operating system 2, instruction module 50 re-determines the bandwidth level of operating system 2 based on the changed first state value and transmits the latest bandwidth level corresponding to operating system 2 to bandwidth control module 40-1. For example, the latest bandwidth level corresponding to operating system 2 is 2. After obtaining the latest bandwidth level corresponding to operating system 2, bandwidth control module 40-1 re-determines, for example, that the bandwidth threshold corresponding to function module 11-1 is 50Gbps based on bandwidth level 2, and controls function module 11-1 so that the bandwidth used to access the second hardware unit 20 is 50Gbps or less.

[0228] Based on the above, this implementation allows the bandwidth used by the functional module 11 to access the second hardware unit 20 to adapt to the memory bandwidth dynamically allocated by the operating system.

[0229] Furthermore, while each operating system is running, the tasks performed by each operating system change dynamically, and accordingly, the function module 11 corresponding to the operating system also changes dynamically. As a result, the bandwidth level corresponding to the operating system that the function module 11 corresponds to also changes dynamically. Therefore, the bandwidth threshold that the bandwidth control module 40 determines for the function module 11 also changes dynamically. In other words, the bandwidth control module 40 dynamically controls the bandwidth that the function module 11 uses to access the second hardware unit 20.

[0230] In one implementation, if the operating system corresponding to the first functional module is changed, the first control module must re-determine the first bandwidth threshold corresponding to the first functional module based on the bandwidth level corresponding to the changed operating system, and control the bandwidth by which the first functional module accesses the second hardware unit 20 based on this re-determined first bandwidth threshold.

[0231] For example, if function module 11-1 corresponds to operating system 1, the bandwidth control module 40-1 corresponding to function module 11-1 determines, based on bandwidth level 1 corresponding to operating system 1, that the bandwidth threshold corresponding to function module 11-1 is, for example, 70 Gbps, and controls the bandwidth by which function module 11-1 accesses the second hardware unit 20 so that it is 70 Gbps or less. If function module 11-1 is changed to correspond to operating system 2, the bandwidth control module 40-1 obtains the bandwidth level (for example, 2) corresponding to operating system 2, and then, based on bandwidth level 2, determines again that the bandwidth threshold corresponding to function module 11-1 is, for example, 50 Gbps, and controls the bandwidth by which function module 11-1 accesses the second hardware unit 20 so that it is 50 Gbps or less.

[0232] Based on the above, this implementation allows the bandwidth used by the functional module 11 to access the second hardware unit 20 to adapt to the dynamically changing correspondence between the functional module 11 and the operating system.

[0233] In embodiments of this disclosure, the first control module may use a bandwidth throttling method to control the bandwidth used by the first functional module to access the second hardware unit 20, or it may use an outstanding request throttling method to control the bandwidth used by the first functional module to access the second hardware unit 20. Furthermore, the first control module may use a combination of bandwidth throttling and outstanding request throttling to control the bandwidth used by the first functional module to access the second hardware unit 20. Of course, the first control module may also use other throttling methods to control the bandwidth used by the first functional module to access the second hardware unit 20, and embodiments of this disclosure are not limited thereto. <Example device>

[0234] The bandwidth control method according to the embodiments of this disclosure has been introduced above. The integrated circuit (e.g., SoC 100) or the first hardware unit 10 in SoC 100 may include corresponding hardware and software for realizing the hardware functions in order to implement each function of this bandwidth control method.

[0235] As can be easily conceivable to those skilled in the art, referring to the steps of the bandwidth control methods described in each embodiment of the present disclosure, each embodiment of the present disclosure may be implemented in hardware form or in a combined form implemented in a software-driven manner. Whether a function is performed in hardware or in a software-driven manner depends on the specific application and design constraints of the technical configuration. Those skilled in the art may implement the described functions using different methods for each specific application, but such implementations should not be considered beyond the scope of the present disclosure.

[0236] Figure 13 is a schematic diagram of the structure of a bandwidth control device according to one exemplary embodiment of the present disclosure.

[0237] As shown in Figure 13, in one embodiment, the bandwidth control device 300 may include a first control module 310.

[0238] The first control module 310 is provided in correspondence with the first functional module of the first hardware unit 10. The first control module 310 is configured to obtain a first address for the first access of the second hardware unit 20 of the first functional module, the second hardware unit 20 includes at least one address range, and the first control module 310 is further configured to determine a first address range corresponding to the first address, and the first control module 310 is further configured to control the bandwidth of the first access based on the current bandwidth of the first address range.

[0239] In one implementation, the first control module 310 is configured to determine a first bandwidth threshold corresponding to a first address range and to control the bandwidth of a first access based on the first bandwidth threshold and the current bandwidth of the first address range.

[0240] In one implementation, the first control module 310 is configured to acquire a first bandwidth level corresponding to a first address range, and to determine a first bandwidth threshold based on the correspondence between at least one bandwidth level corresponding to the first address range and at least one bandwidth threshold, based on the first bandwidth level.

[0241] In one implementation, the bandwidth control device may further include a memory module 320. The memory module 320 stores bandwidth levels corresponding to at least one address range, for example, a first bandwidth level corresponding to a first address range. In one example, the memory module 320 may include one or more registers.

[0242] In one implementation, the first control module 310 is configured to obtain a first bandwidth level corresponding to a first address range from the storage module 320.

[0243] In one implementation, the first control module 310 is configured to transmit the first access when the current bandwidth of the first address range is less than the first bandwidth threshold, and to block the first access when the current bandwidth of the first address range is greater than or equal to the first bandwidth threshold.

[0244] According to the above technical configuration, the apparatus according to the embodiment of this disclosure utilizes the correspondence between address ranges and operating systems to control the bandwidth of a first access based on the current bandwidth of a first address range, thereby enabling the operating system corresponding to the first address range to control the bandwidth used to access the second hardware unit 20. By matching the bandwidth used by the operating system to access the second hardware unit 20 with the bandwidth resources obtained by the operating system, access delays can be reduced, data waiting can be decreased, and the execution efficiency of the processor and the performance of the operating system can be improved.

[0245] Figure 14 is a schematic diagram of the structure of a bandwidth control device according to another exemplary embodiment of the present disclosure.

[0246] As shown in Figure 14, in one embodiment, the bandwidth control device 300 includes a first control module 310.

[0247] The first control module 310 is provided in correspondence with the first function module of the first hardware unit 10. However, the first hardware unit 10 includes at least one function module 11, which is managed by at least one operating system, and the first hardware unit 10 is communicated to the second hardware unit 20.

[0248] The first control module 310 is configured to determine a first operating system for managing the first functional module, obtain a first bandwidth level corresponding to the first operating system, and control a first bandwidth for the first functional module to access the second hardware unit 20 based on the first bandwidth level.

[0249] In one implementation, the bandwidth control device may further include an instruction module 330, which is communicated to the first control module 310. The instruction module 330 is configured to generate bandwidth levels corresponding to at least one operating system, the bandwidth levels corresponding to at least one operating system including a first bandwidth level corresponding to a first operating system.

[0250] In one example, the instruction module 330 may be a bandwidth allocation module.

[0251] In one implementation, the bandwidth control device may further include a bandwidth sharing module that is communicated to the instruction module 330. The bandwidth sharing module has a corresponding register in which a command queue is stored, and this command queue may be for caching access commands (e.g., read access commands and write access commands) that each function module 11 uses to access the second hardware unit 20. The usage status of the command queue may include a first status value of the command queue. The magnitude of this first status value indicates the idleness or saturation of the command queue. The first status value may include the number of available or unavailable channels in the command queue. The bandwidth control device is configured to transmit the first status value of the command queue to the instruction module 330.

[0252] In one implementation, the instruction module 330 is configured to determine the corresponding bandwidth level based on the state of the operating system. For example, it determines the bandwidth level corresponding to each operating system based on a first state value.

[0253] In one implementation, the instruction module 330 is configured to write the bandwidth level corresponding to each operating system to the corresponding register.

[0254] In one implementation, the instruction module 330 is configured to generate a corresponding bandwidth level instruction based on the bandwidth level corresponding to each operating system and to write this bandwidth level instruction to the corresponding register. The instruction module 330 can generate one bandwidth level instruction, which is for indicating the bandwidth level corresponding to each operating system. Alternatively, the instruction module 330 can generate multiple bandwidth level instructions, each of which indicates the bandwidth level corresponding to one operating system.

[0255] In one implementation, the first control module 310 is configured to read the bandwidth levels corresponding to each operating system from the instruction module 330, for example, from the registers corresponding to the instruction module 330, and to determine the first bandwidth level corresponding to the first operating system from the read bandwidth levels corresponding to each operating system.

[0256] In one implementation, the first control module 310 is configured to determine a first bandwidth threshold corresponding to the first functional module based on a first bandwidth level, and to control the first bandwidth based on this first bandwidth threshold.

[0257] In one implementation, the first control module 310 is configured to determine a first bandwidth threshold corresponding to a first bandwidth level based on a correspondence between at least one bandwidth level and a bandwidth threshold.

[0258] In one implementation, the first control module 310 is configured to control the first bandwidth so that it is less than or equal to a first bandwidth threshold.

[0259] According to the above technical configuration, the apparatus according to the embodiment of the present disclosure can avoid access congestion by determining a bandwidth level corresponding to the operating system corresponding to the functional module 11, and then controlling the bandwidth by which the functional module 11 accesses the second hardware unit 20 based on this bandwidth level, thereby enabling the functional module 11 to access the second hardware unit 20 using bandwidth that matches the memory bandwidth allocated to the operating system. <Essential Integrated Circuit>

[0260] Embodiments of the present disclosure further provide an integrated circuit, which may be, for example, a SoC.

[0261] Figure 15 is a schematic diagram of the structure of an integrated circuit according to one exemplary embodiment of the present disclosure.

[0262] As shown in Figure 15, in one embodiment, the integrated circuit 1000 includes a first hardware unit 10 on which multiple operating systems are executed. The first hardware unit 10 may include at least one functional module 11, at least one functional module 11 being managed by at least one operating system, and the first hardware unit 10 is communicated to a second hardware unit 20. Each functional module 11 is for implementing one or more functions of the integrated circuit 1000. For example, a functional module 11 could be a CPU, GPU, NPU, ISP, DSP, etc.

[0263] In one implementation, each functional module 11 of the first hardware unit 10 can communicate with other hardware units (for example, a second hardware unit 20) and, for example, access the second hardware unit 20.

[0264] The second hardware unit 20 may include one or more memories 200 (e.g., flash memory) or other hardware units that communicate with the first hardware unit 10. Exemplarily, the second hardware unit 20 may be DRAM and / or SRAM. Correspondingly, the memory bandwidth includes the bandwidth of the DRAM bus (hereinafter referred to as "DRAM bandwidth") and / or the bandwidth of the SRAM bus (hereinafter referred to as "SRAM bandwidth").

[0265] In one implementation, at least one memory 200 in the second hardware unit 20 can be located in the integrated circuit 1000 and become part of the integrated circuit 1000.

[0266] In one embodiment, the integrated circuit 1000 further includes at least one bandwidth control module 40 provided in one-to-one correspondence with at least one functional module 11, each bandwidth control module 40 being communicated to the functional module 11 corresponding to itself, and at least one bandwidth control module 40 being configured to implement, for example, steps of the bandwidth control method according to an embodiment of the present disclosure, in order to implement the functions of the first control module in the bandwidth control device.

[0267] In one example, the bandwidth control module 40 can obtain the address of an access to the second hardware unit 20 of the functional module 11 that is connected to it, determine the address range corresponding to the address, and control the bandwidth of this access based on the current bandwidth of this address range.

[0268] According to the above technical configuration, the integrated circuit according to the embodiment of the present disclosure utilizes the correspondence between the address range and the operating system, and based on the current bandwidth of the address range, controls the bandwidth for the operating system corresponding to the address range to access the hardware unit, so as to match the bandwidth for the operating system to access the second hardware unit 20 with the bandwidth resource obtained by the operating system, reduce the access delay, reduce the data waiting, and improve the execution efficiency of the processor and the performance of the operating system.

[0269] FIG. 16 is a schematic diagram of the structure of an integrated circuit according to another exemplary embodiment of the present disclosure.

[0270] As shown in FIG. 16, in one embodiment, the integrated circuit 1000 further includes an instruction module 50 on the basis of the configuration shown in FIG. 15. The instruction module 50 can be a bandwidth allocation module. The instruction module 50 is for generating a bandwidth level corresponding to each operating system.

[0271] In one implementation, the instruction module 50 can determine the bandwidth level corresponding to each operating system based on the state of each operating system (for example, the state where each operating system accesses the second hardware unit 20, etc.).

[0272] In one example, the bandwidth control module 40 determines the operating system corresponding to each functional module 11, obtains the bandwidth level corresponding to each operating system, and is configured to control the bandwidth for each functional module 11 managed by each operating system to access the second hardware unit 20 based on the bandwidth level corresponding to each operating system.

[0273] According to the above technical configuration, the integrated circuit according to the embodiment of the present disclosure can avoid congestion during access by dynamically controlling the bandwidth over which the functional module 11 accesses the second hardware unit 20 based on a bandwidth level corresponding to the operating system managing the functional module 11, thereby enabling the functional module 11 to access the second hardware unit 20 with the memory bandwidth available to the corresponding operating system. <Example electronic device>

[0274] Embodiments of this disclosure provide electronic devices that can be used in vehicles, for example, in intelligent connected vehicles. These electronic devices may be, for example, in-vehicle computing devices, in-vehicle computing platforms, in-vehicle computing units, intelligent driving computing platforms, and the like.

[0275] In one embodiment, the electronic device may include an integrated circuit according to an embodiment of the present disclosure, which can run at least one operating system, for example, an intelligent driving system and a cockpit system, to realize related functions of a cockpit driving integrated system.

[0276] In one embodiment, the electronic device is A housing for enclosing and mounting each hardware unit of an electronic device, protecting each hardware unit from the effects of dust and water ingress, and improving the reliability of the electronic device. A power supply module for supplying power to each hardware unit of an electronic device, A heat dissipation module, such as a cooling fan or liquid cooling device, for dissipating heat from the hardware units of electronic devices, reducing the operating temperature of each hardware unit, and improving the operating stability of each hardware unit. The system includes an external interface for connecting various sensors in the vehicle, such as cameras, laser radar, millimeter-wave radar, and ultrasonic radar, and for transmitting commands to each sensor or receiving data from the sensors. The external interface can connect various actuators in the vehicle, such as the drive system, brake system, and steering system, and transmit control commands to each system or receive feedback from each system. <Example Vehicle>

[0277] Embodiments of this disclosure provide vehicles, which may include land vehicles, air vehicles, water vehicles, underwater vehicles, space vehicles, and the like. Specific applications of the vehicles can be found in the embodiments described above and will not be described further here. The vehicles may include integrated circuits and electronic devices according to embodiments of this disclosure to implement the bandwidth control method according to embodiments of this disclosure. <Examples of computer program products and computer-readable storage media>

[0278] In addition to the methods and apparatus described above, embodiments of the present disclosure can provide a computer program product including computer program instructions, and when a computer program instruction is executed by a processor, the processor can be caused to perform steps in the bandwidth control methods of various embodiments of the present disclosure described in the “Exemplary Methods” portion of this specification.

[0279] Computer program products can be created using one or any combination of programming languages ​​to produce program code for performing the operations of the embodiments of this disclosure, including object-oriented programming languages ​​such as Java and C++, and traditional procedural programming languages ​​such as the C language or similar programming languages. The program code may run entirely on a user computing device, partially on a user device, run as a standalone software package, run partially on a user computing device and partially on a remote computing device, or run entirely on a remote computing device or a server.

[0280] Furthermore, embodiments of the present disclosure can further provide a computer-readable storage medium in which computer program instructions are stored. When the computer program instructions are executed by a processor, the processor can be caused to perform steps in the bandwidth control methods of various embodiments of the present disclosure described in the “Exemplary Methods” portion of this specification above.

[0281] Any combination of one or more readable media can be used as the computer-readable storage medium. The readable media can be a readable signal medium or a readable storage medium. The readable storage medium may include, but is not limited to, electrical, magnetic, optical, electromagnetic, infrared, or semiconductor systems, apparatus, or devices, or any combination thereof. More specific examples (non-exclusive list) of readable storage media include electrical connections with one or more wires, portable disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), optical fibers, compact disk read-only memory (CD-ROM), optical storage devices, magnetic storage devices, or any suitable combination of the above.

[0282] While the basic principles of this disclosure have been explained above with reference to specific examples, the advantages, merits, and effects mentioned in this disclosure are merely illustrative and not limiting, and these advantages, merits, and effects are not necessarily present in every example of this disclosure. Furthermore, the specific details of the above disclosure are merely illustrative and easy-to-understand effects and are not limiting, and the above details do not necessarily limit this disclosure to being realized by the above specific details.

[0283] The block diagrams of devices, apparatus, equipment, and systems in this disclosure are illustrative examples only and are not intended to require or suggest that they must be connected, arranged, or configured as shown in the block diagrams. These devices, apparatus, equipment, and systems can be connected, arranged, and configured in any way that a person skilled in the art could conceive. For example, words such as “include,” “incorporate,” and “have” are open vocabulary and mean “including, but not limited to,” and can be used interchangeably. The vocabulary “or” and “and” as used herein mean the vocabulary “and / or,” and can be used interchangeably. The vocabulary “for example” as used herein means the phrase “for example,…but not limited to,” and can be used interchangeably.

[0284] Furthermore, in the apparatus, devices and methods of this disclosure, each component or step is capable of being disassembled and / or reassembled. Such disassembly and / or reassembly should be considered equivalent solutions of this disclosure.

[0285] The above description of the disclosed embodiments is provided so that a person skilled in the art can implement or use this disclosure. A person skilled in the art can make various modifications to these embodiments, and the general principles defined herein can be applied to other embodiments, provided that they do not depart from the scope of this disclosure. Therefore, this disclosure is not intended to be limited to the embodiments shown herein, but to the maximum extent consistent with the principles and novel features disclosed herein.

[0286] Those skilled in the art can make various modifications and alterations to this disclosure without departing from the spirit and scope of the application. Thus, if such modifications and alterations of the application fall within the claims of this disclosure and the equivalent art, this disclosure also includes such modifications and alterations.

Claims

1. A bandwidth control method applied to an integrated circuit, The integrated circuit includes a first hardware unit and a plurality of bandwidth control modules, the first hardware unit includes a plurality of functional modules, and the plurality of functional modules are communicated to the plurality of bandwidth control modules in a one-to-one correspondence. The bandwidth control method is Each of the bandwidth control modules determines a bandwidth level corresponding to the functional module corresponding to it, wherein the bandwidth level is determined based on the usage status of a command queue or based on an address range corresponding to each of the functional modules' access to a second hardware unit, the command queue is for caching access commands for each of the functional modules to access the second hardware unit, and each of the plurality of functional modules corresponds to a different operating system. A bandwidth control method characterized by comprising the step of each bandwidth control module controlling the bandwidth by which each functional module accesses the second hardware unit based on the bandwidth level corresponding to the functional module corresponding to it.

2. The step of each bandwidth control module controlling the bandwidth by which each function module accesses the second hardware unit, based on the bandwidth level corresponding to the function module corresponding to it, is: The steps include determining a bandwidth threshold for each functional module based on the bandwidth level corresponding to each functional module, The bandwidth control method according to claim 1, comprising the step of controlling the bandwidth by which each of the functional modules accesses the second hardware unit based on a bandwidth threshold corresponding to each of the functional modules.

3. The step of each bandwidth control module determining the bandwidth level corresponding to the corresponding functional module is as follows: The steps include determining the address range corresponding to each of the functional modules' accesses to the second hardware unit, The bandwidth control method according to claim 2, comprising the step of determining a bandwidth level corresponding to each of the functional modules based on an address range corresponding to each of the functional modules' access to the second hardware unit.

4. The step of determining the address range corresponding to each of the functional modules' access to the second hardware unit is as follows: The steps include determining the access address corresponding to each of the functional modules' accesses to the second hardware unit, The bandwidth control method according to claim 3, comprising the step of determining an address range corresponding to each functional module's access to the second hardware unit based on the access address corresponding to each functional module's access to the second hardware unit.

5. The step of controlling the bandwidth by which each of the aforementioned functional modules accesses the second hardware unit, based on a bandwidth threshold corresponding to each of the aforementioned functional modules, is as follows: The bandwidth control method according to claim 3, comprising the step of controlling the bandwidth by which each of the function modules accesses the second hardware unit based on a bandwidth threshold corresponding to each of the function modules and the current bandwidth of each of the address ranges.

6. The step of controlling the bandwidth by which each of the function modules accesses the second hardware unit, based on the bandwidth threshold corresponding to each of the function modules and the current bandwidth of each of the address ranges, is as follows: The steps include determining a bandwidth threshold corresponding to each of the aforementioned functional modules, and the magnitude of the current bandwidth value that each of the aforementioned functional modules uses to access the address range of the second hardware unit, The bandwidth control method according to claim 5, comprising the step of controlling the bandwidth by which each functional module accesses the second hardware unit, based on a bandwidth threshold corresponding to each functional module and the magnitude of a numerical value of the current bandwidth by which each functional module accesses the address range of the second hardware unit.

7. The step of controlling the bandwidth by which each of the function modules accesses the second hardware unit, based on a bandwidth threshold corresponding to each of the function modules and the magnitude of the current bandwidth by which each of the function modules accesses the address range of the second hardware unit, is as follows: The steps include transmitting access of a first functional module to the second hardware unit in response to the current bandwidth used by any first functional module among the plurality of functional modules to access the address range of the second hardware unit being smaller than the bandwidth threshold corresponding to the first functional module, The bandwidth control method according to claim 6, comprising the step of blocking access by any first functional module among the plurality of functional modules to the second hardware unit in response to the current bandwidth by which the first functional module accesses the address range of the second hardware unit being greater than or equal to a bandwidth threshold corresponding to the first functional module.

8. The step of controlling the bandwidth by which each of the aforementioned functional modules accesses the second hardware unit, based on a bandwidth threshold corresponding to each of the aforementioned functional modules, is as follows: The bandwidth control method according to claim 2, characterized in that it includes the step of controlling the bandwidth by which each of the functional modules accesses the second hardware unit so that it is smaller than the bandwidth threshold corresponding to each of the functional modules.

9. A bandwidth control system, A first hardware unit containing multiple functional modules corresponding to different operating systems, A second hardware unit that communicates with the aforementioned plurality of functional modules, A plurality of bandwidth control modules, each of which is provided between the first hardware unit and the second hardware unit, and each bandwidth control module determines the bandwidth level corresponding to the respective function module and controls the bandwidth by which the respective function module accesses the second hardware unit based on the bandwidth level corresponding to the respective function module. A bandwidth control system characterized in that the bandwidth level is determined based on the usage status of a command queue or based on an address range corresponding to each functional module's access to the second hardware unit, and the command queue is for caching access commands for each functional module to access the second hardware unit.

10. An instruction module that communicates with each of the aforementioned bandwidth control modules, further including an instruction module for generating bandwidth levels corresponding to each of a plurality of operating systems, The bandwidth control system according to claim 9, wherein each bandwidth control module further determines the bandwidth level corresponding to each functional module based on the operating system corresponding to each functional module and the bandwidth levels corresponding to each of the plurality of operating systems.

11. It is an electronic device, An electronic device comprising a bandwidth control system as described in claim 9 or 10.

12. A vehicle characterized by including the electronic equipment described in Claim 11.

13. A computer-readable storage medium, The computer-readable storage medium is characterized in that, when executed by a processor, it stores a computer program that causes the processor to perform the steps in the bandwidth control method described in any one of claims 1 to 8.