Integrated circuits (ICS) that limit the memory interface utilization of high-priority processing circuits and related methods
By incorporating an access manager to enforce memory interface utilization limits within integrated circuits, the issue of high-priority processing circuits starving lower-priority circuits is addressed, ensuring fair access and maintaining optimal system performance.
Patent Information
- Application Number
- PCT/CN2023/119635
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-09-19
- Publication Date
- 2025-03-27
AI Technical Summary
In integrated circuits (ICs) with multiple processing circuits, a priority-based arbitration scheme can lead to starvation of lower-priority processing circuits, causing performance issues and errors due to excessive memory interface utilization by high-priority circuits.
The implementation of an access manager within the memory access circuit that limits the memory interface utilization of high-priority processing circuits by tracking and enforcing predetermined utilization limits, preventing these circuits from dominating the memory interface and starving lower-priority circuits.
This solution ensures fair access to the memory interface, preventing performance degradation and errors by allowing lower-priority processing circuits to access memory, thus maintaining optimal system performance.
Smart Images

Figure CN2023119635_27032025_PF_FP_ABST
Abstract
Description
INTEGRATED CIRCUITS (ICs) THAT LIMIT THE MEMORY INTERFACE UTILIZATION OF HIGH-PRIORITY PROCESSING CIRCUITS AND RELATED METHODSBACKGROUND
[0001] I. Field of the Disclosure
[0002] The technology of the disclosure relates generally to integrated circuits (ICs) coupled to a memory, and more particularly to managing access to a memory interface in an IC with multiple processing circuits.
[0003] II. Background
[0004] There are large integrated circuits (ICs) that include multiple processors or processing circuits performing multiple functions simultaneously. The processors may all be of the same type or different types, depending on their functions. One thing that they all have in common, however, is the need to access memory locations in a memory chip outside the IC, where data, including instructions, are stored. The processing circuits access their data stored in the memory circuit by way of a memory interface. Although the memory interface may include multiple “channels” (e.g., individual interfaces) coupled to the memory circuit, there may be even more processing circuits than channels. For this reason, ICs also include memory access circuits that perform arbitration; receiving requests from the different processing circuits and deciding which ones will be coupled to a channel in the memory interface at any given moment. Since the functions of some processing circuits are more important to the overall function of the IC than other processing circuits, the memory access circuit attributes a priority to each of the processing circuits and grants access to the processing circuits with the highest priority. However, this can starve the lower-priority processing circuits of their opportunity to access data, causing them to idle, which may result in performance problems or even errors in secondary functions.SUMMARY
[0005] Aspects disclosed herein include integrated circuits (ICs) that limit the memory interface utilization of high-priority processing circuits. Related methods of limiting memory interface utilization in high-priority processing circuits in an IC are also disclosed. System on chip (SoC) and other large ICs include multiple processing circuits that each get access to a memory by way of a shared memory interface having a fixed capacity. At a given moment, there may be more requests by the processing circuits for access to the memory interface than the memory interface can handle. A memory access circuit controls access of the processing circuits to the memory interface based on their respective priority levels. However, a priority-based arbitration scheme can starve the lower-priority processing circuits of their data. Thus, in an exemplary IC, the memory access circuit includes an access manager to limit access of the processing circuits to the memory interface based on predetermined limits of memory interface utilization. The memory interface utilization of a processing circuit indicates how much of the capacity of a memory interface is being used by the processing circuit. In some examples, the memory access circuit tracks the memory interface utilization of the processing circuits and excludes a processing circuit from the subset selected for access to the memory interface if the memory interface utilization of the processing circuit exceeds the predetermined limit. In some examples, the predetermined limit is a programmable value stored in a configuration register.
[0006] In an exemplary aspect, an IC is disclosed. The IC includes a memory interface configured to couple to a memory circuit and a plurality of processing circuits configured to access the memory circuit by the memory interface. The IC also includes a memory access circuit coupled to the memory interface and to each of the plurality of processing circuits, the memory access circuit comprising an access controller configured to control access of the plurality of processing circuits to the memory interface based on respective priority levels of the plurality of processing circuits and an access manager configured to limit access of at least one of the plurality of processing circuits to the memory interface based on predetermined limits of a memory interface utilization of the at least one of the plurality of processing circuits.
[0007] In another exemplary aspect, a method of controlling memory access in an IC is disclosed. The method includes controlling access of a plurality of processing circuits in the IC to a memory interface based on respective priority levels of the plurality of processing circuits. The method further includes limiting access of at least one of the plurality of processing circuits based on predetermined limits of a memory interface utilization of the at least one of the plurality of processing circuits.BRIEF DESCRIPTION OF THE DRAWINGS
[0008] Figure 1 is a logic diagram of an integrated circuit (IC) including processing circuits that share access to a memory interface under the control of an access controller, based on priority, and an access manager circuit that limits access to processing circuits whose memory interface utilization exceeds a predetermined limit;
[0009] Figure 2 is a logic diagram of the access manager in Figure 1 including a monitor circuit to track memory access information and a control circuit to store and enforce memory utilization limits;
[0010] Figure 3 is a flowchart of a method in an IC including processing circuits that share access to a memory interface based on priority and memory utilization limits;
[0011] Figure 4 is a block diagram of an exemplary wireless communication device that includes radio frequency (RF) components that can include an IC with a memory access limit control circuit that employs memory access information to control memory arbitration to enforce sharing of a memory interface; and
[0012] Figure 5 is a block diagram of an exemplary processor-based system that can include an IC including an IC with a memory access limit control circuit that employs memory access information to control memory arbitration to enforce sharing of a memory interface.DETAILED DESCRIPTION
[0013] Several exemplary aspects of the present disclosure are described in reference to the drawing figures. The word “exemplary” is used herein to mean “serving as an example, instance, or illustration. ” Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects.
[0014] Aspects disclosed herein include integrated circuits (ICs) that limit the memory interface utilization of high-priority processing circuits. Related methods of limiting memory interface utilization in high-priority processing circuits in an IC are also disclosed. System on chip (SoC) and other large ICs include multiple processing circuits that each get access to a memory by way of a shared memory interface having a fixed capacity. At a given moment, there may be more requests by the processing circuits for access to the memory interface than the memory interface can handle. A memory access circuit controls access of the processing circuits to the memory interface based on their respective priority levels. However, a priority-based arbitration scheme can starve the lower-priority processing circuits of their data. Thus, in an exemplary IC, the memory access circuit includes an access manager to limit access of the processing circuits to the memory interface based on predetermined limits of memory interface utilization. The memory interface utilization of a processing circuit indicates how much of the capacity of a memory interface is being used by the processing circuit. In some examples, the memory access circuit tracks the memory interface utilization of the processing circuits and excludes a processing circuit from the subset selected for access to the memory interface if the memory interface utilization of the processing circuit exceeds the predetermined limit. In some examples, the predetermined limit is a programmable value stored in a configuration register.
[0015] Figure 1 is a logic diagram of an exemplary IC 100, which may be a SoC, including a plurality of processing circuits 102 (1) -102 (P) for performing a variety of functions. The processing circuits 102 (1) -102 (P) (also referred to collectively herein as “processing circuits 102” , may include, for example, a central processing unit (CPU) , a graphics processing unit (GPU) , and a neural processing unit (NPU) , data processing unit (DPU) , signal processing unit (SPU) , and / or multiple (e.g., at least two) additional processing units of any type. Since each processing unit is implemented in hardware as a circuit, they are referred to herein as processing circuits 102 (CPU, GPU, NPU, DPU, SPU, etc. ) .
[0016] Each of the processing circuits 102 in the IC 100 manipulates some type (s) of data under the control of firmware or software instructions, which are also forms of data. The data being manipulated, the instructions employed to control the processing circuits, and the resulting data generated by the processing circuits 102 may all be stored in memory circuits before being provided to or received from the processing circuit. There may be small, quickly accessible cache memory and registers on the IC 100 for this purpose, but the IC 100 also includes a memory interface 104 configured to couple to a larger memory circuit (not shown) external to the IC 100. A larger memory is needed to hold the volume of data required to keep all of the processing circuits 102 operating at maximum performance (e.g., without idle cycles) .
[0017] In the example in Figure 1, the memory circuit may be a random access memory (RAM) , in particular a double data rate (DDR) RAM and the memory interface 104 includes a plurality of buses or channels 106 (1) -106 (M) that are each independent interfaces configured to access the DDR RAM in the memory circuit. Although DDR RAM channels are provided in this example, the channels 106 (1) -106 (M) may be any appropriate type of memory interface channel, depending on the type of memory circuit coupled to the IC 100.
[0018] The number (P) of processing circuits 102 (1) -102 (P) in the IC 100 may be greater than the number (M) of memory channels 106 (1) -106 (M) in the IC 100. In this situation, rather than having one of the channels 106 (1) -106 (M) dedicated to each of the processing circuits 102 to access the memory circuit at any time, the processing circuits 102 are required to share access to the channels 106 (1) -106 (M) of the memory interface 104. In this regard, the processing circuits 102 that need access to the memory interface 104 at a given moment, signal this need by, for example, submitting a request to an exemplary memory access circuit 108 in the IC 100. The memory access circuit 108 is coupled to the memory interface 104 and to each of the processing circuits 102 (1) -102 (P) .
[0019] As shown in the example in Figure 1, the memory access circuit 108 is coupled to the processing circuits 102 (1) -102 (P) by buses 112 (1) -112 (P) and coupled to the channels 106 (1) -106 (M) by access signals 114 (1) -114 (M) . The buses 112 (1) -112 (P) may include the requests provided to the memory access circuit 108 and may also carry memory transactions and data between the processing circuits 102 and the memory interface 104. The access signals 114 (1) -114 (M) are control signals for selecting the processing circuits 102 (1) -102 (P) that are coupled to the channels 106 (1) -106 (M) .
[0020] Via the buses 112 (1) -112 (P) , the memory access circuit 108 may receive requests submitted from a plurality of the processing circuits 102 for access to the memory interface 104. The memory access circuit 108 controls access of the processing circuits 102 to the memory interface 104, and in particular to the channels 106 (1) -106 (M) . In some cases, the number M of channels 106 (1) -106 (M) is greater than the number “R” of requests and all the requests may be granted. Having a request granted in this context means that the processing circuit 102 that submitted the request will have access to the memory interface 104 and will be coupled to a corresponding one of the channels 106 (1) -106 (M) . Coupling one of the processing circuits 102 to one of the channels 106 (1) -106 (M) may refer to establishing an electrical path between the processing circuits 102 and the corresponding one of the channels 106 (1) -106 (M) . Additionally or alternatively, such coupling may refer to switching circuits to allow memory transactions to be passed (e.g., over the buses 112 (1) -112 (P) from the processing circuits 102 to the channels 106 (1) -106 (M) (and to the memory circuit) and for a response (e.g., acknowledgment, data, etc. ) to be returned to the processing circuits 102.
[0021] It should be understood that the buses 112 (1) -112 (P) and access signals 114 (1) -114 (M) present one non-limiting example of an interconnection of the memory access circuit 108, the processing circuits 102, and the channels 106 (1) -106 (M) and could instead be implemented by a mesh network or other configuration. Independent of the design, the memory access circuit 108 controls whether each of the processing circuits 102 is able to access or utilize the channels 106 (1) -106 (M) to perform memory transactions (e.g., reads, writes, etc. ) .
[0022] Regarding the number R of requests to access the memory interface 104 received by the memory access circuit 108, the number R may exceed the number M of channels (i.e., R>M) . In addition, some of the channels 106 (1) -106 (M) may not be available at a given moment. In such cases, the number of requests that may be granted is limited to the number of available channels 106 (1) -106 (M) , which may be equal to or less than M.
[0023] Briefly, reference to the term “any given moment” in this context may refer to a given cycle of the system clock (not shown) that is used to trigger sequential logic circuits in the IC 100. In each cycle of the clock signal, a new set of requests may be received. When one of the processing circuits 102 is coupled to one of the channels 106 (1) -106 (M) , a memory access transaction may be issued to the memory circuit, but such transaction may take multiple cycles to complete, leaving the channel unavailable to other processing circuits 102 during the transaction.
[0024] Returning to a discussion of the memory access circuit 108, one of the functions thereof is to determine which subset of the R requests will be granted. Since the IC 100 includes many processing circuits 102, and the variety of functions being performed by the processing circuits 102 are not of equal importance to the overall performance of the IC 100, a prioritization or ranking system is employed to determine which of the requests will be granted. A priority is assigned to each of the processing circuits 102, and these priorities are used by the memory access circuit 108 to select a subset of the processing circuits 102 for access to the memory interface 104. In this regard, the memory access circuit 108 includes an access control circuit ( “access controller” ) 116 configured to control access of the plurality of processing circuits 102 to the memory interface 104 based on respective priority levels of the processing circuits 102. In response to a number of requests exceeding the number of available channels 106 (1) -106 (M) , the memory access circuit 108 selects a subset of the processing circuits 102 that submitted requests, and has the highest of the priority levels, for access to the memory interface 104. Restating, among the processing circuits 102 that submitted requests for access to the memory interface 104, the access controller 116 selects those having the highest priority to be included in the subset that will be granted access to the memory interface 104. Selecting the processing circuits 102 for access to the memory interface 104 includes coupling the (selected) processing circuits 102 to available channels of the channels 106 (1) -106 (M) .
[0025] A drawback to the prioritization system described above is that utilization of the memory interface 104 may be dominated by the higher-priority processing circuits 102. For example, a first processing circuit 102 (1) may have the highest priority among all the processing circuits 102 (1) -102 (P) , and a second processing circuit 102 (2) may have a second highest priority. For optimal performance, the first processing circuit 102 (1) may need to utilize seventy percent (70%) of the capacity of the memory interface 104 and the second processing circuit 102 (2) may need to utilize thirty percent (30%) of the capacity of the memory interface 104. Stated differently, the IC 100 operates most effectively if the memory interface utilization of the first processing circuit 102 (1) is 70%and the memory interface utilization of the second processing circuit 102 (2) is 30%. The term “memory interface utilization” is a measure of the capacity of the memory interface that is being used by a particular one of the processing circuits 102. The memory interface utilization may be determined based on a history of the plurality of processing circuits 102 coupled to the channels 106 (1) -106 (M) of the memory interface 104.
[0026] Under a priority protocol as described above, however, the first processing circuit 102 (1) may frequently have one hundred percent (100%) memory interface utilization, occupying 100%of the available capacity of the memory interface 104. As a result, the second processing circuit 102 (2) is unable to access the memory and becomes starved for instructions or data, causing the second processing circuit 102 (2) to be idle and unable to perform its function (s) . Such starving may be observed by a user of a device including the IC 100 as a delay or malfunction.
[0027] Situations in which one or more processing circuits are starved for data may be avoided if the memory interface utilization of the respective processing circuits 102 is considered in the selection of a subset of the processing circuits 102 that are to be granted access to the memory interface 104. In this regard, the memory access circuit 108 includes an access manager circuit ( “access manager” ) 118 that may limit access of at least one of the processing circuits 102 to the memory interface 104.
[0028] The access manager 118 receives memory access data 120 from the access controller 116 and generates a limit control signal 122 to limit access of the at least one of the plurality of processing circuits 102 to the memory interface 104 based on a predetermined limit of memory interface utilization of the at least one of the processing circuits 102. In response to receiving the limit control signal 122, the access controller 116 may exclude the at least one of the plurality of processing circuits 102 (that has exceeded a predetermined memory utilization limit) from the selecting of the subset of the processing circuits 102 to be granted access to the memory interface 104.
[0029] The access manager 118 also generates a memory utilization signal 124, which is an alert provided to the first processing circuit 102 (1) in the example in Figure 1 but could be provided to any of the processing circuits 102. The access manager 118 also generates memory utilization history 126, which may be provided to any of the processing circuits 102, another internal circuit, or to an output (not shown) of the IC 100, for access by an external circuit (e.g., monitor or tester) . Further details of the access manager 118, the limit control signal 122, the memory utilization signal 124, and the memory utilization history 126 are provided with reference to Figure 2.
[0030] Figure 2 is a logic diagram of the access manager 200, which may be the access manager circuit 118 in Figure 1, including a monitor circuit 202 receiving memory utilization information and a control circuit 204 to enforce a limit on memory interface utilization, referred to as memory utilization limits. The monitor circuit 202 receives memory access data 206, which may be the memory access data 120 of Figure 1. The memory access data 206 may identify the processing circuits 102 having access to each of the channels 106 (1) -106 (M) . By collecting the memory access data 206 in cycles of the system clock (not shown) the monitor circuit 202 can generate memory utilization history 208, which may be the memory utilization history 126 in Figure 1. The memory utilization history 208 provides information identifying the processing circuits 102 coupled to the channels 106 (1) -106 (M) of the memory interface 104 in Figure 1 over a period of time, or multiple periods of time (e.g., short-term and longer-term utilization rates) . The memory utilization history 208 is also provided to the control circuit 204.
[0031] The control circuit 204 includes (aplurality of) configuration registers 210 (1) -210 (P) , each corresponding to one of the processing circuits 102. The control circuit 204 is configured to program the configuration registers 210 (1) -210 (P) to store the memory utilization limits 212 (1) -212 (P) for each of the processing circuits 102 (1) -102 (P) . The memory utilization limits 212 (1) -212 (P) are one example of the predetermined memory utilization limits discussed above. The control circuit 204 generates a memory utilization signal 216 corresponding to the memory utilization signal 124 in Figure 1. As noted above, the memory utilization signal 216 may be used to alert one of the processing circuits 102 that the memory interface utilization of certain processing circuits 102 has exceeded predetermined limits. The memory utilization signal 216 may also indicate when the memory interface utilization of processing circuits 102 has dropped below the programmed predetermined limit. In response to a processing circuit 102 exceeding the predetermined limit, for example, the first processing circuit 102 (1) may determine whether the configuration registers 210 (1) -210 (P) should be reprogrammed with new memory utilization limits 212 (1) -212 (P) to adjust the balance of memory access among the processing circuits 102.
[0032] The control circuit 204 also includes a comparison circuit 214 to generate a limit control signal 218, which corresponds to the limit control signal 122 in Figure 1. The control circuit 204 can determine the memory interface utilization of each of the processing circuits 102 based on the memory utilization history 208. The memory interface utilization may be provided in any appropriate form, such as percentages, fractions, or indications of a number of cycles (over a period) in which a processing circuit is coupled to one of the channels 106 (1) -106 (M) . The control circuit 204 generates the memory utilization history 208 of each of the processing circuits 102 in Figure 1. The comparison circuit 214 compares the memory interface utilization of each of the processing circuits 102 to a corresponding one of the memory utilization limits 212 (1) - 212 (P) to determine whether the memory interface utilization of any of the processing circuits 102 exceeds the predetermined limits.
[0033] The memory utilization limits 212 (1) -212 (P) are programmable in the configuration registers 210 (1) -210 (P) and may be set in accordance with the application or programs being performed by the IC 100. With knowledge of the appropriate balance of memory interface utilization for each of the processing circuits 102 needed to attain optimal operation, the memory utilization limits 212 (1) -212 (P) may be set.
[0034] Referring back to Figure 1, a number of the channels 106 (1) -106 (M) that are available at a given moment may be less than the number R of requests. Therefore, the access controller 116 selects a subset of the processing circuits 102 that have submitted requests based on those having the highest priority. However, the access controller 116 may exclude one of the processing circuits (e.g., 102 (X) (not shown) ) having the highest priority from the selected subset in response to receiving the limit control signal 218 (122) from the access manager 200, where the limit control signal 218 indicates that memory interface utilization of such high priority processing circuit (102 (X) ) has exceeded the corresponding memory utilization limit (212 (X) (not shown) ) . Having excluded one of the highest priority processing circuits 102 from the subset, one of the channels 106 (1) -106 (M) may be available. Accordingly, the access controller 116 includes a next highest priority one of the processing circuits 102 (not previously selected) that has submitted a request in the subset to be granted access to the memory interface 104. In this manner, all the available channels 106 (1) -106 (M) may be employed for maximum memory utilization.
[0035] Continuing with the above examples, in subsequent cycles, because the previously excluded processing circuit (102 (X) ) is not given access to the memory interface 104, the access manager 200 may determine that the memory interface utilization of the previously excluded processing circuit (102 (X) ) has decreased or dropped the corresponding memory utilization limit (212 (X) ) . The access manager 200 informs the access controller 116 (e.g., using the limit control signal 218) and the previously excluded processing circuit (102 (X) ) may again be included in the selection of the subset to be granted access to the memory interface.
[0036] In addition, during normal operation, a number of the channels 106 (1) -106 (M) that are available may change (e.g., from cycle to cycle of the system clock) . In some examples, the total number of available channels 106 (1) -106 (M) exceeds the number of requests R in a given cycle. Thus, the selection of a subset of the processing circuits 102 submitting requests is not necessary because all (e.g., the whole set) of the processing circuits 102 submitting requests may be granted access (e.g., coupled to the memory interface) . In addition, in some examples, the access controller 116 may ignore the limit control signal 218 and allow one or more of the processing circuits 102 access to the memory interface 104 even if the memory interface utilization of the one or more of the processing circuits 102 exceeds the corresponding memory utilization limits 212 (1) -212 (P) . That is, since the number of requests is less than the number of available channels 106 (1) -106 (M) , the access controller 116 may determine that none of the processing circuits 102 would be starved if another one of the processing circuits 102 is allowed to exceed its predetermined memory utilization limit.
[0037] Figure 3 is a flowchart of a method 300 in the IC 100 in Figure 1, including processing circuits 102 that share access to the memory interface 104 based on priority and memory utilization limits. The method comprises controlling access of the plurality of processing circuits 102 in the IC 100 to a memory interface 104 based on respective priority levels of the plurality of processing circuits 102 (1) -102 (P) (block 302) . Controlling access of the processing circuits 102 (1) -102 (P) to the memory interface 104 may optionally comprise receiving a plurality of requests, submitted from the processing circuits 102 (1) -102 (P) , for access to the memory interface 104 (block 304) and, in response to a number of the first plurality of requests exceeding a first limit, selecting a subset of the plurality of processing circuits 102 that submitted requests and have the highest of the priority levels, for access to the memory interface 104 (block 306) . The method 300 further comprises limiting access of at least one of the plurality of processing circuits 102 based on predetermined limits of a memory interface utilization of the at least one processing circuit 102 (block 308) . Limiting access of at least one of the plurality of processing circuits 102 may optionally comprise generating a limit control signal 122 to limit access of the at least one of the plurality of processing circuits 102 to the memory interface 104 based on the memory interface utilization of the at least one of the plurality of processing circuits 102 (block 310) and, in response to receiving the limit control signal 122, excluding the at least one of the plurality of processing circuits 102 from the selection of the subset (block 312) .
[0038] Electronic devices that include ICs, including processing circuits that share access to a memory interface under the control of an access controller, based on priority, and an access manager circuit that limits access to processing circuits whose memory interface utilization exceeds a predetermined limit, such as the IC in Figure 1 and according to, but not limited to, the exemplary process in Figure 3, and according to any aspects disclosed herein, may be provided in or integrated into any processor-based device. Examples, without limitation, include a set-top box, an entertainment unit, a navigation device, a communications device, a fixed location data unit, a mobile location data unit, a global positioning system (GPS) device, a mobile phone, a cellular phone, a smartphone, a session initiation protocol (SIP) phone, a tablet, a phablet, a server, a computer, a portable computer, a mobile computing device, laptop computer, a wearable computing device (e.g., a smartwatch, a health or fitness tracker, eyewear, etc. ) , a desktop computer, a personal digital assistant (PDA) , a monitor, a computer monitor, a television, a tuner, a radio, a satellite radio, a music player, a digital music player, a portable music player, a digital video player, a video player, a digital video disc (DVD) player, a portable digital video player, an automobile, a vehicle component, avionics systems, a drone, and a multicopter.
[0039] In this regard, Figure 4 illustrates a block diagram of an exemplary wireless communications device 400 that includes radio frequency (RF) components formed from one or more ICs 402, wherein any of the ICs 402 can include processing circuits that share access to a memory interface under the control of an access controller, based on priority, and an access manager circuit that limits access to processing circuits whose memory interface utilization exceeds a predetermined limit such as the IC in Figure 1 and according to, but not limited to, the exemplary process in Figure 3, and according to any aspects disclosed herein. The wireless communications device 400 may include or be provided as examples in any of the above-referenced devices. As shown in Figure 4, the wireless communications device 400 includes a transceiver 404 and a data processor 406. The data processor 406 may include a memory to store data and program codes. The transceiver 404 includes a transmitter 408 and a receiver 410, which support bi-directional communications. In general, the wireless communications device 400 may include any number of transmitters 408 and / or receivers 410 for any number of communication systems and frequency bands. All or a portion of the transceiver 404 may be implemented on one or more analog ICs, RF ICs (RFICs) , mixed-signal ICs, etc.
[0040] The transmitter 408 or the receiver 410 may be implemented with a super-heterodyne or direct-conversion architecture. In the super-heterodyne architecture, a signal is frequency-converted between RF and baseband in multiple stages, e.g., from RF to an intermediate frequency (IF) in one stage and then from IF to baseband in another stage. In the direct-conversion architecture, a signal is frequency-converted between RF and baseband in one stage. The super-heterodyne and direct-conversion architectures may use different circuit blocks and / or have different requirements. In the wireless communications device 400 in Figure 4, the transmitter 408 and the receiver 410 are implemented with the direct-conversion architecture.
[0041] In the transmit path, the data processor 406 processes data to be transmitted and provides I and Q analog output signals to the transmitter 408. In the exemplary wireless communications device 400, the data processor 406 includes digital-to-analog converters (DACs) 412 (1) , 412 (2) for converting digital signals generated by the data processor 406 into I and Q analog output signals, e.g., I and Q output currents, for further processing.
[0042] Within the transmitter 408, lowpass filters 414 (1) , 414 (2) filter the I and Q analog output signals, respectively, to remove undesired signals caused by the prior digital-to-analog conversion. Amplifiers (AMPs) 416 (1) , 416 (2) amplify the signals from the lowpass filters 414 (1) , 414 (2) , respectively, and provide I and Q baseband signals. An upconverter 418 upconverts the I and Q baseband signals with I and Q transmit (TX) local oscillator (LO) signals from a TX LO signal generator 422 through mixers 420 (1) , 420 (2) to provide an upconverted signal 424. A filter 426 filters the upconverted signal 424 to remove undesired signals caused by the frequency upconversion and noise in a receive frequency band. A power amplifier (PA) 428 amplifies the upconverted signal 424 from the filter 426 to obtain the desired output power level and provides a transmit RF signal. The transmit RF signal is routed through a duplexer or switch 430 and transmitted via an antenna 432.
[0043] In the receive path, the antenna 432 receives signals transmitted by base stations and provides a received RF signal, which is routed through the duplexer or switch 430 and provided to a low noise amplifier (LNA) 434. The duplexer or switch 430 is designed to operate with a specific receive (RX) -to-TX duplexer frequency separation, such that RX signals are isolated from TX signals. The received RF signal is amplified by the LNA 434 and filtered by a filter 436 to obtain a desired RF input signal. Downconversion mixers 438 (1) , 438 (2) mix the output of the filter 436 with I and Q RX LO signals (i.e., LO_I and LO_Q) from an RX LO signal generator 440 to generate I and Q baseband signals. The I and Q baseband signals are amplified by AMPs 442 (1) , 442 (2) and further filtered by lowpass filters 444 (1) , 444 (2) to obtain I and Q analog input signals, which are provided to the data processor 406. In this example, the data processor 406 includes analog-to-digital converters (ADCs) 446 (1) , 446 (2) for converting the analog input signals into digital signals to be further processed by the data processor 406.
[0044] In the wireless communications device 400 of Figure 4, the TX LO signal generator 422 generates the I and Q TX LO signals used for frequency upconversion, while the RX LO signal generator 440 generates the I and Q RX LO signals used for frequency downconversion. Each LO signal is a periodic signal with a particular fundamental frequency. A TX phase-locked loop (PLL) circuit 448 receives timing information from the data processor 406 and generates a control signal used to adjust the frequency and / or phase of the TX LO signals from the TX LO signal generator 422. Similarly, an RX PLL circuit 450 receives timing information from the data processor 406 and generates a control signal used to adjust the frequency and / or phase of the RX LO signals from the RX LO signal generator 440.
[0045] Figure 5 illustrates a block diagram of an example of a processor-based system 500 that can employ ICs including processing circuits that share access to a memory interface under the control of an access controller, based on priority, and an access manager circuit that limits access to processing circuits whose memory interface utilization exceeds a predetermined limit such as the IC in Figure 1 and according to, but not limited to, the exemplary process in Figure 3. The processor-based system 500 may comprise an IC package including the IC 100. In this example, the processor-based system 500 includes one or more central processor units (CPUs) 502, which may also be referred to as CPU or processor cores, each including one or more processors 504. The CPU (s) 502 may have cache memory 506 coupled to the processor (s) 504 for rapid access to temporarily stored data. The CPU (s) 502 is coupled to a system bus 508 and can intercouple master and secondary device devices included in the processor-based system 500. As is well known, the CPU (s) 502 communicates with these other devices by exchanging address, control, and data information over the system bus 508. For example, the CPU (s) 502 can communicate bus transaction requests to a memory controller 510 as an example of a slave device. Although not illustrated in Figure 5, multiple system buses 508 could be provided wherein each system bus 508 constitutes a different fabric.
[0046] Other master and slave devices can be connected to the system bus 508. As illustrated in Figure 5, these devices can include a memory system 512 that includes the memory controller 510 and one or more memory arrays 514, one or more input devices 516, one or more output devices 518, one or more network interface devices 520, and one or more display controllers 522, as examples. The input device (s) 516 can include any type of input device, including, but not limited to, input keys, switches, voice processors, etc. The output device (s) 518 can include any type of output device, including, but not limited to, audio, video, other visual indicators, etc. The network interface device (s) 520 can be any device configured to allow an exchange of data to and from a network 524. The network 524 can be any type of network, including, but not limited to, a wired or wireless network, a private or public network, a local area network (LAN) , a wireless local area network (WLAN) , a wide area network (WAN) , a BLUETOOTHTM network, and the Internet. The network interface device (s) 520 can be configured to support any type of communications protocol desired.
[0047] The CPU (s) 502 may also be configured to access the display controller (s) 522 over the system bus 508 to control information sent to one or more displays 526. The display controller (s) 522 sends information to the display (s) 526 to be displayed via one or more video processors 528, which process the information to be displayed into a format suitable for the display (s) 526. The display (s) 526 can include any type of display, including, but not limited to, a cathode ray tube (CRT) , a liquid crystal display (LCD) , a plasma display, or a light-emitting diode (LED) display, etc.
[0048] Those of skill in the art will further appreciate that the various illustrative logical blocks, modules, circuits, and algorithms described in connection with the aspects disclosed herein may be implemented as electronic hardware, instructions stored in memory or in another computer-readable medium wherein any such instructions are executed by a processor or other processing device, or combinations of both. As examples, the devices and components described herein may be employed in any circuit, hardware component, integrated circuit (IC) , or IC chip. Memory disclosed herein may be any type and size of memory and may be configured to store any desired information. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. How such functionality is implemented depends upon the particular application, design choices, and / or design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
[0049] The various illustrative logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a processor, a Digital Signal Processor (DSP) , an Application Specific Integrated Circuit (ASIC) , a Field Programmable Gate Array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration) .
[0050] The aspects disclosed herein may be embodied in hardware and in instructions that are stored in hardware and may reside, for example, in Random Access Memory (RAM) , flash memory, Read Only Memory (ROM) , Electrically Programmable ROM (EPROM) , Electrically Erasable Programmable ROM (EEPROM) , registers, a hard disk, a removable disk, a CD-ROM, or any other form of computer-readable medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a remote station. Alternatively, the processor and the storage medium may reside as discrete components in a remote station, base station, or server.
[0051] It is also noted that the operational steps described in any of the exemplary aspects herein are described to provide examples and discussion. The operations described may be performed in numerous different sequences other than the illustrated sequences. Furthermore, operations described in a single operational step may actually be performed in a number of different steps. Additionally, one or more operational steps discussed in the exemplary aspects may be combined. It is to be understood that the operational steps illustrated in the flowchart diagrams may be subject to numerous different modifications, as will be readily apparent to one of skill in the art. Those of skill in the art will also understand that information and signals may be represented using various technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
[0052] The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the spirit or scope of the disclosure. Thus, the disclosure is not intended to be limited to the examples and designs described herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
[0053] Implementation examples are described in the following numbered clauses:
[0054] 1. An integrated circuit (IC) , comprising:
[0055] a memory interface configured to couple to a memory circuit;
[0056] a plurality of processing circuits configured to access the memory circuit by the memory interface;
[0057] a memory access circuit coupled to the memory interface and to each of the plurality of processing circuits, the memory access circuit comprising:
[0058] an access controller configured to control access of the plurality of processing circuits to the memory interface based on respective priority levels of the plurality of processing circuits; and
[0059] an access manager configured to limit access of at least one of the plurality of processing circuits to the memory interface based on predetermined limits of a memory interface utilization of the at least one of the plurality of processing circuits.
[0060] 2. The IC of clause 1, the access controller is further configured to:
[0061] receive a first plurality of requests, submitted from the plurality of processing circuits, for access to the memory interface; and
[0062] in response to a number of the first plurality of requests exceeding a first limit, select a subset of the plurality of processing circuits that submitted requests and have the highest priority level of the priority levels, for access to the memory interface.
[0063] 3. The IC of clause 2, wherein:
[0064] the access manager is configured to generate a limit control signal to exclude the at least one of the plurality of processing circuits from the selected subset based on the memory interface utilization of the at least one of the plurality of processing circuits; and
[0065] the access controller is further configured to, in response to receiving the limit control signal, exclude the at least one of the plurality of processing circuits from the selecting of the subset.
[0066] 4. The IC of clause 2 or clause 3, wherein:
[0067] the memory interface comprises a plurality of channels configured to couple to the memory circuit;
[0068] the first limit is based on a number of the plurality of channels available; and
[0069] selecting the plurality of processing circuits for access to the memory interface comprises coupling the plurality of processing circuits to available channels of the plurality of channels of the memory interface.
[0070] 5. The IC of clause 3 or clause 4, wherein the access controller is further configured to, in response to the number of the first plurality of requests below the first limit, include the at least one of the plurality of processing circuits in the selecting of the subset.
[0071] 6. The IC of any of clause 3 to clause 5, wherein:
[0072] the access manager is further configured to determine the memory interface utilization based on a history of the plurality of processing circuits coupled to the plurality of channels of the memory interface.
[0073] 7. The IC of any of clause 3 to clause 6, wherein:
[0074] the access manager further comprises a plurality of configuration registers configured to store memory utilization limits corresponding to each of the plurality of processing circuits; and
[0075] the access manager is configured to generate the limit control signal based on the memory interface utilization of one or more of the plurality of processing circuits exceeding a corresponding memory utilization limit.
[0076] 8. The IC of clause 7, wherein:
[0077] the access manager is further configured to alert a first one of the plurality of processing circuits that the memory interface utilization of the at least one of the plurality of processing circuits exceeds a corresponding memory utilization limit.
[0078] 9. The IC of clause 7 or clause 8, wherein:
[0079] the access manager is further configured to alert the first one of the plurality of processing circuits that the memory interface utilization of the at least one of the plurality of processing circuits dropped below the corresponding memory utilization limit.
[0080] 10. The IC of clause 7 to clause 9, wherein:
[0081] the access controller is further configured to include the at least one of the plurality of processing circuits in the selecting of the subset in response to the memory interface utilization of the at least one of the plurality of processing circuits has dropped below the corresponding memory utilization limit.
[0082] 11. The IC of any of clause 3 to clause 10, wherein the plurality of processing circuits comprises a central processing circuit (CPU) , a graphics processing circuit (GPU) , and neural processing circuit (NPU) , and at least two other processing circuits.
[0083] 12. The IC of any of clause 3 to clause 11, integrated into an integrated circuit package.
[0084] 13. The IC of any of clause 3 to clause 12, integrated into a device selected from the group consisting of: a set-top box; an entertainment unit; a navigation device; a communications device; a fixed location data unit; a mobile location data unit; a global positioning system (GPS) device; a mobile phone; a cellular phone; a smartphone; a session initiation protocol (SIP) phone; a tablet; a phablet; a server; a computer; a portable computer; a mobile computing device; a wearable computing device; a desktop computer; a personal digital assistant (PDA) ; a monitor; a computer monitor; a television; a tuner; a radio; a satellite radio; a music player; a digital music player; a portable music player; a digital video player; a video player; a digital video disc (DVD) player; a portable digital video player; an automobile; a vehicle component; an avionics system; a drone; and a multicopter.
[0085] 14. A method of controlling memory access in an integrated circuit (IC) , the method comprising;
[0086] controlling access of a plurality of processing circuits in the IC to a memory interface based on respective priority levels of the plurality of processing circuits; and
[0087] limiting access of at least one of the plurality of processing circuits based on predetermined limits of a memory interface utilization of the at least one of the plurality of processing circuits.
[0088] 15. The method of clause 14, further comprising:
[0089] receiving a first plurality of requests, submitted from the plurality of processing circuits, for access to the memory interface; and
[0090] in response to a number of the first plurality of requests exceeding a first limit, selecting a subset of the plurality of processing circuits that submitted requests and have a highest priority level of the priority levels, for access to the memory interface.
[0091] 16. The method of clause 15, further comprising:
[0092] generating a limit control signal to exclude the at least one of the plurality of processing circuits from the selected subset based on the memory interface utilization of the at least one of the plurality of processing circuits; and
[0093] in response to receiving the limit control signal, excluding the at least one of the plurality of processing circuits from the selecting of the subset.
[0094] 17. The method of clause 15 or clause 16, further comprising, in response to the number of the first plurality of requests dropped below the first limit, including the at least one of the plurality of processing circuits in the selecting of the subset.
[0095] 18. The method of any of clause 15 to clause 17, wherein selecting the plurality of processing circuits for access to the memory interface comprises coupling the plurality of processing circuits to a plurality of channels in the memory interface.
[0096] 19. The method of any of clause 16 to clause 18, further comprising determining the memory interface utilization based on a history of the plurality of processing circuits coupled to the plurality of channels of the memory interface.
[0097] 20. The method of any of clause 16 to clause 19, further comprising:
[0098] programming memory utilization limits corresponding to each processing circuit of the plurality of processing circuits in a plurality of configuration registers; and
[0099] generating the limit control signal based on the memory interface utilization of one or more of the plurality of processing circuits exceeding a corresponding memory utilization limit.
[0100] 21. The method of clause 20, further comprising alerting a first one of the plurality of processing circuits that the memory interface utilization of the at least one of the plurality of processing circuits exceeds a corresponding memory utilization limit.
Claims
1.An integrated circuit (IC) , comprising:a memory interface configured to couple to a memory circuit;a plurality of processing circuits configured to access the memory circuit by the memory interface;a memory access circuit coupled to the memory interface and to each of the plurality of processing circuits, the memory access circuit comprising:an access controller configured to control access of the plurality of processing circuits to the memory interface based on respective priority levels of the plurality of processing circuits; andan access manager configured to limit access of at least one of the plurality of processing circuits to the memory interface based on predetermined limits of a memory interface utilization of the at least one of the plurality of processing circuits.2.The IC of claim 1, the access controller is further configured to:receive a first plurality of requests, submitted from the plurality of processing circuits, for access to the memory interface; andin response to a number of the first plurality of requests exceeding a first limit, select a subset of the plurality of processing circuits that submitted requests and have the highest priority level of the priority levels, for access to the memory interface.3.The IC of claim 2, wherein:the access manager is configured to generate a limit control signal to exclude the at least one of the plurality of processing circuits from the selected subset based on the memory interface utilization of the at least one of the plurality of processing circuits; andthe access controller is further configured to, in response to receiving the limit control signal, exclude the at least one of the plurality of processing circuits from the selecting of the subset.4.The IC of claim 2, wherein:the memory interface comprises a plurality of channels configured to couple to the memory circuit;the first limit is based on a number of the plurality of channels available; andselecting the plurality of processing circuits for access to the memory interface comprises coupling the plurality of processing circuits to available channels of the plurality of channels of the memory interface.5.The IC of claim 3, wherein the access controller is further configured to, in response to the number of the first plurality of requests below the first limit, include the at least one of the plurality of processing circuits in the selecting of the subset.6.The IC of claim 3, wherein:the access manager is further configured to determine the memory interface utilization based on a history of the plurality of processing circuits coupled to the plurality of channels of the memory interface.7.The IC of claim 3, wherein:the access manager further comprises a plurality of configuration registers configured to store memory utilization limits corresponding to each of the plurality of processing circuits; andthe access manager is configured to generate the limit control signal based on the memory interface utilization of one or more of the plurality of processing circuits exceeding a corresponding memory utilization limit.8.The IC of claim 7, wherein:the access manager is further configured to alert a first one of the plurality of processing circuits that the memory interface utilization of the at least one of the plurality of processing circuits exceeds a corresponding memory utilization limit.9.The IC of claim 7, wherein:the access manager is further configured to alert the first one of the plurality of processing circuits that the memory interface utilization of the at least one of the plurality of processing circuits dropped below the corresponding memory utilization limit.10.The IC of claim 7, wherein:the access controller is further configured to include the at least one of the plurality of processing circuits in the selecting of the subset in response to the memory interface utilization of the at least one of the plurality of processing circuits has dropped below the corresponding memory utilization limit.11.The IC of claim 3, wherein the plurality of processing circuits comprises a central processing circuit (CPU) , a graphics processing circuit (GPU) , and neural processing circuit (NPU) , and at least two other processing circuits.12.The IC of claim 1, integrated into an integrated circuit package.13.The IC of claim 1, integrated into a device selected from the group consisting of: a set-top box; an entertainment unit; a navigation device; a communications device; a fixed location data unit; a mobile location data unit; a global positioning system (GPS) device; a mobile phone; a cellular phone; a smartphone; a session initiation protocol (SIP) phone; a tablet; a phablet; a server; a computer; a portable computer; a mobile computing device; a wearable computing device; a desktop computer; a personal digital assistant (PDA) ; a monitor; a computer monitor; a television; a tuner; a radio; a satellite radio; a music player; a digital music player; a portable music player; a digital video player; a video player; a digital video disc (DVD) player; a portable digital video player; an automobile; a vehicle component; an avionics system; a drone; and a multicopter.14.A method of controlling memory access in an integrated circuit (IC) , the method comprising:controlling access of a plurality of processing circuits in the IC to a memory interface based on respective priority levels of the plurality of processing circuits; andlimiting access of at least one of the plurality of processing circuits based on predetermined limits of a memory interface utilization of the at least one of the plurality of processing circuits.15.The method of claim 14, further comprising:receiving a first plurality of requests, submitted from the plurality of processing circuits, for access to the memory interface; andin response to a number of the first plurality of requests exceeding a first limit, selecting a subset of the plurality of processing circuits that submitted requests and have a highest priority level of the priority levels, for access to the memory interface.16.The method of claim 15, further comprising:generating a limit control signal to exclude the at least one of the plurality of processing circuits from the selected subset based on the memory interface utilization of the at least one of the plurality of processing circuits; andin response to receiving the limit control signal, excluding the at least one of the plurality of processing circuits from the selecting of the subset.17.The method of claim 15, further comprising, in response to the number of the first plurality of requests dropped below the first limit, including the at least one of the plurality of processing circuits in the selecting of the subset.18.The method of claim 15, wherein selecting the plurality of processing circuits for access to the memory interface comprises coupling the plurality of processing circuits to a plurality of channels in the memory interface.19.The method of claim 16, further comprising determining the memory interface utilization based on a history of the plurality of processing circuits coupled to the plurality of channels of the memory interface.20.The method of claim 16, further comprising:programming memory utilization limits corresponding to each processing circuit of the plurality of processing circuits in a plurality of configuration registers; andgenerating the limit control signal based on the memory interface utilization of one or more of the plurality of processing circuits exceeding a corresponding memory utilization limit.21.The method of claim 20, further comprising alerting a first one of the plurality of processing circuits that the memory interface utilization of the at least one of the plurality of processing circuits exceeds a corresponding memory utilization limit.
Citation Information
Patent Citations
Memory access system, method for controlling the same, computer-readable storage medium, and image forming appratus
CN108363669A
Dynamic authorization batching in a dispersed storage network
CN111788560A
Application specific integrated circuit for shared memory controller
EP0548550A2
Priority aware selective cache allocation
US20090172315A1
Cache snoop limiting within a multiple master data processing system
US20100057997A1