US20150039790A1 - Dynamic priority control based on latency tolerance - Google Patents
Dynamic priority control based on latency tolerance Download PDFInfo
- Publication number
- US20150039790A1 US20150039790A1 US13/957,843 US201313957843A US2015039790A1 US 20150039790 A1 US20150039790 A1 US 20150039790A1 US 201313957843 A US201313957843 A US 201313957843A US 2015039790 A1 US2015039790 A1 US 2015039790A1
- Authority
- US
- United States
- Prior art keywords
- data
- display engine
- priority
- communication channel
- buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/001—Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/003—Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
Definitions
- This disclosure relates to the field of processing devices and, in particular, to dynamic priority control based on latency tolerance.
- a communication channel may be used to transfer data between client devices and memory.
- latency in the transfer of data across the communication channel can be detrimental.
- the client device is a display engine running a display
- excess latency can negatively affect the visual output on the display, causing a lag or buffering.
- the communication channel may be shared by multiple client devices including the display engine.
- Conventional systems prioritize data transfers associated with the display engine above all other data on the communication channel in order to avoid display latency, which may be visually observed on a display screen. This comes at the expense of the other client devices utilizing the communication channel and can harm the performance of those other client devices.
- FIG. 1 is a block diagram illustrating a computing device that dynamic priority control based on latency tolerance, according to an embodiment.
- FIG. 2 is a block diagram illustrating a communication channel with dynamic priority control, according to an embodiment.
- FIG. 3 is a block diagram illustrating a dynamic priority controller, according to an embodiment.
- FIG. 4 is line graph illustrating the level of data in a display engine buffer over time, according to an embodiment.
- FIG. 5 is a flow diagram illustrating a method for dynamic priority control, according to an embodiment.
- FIG. 6 is a flow diagram illustrating a method for dynamic priority control, according to an embodiment.
- FIG. 7 is a block diagram of a computer system according to one embodiment.
- FIG. 8 is a block diagram of a system on chip (SoC) in accordance with an embodiment of the present disclosure.
- SoC system on chip
- FIG. 9 is a block diagram of an embodiment of a system on-chip (SOC) design.
- SOC system on-chip
- a dynamic priority controller in a client device monitors the latency tolerance of the client device and dynamically adjusts the priority of data transfers associated with the client device accordingly.
- the client device may be a display engine that drives a display in a computing device.
- the display engine may include a display engine buffer that stores requested data prior to being displayed.
- the requested data may be received from a memory or memory controller (e.g., within a processing device) located elsewhere in the computing device. Requests for the data and the data itself may be transferred over a communication channel between the display engine and the memory controller.
- the communication channel may be shared by multiple client devices, including the display engine and/or multiple data sources including the memory controller.
- the dynamic priority controller monitors the level of data in the display engine buffer and compares the level of data to multiple thresholds.
- the thresholds can be used to determine whether to adjust the priority of data transfers associated with the display engine being sent across the communication channel. For example, a first threshold may be set to indicate when the level of data in the display engine buffer is getting low. When the dynamic priority controller compares the level of data in the display engine buffer to the first threshold and determines that the level of data in the display engine buffer is less than or equal to the first threshold, the dynamic priority controller may increase the priority of data transfers associated with the display engine in the communication channel.
- a second threshold may be set to indicate when the level of data in the display engine buffer is sufficiently high.
- the dynamic priority controller may decrease the priority of data transfers associated with the display engine in the communication channel. If the level of data in the display engine buffer is between the first and second thresholds, the dynamic priority controller may maintain the current priority of data transfers (i.e., either high or low priority).
- the dynamic priority controller may generate and provide a priority control signal, message or other communication information to the communication channel and/or memory controller.
- the priority control signal may have one of multiple discreet signal values to indicate the determined priority level.
- the communication channel may include one or more arbiters that make decisions on the order in which to process (e.g., forward on) certain pieces of data.
- the dynamic priority controller may provide the priority control signal to these arbiters, and based on the value of the priority control signal, the arbiters may determine which data to process next.
- the arbiter may process data transfers associated with the display engine prior to processing pending data transfers associated with other clients that share the communication channel. If, however, the priority control signal has a low value (e.g., indicating that data transfers associated with the display engine should be given low priority), the arbiter may process pending data transfers associated with other clients that share the communication channel prior to processing data transfers associated with the display engine.
- the memory controller can give different priority to the display requests with respect to other clients based on the dynamic priority control signal.
- the display engine When the level of data in the display engine buffer is below the first threshold, the display engine may be in danger of draining the buffer completely, which can result in not being able to present pixels on the display screen or loss of the whole frame, unless the display engine buffer is populated with fresh data. Thus, the display engine cannot afford any excess latency in the transfer of data over the communication channel and/or memory controller. Accordingly, data transfers associated with the display engine should be prioritized.
- the display engine buffer is above the second threshold, the display engine can drive the display for a long period of time without needing to receive new data. Thus, some additional latency in the transfer of data over the communication channel and/or memory controller can be afforded.
- data transfers associated with the display engine can be deprioritized in relation to data transfers associated with other clients that share the communication channel and/or memory controller. This can improve the performance of these other client devices and prevent a denial of service for high bandwidth or low latency client devices.
- FIG. 1 is a block diagram illustrating a computing device that dynamic priority control based on latency tolerance, according to an embodiment.
- the computing device 100 includes processing device 110 , memory 120 , display engine 130 and display 140 .
- processing device 110 and display engine 130 are connected via communication channel 150 .
- Computing device 100 may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- PC personal computer
- PDA Personal Digital Assistant
- STB set-top box
- FIG. 1 is a block diagram illustrating a computing device that dynamic priority control based on latency tolerance, according to an embodiment.
- the computing device 100 includes processing device 110 , memory 120 , display engine 130 and display 140 .
- processing device 110 and display engine 130 are connected via communication channel 150
- Processing device 110 may be, for example, a multi-core processor including multiple cores and graphic processor unit (GPU). These cores may be physical processors, and may include various components such as front end units, execution units and back end units.
- graphics processor unit GPU
- These cores may be physical processors, and may include various components such as front end units, execution units and back end units.
- multi-core processor 110 is illustrated further below with respect to FIG. 8 .
- Processing device 110 may represent one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like.
- Processing device 110 may implement a complex instruction set computing (CISC) architecture, a reduced instruction set computer (RISC) architecture, a very long instruction word (VLIW) architecture, or other instruction sets, or a combination of instruction sets, through translation of binary codes in the above mentioned instruction sets by a compiler.
- CISC complex instruction set computing
- RISC reduced instruction set computer
- VLIW very long instruction word
- Processing device 110 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. Processing device 110 may be configured to execute processing logic for performing the operations discussed herein.
- ASIC application specific integrated circuit
- FPGA field programmable gate array
- DSP digital signal processor
- Processing device 110 may employ execution units including logic to perform algorithms for processing data, such as in the embodiments described herein.
- Processing device 110 is representative of processing systems based on the PENTIUM IIITM, PENTIUM 4®, XeonTM, Itanium, XScaleTM and/or StrongARMTM microprocessors available from Intel Corporation of Santa Clara, Calif., although other systems (including PCs having other microprocessors, engineering workstations, set-top boxes and the like) may also be used.
- sample system 100 executes a version of the WINDOWSTM operating system available from Microsoft Corporation of Redmond, Wash., although other operating systems (UNIX and Linux for example), embedded software, and/or graphical user interfaces, may also be used.
- embodiments of the present invention are not limited to any specific combination of hardware circuitry and software.
- processing device 110 includes one or more execution units 111 to implement an algorithm that is to perform at least one instruction.
- One embodiment may be described in the context of a single processor desktop or server system, but alternative embodiments may be included in a multiprocessor system.
- the processing device 110 includes a complex instruction set computer (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a processor implementing a combination of instruction sets, or any other processor device, such as a digital signal processor, for example.
- the processing device 110 may be coupled to a processor bus that transmits data signals between the processing device 110 and other components in the device 100 .
- Execution unit 111 including logic to perform integer and floating point operations, also resides in the processing device 110 .
- the processing device 110 includes a microcode (ucode) ROM to store microcode, which when executed, is to perform algorithms for certain macroinstructions or handle complex scenarios.
- microcode is potentially updateable to handle logic bugs/fixes for processing device 110 .
- execution unit 111 includes logic to handle a packed instruction set 113 . By including the packed instruction set 113 in the instruction set of a general-purpose processing device 110 , along with associated circuitry to execute the instructions, the operations used by many multimedia applications may be performed using packed data in a general-purpose processing device 110 .
- processing device 110 additionally includes memory controller 112 .
- Memory controller 112 can manage the flow of data going to and from memory 120 .
- memory controller 112 can receive and process memory access requests from client devices, such as display engine 130 .
- memory controller 112 can retrieve requested data from memory 120 and provide the data to the requesting client.
- memory controller 112 is illustrated as being part of processing device 110 . In other embodiments, however, memory controller 112 can be a separate chip or integrated into a different chip within computing device 100 .
- the CPU and GPU cores of processing device 110 can be connected to one other and to an internal processor cache.
- Memory controller 112 may be connected externally to processing device 110 (e.g., across communication channel 150 ). In other embodiments, the memory controller 112 and memory clients (e.g., display engine 130 ) can be connected in some other fashion.
- Memory 120 may include a main memory, such as read-only memory (ROM), flash memory, dynamic random access memory (DRAM) (such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), or a static memory, such as flash memory, static random access memory (SRAM), etc.
- main memory such as read-only memory (ROM), flash memory, dynamic random access memory (DRAM) (such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), or a static memory, such as flash memory, static random access memory (SRAM), etc.
- ROM read-only memory
- DRAM dynamic random access memory
- SDRAM synchronous DRAM
- RDRAM Rambus DRAM
- static memory such as flash memory, static random access memory (SRAM), etc.
- memory 120 may include some other type of storage device for storing information in a form (e.g., software, processing application) readable by a machine (e.g., a computer).
- the storage device may include a machine-readable medium including, but not limited to, magnetic storage medium (e.g., floppy diskette), optical storage medium (e.g., CD-ROM), magneto-optical storage medium, erasable programmable memory (e.g., EPROM and EEPROM), flash memory; or another type of medium suitable for storing electronic instructions.
- magnetic storage medium e.g., floppy diskette
- optical storage medium e.g., CD-ROM
- magneto-optical storage medium e.g., magneto-optical storage medium
- erasable programmable memory e.g., EPROM and EEPROM
- flash memory e.g., EPROM and EEPROM
- Display engine 130 may include electronic circuitry found in or associated with video or other graphics circuitry. Display engine may couple an image memory, such as display engine buffer 132 , or other image source data to a display device 140 such that video or image data is processed and properly formatted for the particular display device 140 . Display engine 130 may be used to convert image data that is retrieved from image memory into digital video or graphic display data that can ultimately be provided to display device 140 .
- Display device 140 may include substantially any graphic display device along with its immediate circuitry. Examples of display devices include televisions, CRT devices, LCD display panels, LED display panels, mobile device display screens, consumer product display screens, OLED displays, projection displays, laser projection displays and 3-D display devices. Display device 140 may be any output device used to present information for visual, and in some circumstances, tactile or audio reception.
- communication channel 150 connects memory controller 112 of processing device 110 to display engine 130 and optionally one or more other clients (e.g., a PCIe controller).
- communication channel 150 can include either a physical transmission medium such as wires and multiplexing arbiters, or to a logical connection over a multiplexed medium such as a radio channel.
- Communication channel 150 is used to convey information, for example a digital bit stream, from one or several senders (or transmitters) to one or several receivers.
- Communication channel 150 may have a certain capacity for transmitting information, often measured by its bandwidth in Hertz or its data rate in bits per second. In general, communicating data from one location to another requires some form of pathway or medium.
- Communication channel 150 may form this pathway and may include a cable (e.g., twisted-pair wire, cable, fiber-optic cable) and/or a broadcast medium (e.g., microwave, satellite, radio, infrared). In one embodiment, communication channel 150 may be shared my multiple client devices, including display engine 130 .
- a cable e.g., twisted-pair wire, cable, fiber-optic cable
- a broadcast medium e.g., microwave, satellite, radio, infrared.
- communication channel 150 may be shared my multiple client devices, including display engine 130 .
- display engine 130 includes display engine buffer 132 and dynamic priority controller 160 .
- Display engine buffer 132 can receive and store display data received from host memory controller 112 , for example in video random-access memory (VRAM) or other electronic or other memory, for instance in a linear, sequential, or other format.
- display engine buffer 132 can be embedded in a video display card, discrete graphic card, integrated in a motherboard video controller, or configured in other locations of display engine 130 or computing device 100 .
- display engine buffer 132 temporarily stores data fetched from memory 120 before it is processed by display engine 130 , to be displayed on display 140 .
- Display engine 130 may then drive display 140 with the data stored in display engine buffer 132 . Over time, display engine buffer 132 may be replenished with additional data received over communication channel 150 in response to requests issued by display engine 130 .
- dynamic priority controller 160 monitors the level of data in display engine buffer 132 and compares the level of data to multiple thresholds.
- the thresholds can be used to determine whether to adjust the priority of data transfers associated with display engine 130 being sent across communication channel 150 .
- a first threshold may be set to indicate when the level of data in display engine buffer 132 is getting low.
- dynamic priority controller 160 may increase the priority of data transfers associated with display engine 130 in communication channel 150 .
- a second threshold may be set to indicate when the level of data in display engine buffer 132 is sufficiently high.
- dynamic priority controller 160 When dynamic priority controller 160 compares the level of data in display engine buffer 132 to the second threshold and determines that the level of data in display engine buffer 132 is greater than or equal to the second threshold, dynamic priority controller 160 may decrease the priority of data transfers associated with display engine 130 in communication channel 150 . If the level of data in display engine buffer 132 is between the first and second thresholds, dynamic priority controller 160 may maintain the current priority of data transfers (i.e., either high or low priority).
- dynamic priority controller 160 may generate and provide a priority control signal 134 to communication channel 150 .
- priority control signal 134 may have one of multiple discreet signal values to indicate the determined priority level.
- communication channel 150 may include one or more arbiters that make decisions on the order in which to process (e.g., forward on) certain pieces of data. Dynamic priority controller 160 may provide priority control signal 134 to these arbiters, and based on the value of priority control signal 134 , the arbiters may determine which data to process next.
- priority control signal 134 may process data transfers associated with display engine 130 prior to processing pending data transfers associated with other clients that share communication channel 150 .
- priority control signal 134 has a low value (e.g., indicating that data transfers associated with the display engine should be given low priority)
- the arbiter may process pending data transfers associated with other clients that share communication channel 150 prior to processing data transfers associated with display engine 130 .
- other signal values may be used for priority control signal 134 .
- a low value may indicate high priority while a high value may indicate low priority.
- the notion of priority setting can be transmitted through a message from the display engine 130 to the arbiters in the communication channel and memory controller 112 .
- FIG. 2 is a block diagram illustrating a communication channel with dynamic priority control, according to an embodiment.
- communication channel 150 may connect memory controller 113 and display engine 130 to transfer requests for display data from display engine 130 to memory controller 113 and to transfer the requested display data from memory controller 113 to display engine 130 .
- communication channel 150 may be a virtual channel such that it does not include a dedicated link between two entities. Rather, a virtual channel may include one or more intermediate buffers, which may be referred to herein as hubs 252 . Hubs 252 may be formed using shared resources that are individually allocated in order to form the virtual channel.
- Each of hubs 252 may include an arbiter 254 and a data storage that can temporarily store data (e.g., virtual channel 0 requests or data 256 and virtual channel 1 requests or data 258 ) during transfer between display engine 130 and memory controller 113 .
- Each arbiter 254 may implement one or more arbitration policies that are based on the received priority control signal 134 to determine whether to process virtual channel 0 requests or data 256 or virtual channel 1 requests or data 258 .
- arbiter 254 may first process (e.g., forward on to the next hub 252 in communication channel 150 ) the high priority requests or data before processing the low priority requests and data.
- the high priority requests and data may be those associated with the display engine 130
- the low priority requests and data are those associated with other client devices that share communication channel 150 .
- the high priority requests and data may be virtual channel 0 requests or data 256
- the low priority requests and data may be virtual channel 1 requests or data 258 .
- the priorities may be reversed, such that virtual channel 1 has high priority while virtual channel 0 has low priority.
- the client device i.e., the device including dynamic priority controller 160
- the high priority requests and data may be those associated with that client device.
- arbiter 254 may first process low priority requests or data before processing the high priority requests and data.
- there may be requests or data associated with additional virtual channels e.g., virtual channel N (not shown)).
- the arbiters 254 may determine the priority of the requests and data associated with each virtual channel relative to the other channels based on the priority control signal 134 and process those requests and data accordingly.
- FIG. 3 is a block diagram illustrating a dynamic priority controller, according to an embodiment.
- dynamic priority controller 160 includes buffer monitoring module 302 , threshold comparison module 304 , request interface module 306 and control signal generator 308 .
- This arrangement of modules and components may be a logical separation, and in other embodiments, these modules or other components can be combined together or separated in further components, according to a particular embodiment.
- data store 340 is connected to dynamic priority controller 160 and includes display engine buffer 132 and buffer threshold data 344 .
- display engine 130 may include both dynamic priority controller 160 and data store 340 .
- data store 340 may be external to server display engine 130 and may be connected to display engine 130 over a network or other connection.
- Display engine 130 may include different and/or additional components which are not shown to simplify the description.
- Data store 340 may include one or more mass storage devices which can include, for example, flash memory, magnetic or optical disks, or tape drives; read-only memory (ROM); random-access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or any other type of storage medium.
- buffer monitoring module 302 monitors the level of data in display engine buffer 132 .
- Buffer monitoring module 302 may periodically query display engine buffer 132 for the level of data.
- the level of data may be expressed in a size of the data currently stored in display engine buffer 132 (e.g., measured in bytes) or as a percentage or fraction of the capacity of display engine buffer 132 that is currently filled.
- buffer monitoring module 302 may query display engine buffer 132 for the level of data each time new data is received over communication channel 150 , each time data is removed from display engine buffer 132 to be displayed on display 140 , after the expiration of some period of time (e.g., every one micro second), and/or in response to a request to determine the level of data in display engine buffer 132 received from some other component in the system.
- buffer monitoring module 302 may store a value representing the level of data in display engine buffer 132 in data store 340 .
- threshold comparison module 304 compares the level of data in display engine buffer 132 to one or more thresholds.
- the thresholds can be used to determine whether to adjust the priority of data transfers associated with display engine 130 being sent across communication channel 150 .
- the thresholds are stored as buffer threshold data 344 in data store 340 .
- a first threshold may be set to indicate when the level of data in display engine buffer 132 is getting low.
- dynamic priority controller 160 may increase the priority of data transfers associated with display engine 130 in the communication channel 150 .
- the first threshold may be for example, on the order of several Kb or less than one percent. In one embodiment, the first threshold is determined based on a minimum latency for transferring data across communication channel 150 and the drain rate of the buffer 132 by the display engine 130 . In other embodiments, the first threshold is configurable (e.g. by driver, based on display resolution) and may be set at some other level.
- a second threshold may be set to indicate when the level of data in display engine buffer 132 is sufficiently high.
- threshold comparison module 304 compares the level of data in display engine buffer 132 to the second threshold and determines that the level of data in display engine buffer 132 is greater than or equal to the second threshold, dynamic priority controller 160 may decrease the priority of data transfers associated with display engine 130 in communication channel 150 .
- the second threshold may be for example, 100 Kb or approximately 25-50%.
- the second threshold is determined based on a rate of consumption of the data in display engine buffer 132 by display engine 130 .
- the second threshold is configurable and may be set at some other level based on post silicon performance tuning.
- request interface module 306 can receive and process requests to increase the channel priority for transfer associated with display engine 130 without regard for the current level of data in display engine buffer 132 .
- request interface module 306 may receive an indication from a power controller in computing device 100 that memory controller 112 is going to shut down for a period of time and as such, will not be able to service requests for data to replenish display engine buffer 132 .
- request interface module 306 may cause dynamic priority controller 160 to change the priority level to high priority for data transfer associated with display engine 130 until display engine buffer 132 is full.
- a request to adjust the priority may come from some other component in computing device 100 .
- control signal generator 308 generates and provide a priority control signal 134 to communication channel 150 .
- priority control signal 134 may have one of multiple discreet signal values to indicate the determined priority level.
- communication channel 150 may include one or more arbiters 254 that make decisions on the order in which to process (e.g., forward on) certain pieces of data. Control signal generator 308 may provide the priority control signal 134 to these arbiters 254 , and based on the value of the priority control signal 134 , the arbiters 254 may determine which data to process next.
- the arbiter 254 may process data transfers associated with the display engine 130 prior to processing pending data transfers associated with other clients that share the communication channel 150 . If, however, the priority control signal 134 has a low value (e.g., indicating that data transfers associated with the display engine 130 should be given low priority), the arbiter 254 may process pending data transfers associated with other clients that share the communication channel 150 prior to processing data transfers associated with the display engine 130 .
- the control signal generator 308 can generate a side band configuration message to the communication channel and memory controller.
- FIG. 4 is line graph illustrating the level of data 410 in a display engine buffer over time 420 , according to an embodiment.
- the line 440 represents the current level of data in display engine buffer 132 at any given point.
- the display engine buffer 132 is empty 412 .
- Dynamic priority controller 160 may set a high priority 431 for processing transfers associated with display engine 130 until the level of data 440 reaches a high data threshold 414 at time 422 .
- dynamic priority controller 160 may decrease the priority to a low priority 432 since the level of data 440 is greater than high threshold 414 .
- the priority may remain low 432 until the display engine bugger 132 because full 415 at time 423 .
- there may be a period of time during which no requests for data 433 are issued by display engine 130 continuing until the level of data 440 reaches a critical threshold 413 at time 424 .
- dynamic priority controller 160 may increase the priority to a high priority 434 until the level of data 440 returns to the high threshold 414 at time 425 .
- dynamic priority controller 160 may decrease the priority to a low priority 435 since the level of data 440 is greater than high threshold 414 .
- dynamic priority controller 160 may receive a request to increase the priority level.
- dynamic priority controller 160 may increase the priority to a high priority 436 until the level of data 440 reaches the capacity 415 of display engine buffer 132 at time 427 .
- dynamic priority controller 160 may decrease the priority level to low priority or issue no further request for data 437 .
- FIG. 5 is a flow diagram illustrating a method for dynamic priority control, according to an embodiment.
- the method 500 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof.
- the processing logic may dynamically control the priority level of data transfers associated with a client based on the latency tolerance of the client.
- the method 500 is performed by dynamic priority controller 160 , as shown in FIGS. 1-3 .
- buffer monitoring module 302 may periodically query display engine buffer 132 for the level of data.
- buffer monitoring module 302 may query display engine buffer 132 for the level of data each time new data is received over communication channel 150 , each time data is removed from display engine buffer 132 to be displayed on display 140 , after the expiration of some period of time (e.g., every one micro second), and/or in response to a request to determine the level of data in display engine buffer 132 received from some other component in the system, or simply constantly monitoring every clock cycle.
- buffer monitoring module 302 may store a value representing the level of data in display engine buffer 132 in data store 340 .
- method 500 determines whether the level of data in display engine buffer 132 is less than or equal to a first threshold.
- threshold comparison module 304 compares the level of data in display engine buffer 132 to a first (critical) threshold.
- the first threshold may be set to indicate when the level of data in display engine buffer 132 is getting low and can be used to determine whether to increase the priority of data transfers associated with display engine 130 being sent across communication channel 150 .
- method 500 determines that the level of data in display engine buffer 132 is less than or equal to the first threshold, at bock 530 , method 500 increases the channel priority level to a high priority.
- control signal generator 308 may generate and provide a priority control signal 134 with a high value (e.g., indicating that data transfers associated with the display engine 130 should be given high priority) to one or more arbiters in communication channel 150 .
- the arbiters 254 may process data transfers associated with the display engine 130 prior to processing pending data transfers associated with other clients that share the communication channel 150 .
- method 500 determines whether the level of data in display engine buffer 132 is greater than or equal to a second threshold.
- threshold comparison module 304 compares the level of data in display engine buffer 132 to a second (high) threshold. The second threshold may be set to indicate when the level of data in display engine buffer 132 is sufficiently high and can be used to determine whether to decrease the priority of data transfers associated with display engine 130 being sent across communication channel 150 .
- control signal generator 308 may generate and provide a priority control signal 134 with a low value (e.g., indicating that data transfers associated with the display engine 130 should be given low priority) to one or more arbiters in communication channel 150 .
- the arbiters 254 may process pending data transfers associated with other clients that share the communication channel 150 prior to processing data transfers associated with the display engine 130 .
- method 500 determines that the level of data in display engine buffer 132 is not greater than or equal to the second threshold (i.e., that the data level is between the first and second threshold), at block 560 , method 500 maintains the current channel priority level.
- FIG. 6 is a flow diagram illustrating a method for dynamic priority control, according to an embodiment.
- the method 600 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof.
- the processing logic may dynamically control the priority level of data transfers associated with a client based on the latency tolerance of the client.
- the method 600 is performed by dynamic priority controller 160 , as shown in FIGS. 1-3 .
- method 600 monitors a level of data in display engine buffer 132 .
- method 600 receives a request to increase the channel priority to a high priority.
- request interface module 306 can receive and process requests to increase the channel priority for transfer associated with display engine 130 without regard for the current level of data in display engine buffer 132 .
- request interface module 306 may receive an indication from a power controller in computing device 100 that memory controller 112 is going to shut down for a period of time and as such, will not be able to service requests for data to replenish display engine buffer 132 .
- a request to adjust the priority may come from some other component in computing device 100 .
- method 600 determines whether the level of data in display engine buffer 132 is less than or equal to a first threshold.
- threshold comparison module 304 compares the level of data in display engine buffer 132 to a first (critical) threshold.
- the first threshold may be set to indicate when the level of data in display engine buffer 132 is getting low and can be used to determine whether to increase the priority of data transfers associated with display engine 130 being sent across communication channel 150 .
- method 600 determines that the level of data in display engine buffer 132 is not less than or equal to the first threshold, at bock 640 , method 600 increases the channel priority level to a high priority.
- control signal generator 308 may generate and provide a priority control signal 134 with a high value (e.g., indicating that data transfers associated with the display engine 130 should be given high priority) to one or more arbiters in communication channel 150 .
- the arbiters 254 may process data transfers associated with the display engine 130 prior to processing pending data transfers associated with other clients that share the communication channel 150 .
- the priority level may remain at a high priority for data transfers associated with display engine 130 until display engine buffer 132 is full.
- method 600 determines that the level of data in display engine buffer 132 is less than or equal to the first threshold, at bock 650 , method 600 maintains the current maintains the current channel priority, which should already be at a high priority.
- multiprocessor system 700 is a point-to-point interconnect system, and includes a first processor 770 and a second processor 780 coupled via a point-to-point interconnect 750 .
- processors 770 and 780 may be some version of the processing device 110 , as shown in FIG. 1 .
- processors 770 , 780 While shown with only two processors 770 , 780 , it is to be understood that the scope of the present disclosure is not so limited. In other embodiments, one or more additional processors may be present in a given processor.
- Processors 770 and 780 are shown including integrated memory controller units 772 and 782 , respectively.
- Processor 770 also includes as part of its bus controller units point-to-point (P-P) interfaces 776 and 778 ; similarly, second processor 780 includes P-P interfaces 786 and 788 .
- Processors 770 , 780 may exchange information via a point-to-point (P-P) interface 750 using P-P interface circuits 778 , 788 .
- integrated memory controllers (IMCs) 772 and 782 couple the processors to respective memories, namely a memory 732 and a memory 734 , which may be portions of main memory locally attached to the respective processors.
- IMCs integrated memory controllers
- Processors 770 and 780 may each exchange information with a chipset 790 via individual P-P interfaces 752 , 754 using point to point interface circuits 776 , 794 , 786 , 798 .
- Chipset 790 may also exchange information with a high-performance graphics circuit 738 via a high-performance graphics interface 739 .
- a shared cache (not shown) may be included in either processor or outside of both processors, yet connected with the processors via P-P interconnect, such that either or both processors' local cache information may be stored in the shared cache if a processor is placed into a low power mode.
- first bus 716 may be a Peripheral Component Interconnect (PCI) bus, or a bus such as a PCI Express bus or another third generation I/O interconnect bus, although the scope of the present disclosure is not so limited.
- PCI Peripheral Component Interconnect
- various I/O devices 714 may be coupled to first bus 716 , along with a bus bridge 718 which couples first bus 716 to a second bus 720 .
- second bus 720 may be a low pin count (LPC) bus.
- Various devices may be coupled to second bus 720 including, for example, a keyboard and/or mouse 722 , communication devices 727 and a storage unit 728 such as a disk drive or other mass storage device which may include instructions/code and data 730 , in one embodiment.
- an audio I/O 724 may be coupled to second bus 720 .
- Note that other architectures are possible. For example, instead of the point-to-point architecture of FIG. 7 , a system may implement a multi-drop bus or other such architecture.
- FIG. 8 is a block diagram of a SoC 800 in accordance with an embodiment of the present disclosure. Dashed lined boxes are optional features on more advanced SoCs.
- an interconnect unit(s) 812 is coupled to: an application processor 820 which includes a set of one or more cores 802 A-N and shared cache unit(s) 806 ; a system agent unit 810 ; a bus controller unit(s) 816 ; an integrated memory controller unit(s) 814 ; a set or one or more media processors 818 which may include integrated graphics logic 808 , an image processor 824 for providing still and/or video camera functionality, an audio processor 826 for providing hardware audio acceleration, and a video processor 828 for providing video encode/decode acceleration; an static random access memory (SRAM) unit 830 ; a direct memory access (DMA) unit 832 ; and a display unit 840 for coupling to one or more external displays.
- SRAM static random access memory
- DMA direct memory access
- a memory module may be included in the integrated memory controller unit(s) 814 .
- the memory module may be included in one or more other components of the SoC 800 that may be used to access and/or control a memory.
- the application processor 820 may include a microcode context and aliased parameter passing logic as described in embodiments herein.
- the memory hierarchy includes one or more levels of cache within the cores, a set or one or more shared cache units 806 , and external memory (not shown) coupled to the set of integrated memory controller units 814 .
- the set of shared cache units 806 may include one or more mid-level caches, such as level 2 (L2), level 3 (L3), level 4 (L4), or other levels of cache, a last level cache (LLC), and/or combinations thereof.
- LLC last level cache
- one or more of the cores 802 A-N are capable of multi-threading.
- the system agent 810 includes those components coordinating and operating cores 802 A-N.
- the system agent unit 810 may include for example a power control unit (PCU) and a display unit.
- the PCU may be or include logic and components needed for regulating the power state of the cores 802 A-N and the integrated graphics logic 808 .
- the display unit is for driving one or more externally connected displays.
- the cores 802 A-N may be homogenous or heterogeneous in terms of architecture and/or instruction set. For example, some of the cores 802 A-N may be in order while others are out-of-order. As another example, two or more of the cores 802 A-N may be capable of execution the same instruction set, while others may be capable of executing only a subset of that instruction set or a different instruction set.
- the application processor 820 may be a general-purpose processor, such as a CoreTM i3, i5, i7, 2 Duo and Quad, XeonTM, ItaniumTM, XScaleTM or StrongARMTM processor, which are available from IntelTM Corporation, of Santa Clara, Calif. Alternatively, the application processor 820 may be from another company, such as ARM HoldingsTM, Ltd, MIPSTM, etc.
- the application processor 820 may be a special-purpose processor, such as, for example, a network or communication processor, compression engine, graphics processor, co-processor, embedded processor, or the like.
- the application processor 820 may be implemented on one or more chips.
- the application processor 820 may be a part of and/or may be implemented on one or more substrates using any of a number of process technologies, such as, for example, BiCMOS, CMOS, or NMOS.
- FIG. 9 is a block diagram of an embodiment of a system on-chip (SoC) design in accordance with the present disclosure.
- SoC 900 is included in user equipment (UE).
- UE refers to any device to be used by an end-user to communicate, such as a hand-held phone, smartphone, tablet, ultra-thin notebook, notebook with broadband adapter, or any other similar communication device.
- a UE connects to a base station or node, which potentially corresponds in nature to a mobile station (MS) in a GSM network.
- MS mobile station
- SOC 900 includes two cores— 906 and 907 .
- Cores 906 and 907 may conform to an Instruction Set Architecture, such as an Intel® Architecture CoreTM-based processor, an Advanced Micro Devices, Inc. (AMD) processor, a MIPS-based processor, an ARM-based processor design, or a customer thereof, as well as their licensees or adopters.
- Cores 906 and 907 are coupled to cache control 908 that is associated with bus interface unit 909 and L2 cache 910 to communicate with other parts of system 900 .
- Interconnect 910 includes an on-chip interconnect, such as an IOSF, AMBA, or other interconnect discussed above, which potentially implements one or more aspects of the described disclosure.
- a microcode context and aliased parameter passing logic may be included in cores 906 , 907 .
- Interconnect 910 provides communication channels to the other components, such as a Subscriber Identity Module (SIM) 930 to interface with a SIM card, a boot ROM 935 to hold boot code for execution by cores 906 and 907 to initialize and boot SoC 900 , a SDRAM controller 940 to interface with external memory (e.g. DRAM 960 ), a flash controller 945 to interface with non-volatile memory (e.g. Flash 965 ), a peripheral control 950 (e.g. Serial Peripheral Interface) to interface with peripherals, video codecs 920 and Video interface 925 to display and receive input (e.g. touch enabled input), GPU 915 to perform graphics related computations, etc. Any of these interfaces may incorporate aspects of the disclosure described herein.
- the system 900 illustrates peripherals for communication, such as a Bluetooth module 970 , 3G modem 975 , GPS 980 , and Wi-Fi 985 .
- Example 1 is an apparatus comprising 1) a data buffer; and 2) a dynamic priority controller coupled to the data buffer, the dynamic priority controller to monitor a level of data in the data buffer, compare the level of data in the data buffer to a plurality of thresholds, the plurality of thresholds comprising a first threshold and a second threshold, when the level of data in the data buffer is less than or equal to the first threshold, increase a priority for processing data associated with the data buffer in a communication channel, and when the level of data in the data buffer is greater than or equal to the second threshold, decrease the priority for processing data associated with the data buffer in the communication channel.
- Example 2 the apparatus of Example 1 can optionally include when the level of data in the data buffer is greater than the first threshold hold and less than the second threshold, maintain a current priority for processing data associated with the data buffer in the communication channel.
- Example 3 the apparatus of Example 1, can optionally include the first threshold being less than the second threshold.
- Example 4 the apparatus of Example 3, can optionally include the first threshold comprising a value based on a minimum latency for transferring data across the communication channel, and the second threshold comprising a value based on a rate of consumption of the data in the data buffer.
- Example 5 the apparatus of Example 1, can optionally include the communication channel being shared by a plurality of client devices including the data buffer and the communication channel to transfer data between a memory controller and the plurality of client devices.
- Example 6 the apparatus of Example 5, can optionally include to increase the priority for processing data associated with the data buffer in the communication channel, the dynamic priority controller to provide a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data associated with the data buffer prior to processing data for other client devices of the plurality of client devices.
- Example 7 the apparatus of Example 5, can optionally include to decrease the priority for processing data associated with the data buffer in the communication channel, the dynamic priority controller to provide a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data for other client devices of the plurality of client devices prior to processing data associated with the data buffer.
- Example 8 is a system comprising 1) a processing device comprising a memory controller, 2) a communication channel coupled to the processing device, and 3) a display engine coupled to the communication channel, the display engine comprising a display engine buffer and a dynamic priority controller, the dynamic priority controller to monitor a level of data in the display engine buffer, compare the level of data in the display engine buffer to a plurality of thresholds, the plurality of thresholds comprising a first threshold and a second threshold, when the level of data in the display engine buffer is less than or equal to the first threshold, increase a priority for processing display engine data in the communication channel, and when the level of data in the display engine buffer is greater than or equal to the second threshold, decrease the priority for processing the display engine data in the communication channel.
- Example 9 the system of Example 8, can optionally include the dynamic priority controller further to when the level of data in the display engine buffer is greater than the first threshold hold and less than the second threshold, maintain a current priority for processing the display engine data in the communication channel.
- Example 10 the system of Example 8, can optionally include the first threshold comprising a value based on a minimum latency for transferring data across the communication channel, and the second threshold comprising a value based on a rate of consumption of the data in the display engine buffer by the display engine.
- Example 11 the system of Example 8, can optionally include the communication channel being shared by a plurality of client devices including the display engine buffer and the communication channel to transfer data between the memory controller and the plurality of client devices.
- Example 12 the system of Example 11, can optionally include increasing the priority for processing display engine data in the communication channel by providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process the display engine data prior to processing data for other client devices of the plurality of client devices.
- Example 13 the system of Example 11, can optionally include decreasing the priority for processing display engine data in the communication channel by providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data for other client devices of the plurality of client devices prior to processing the display engine data.
- Example 14 is a method comprising 1) monitoring a level of data in a display engine buffer, 2) comparing, by a processing device, the level of data in the display engine buffer to a plurality of thresholds, the plurality of thresholds comprising a first threshold and a second threshold, 3) when the level of data in the display engine buffer is less than or equal to the first threshold, increasing a priority for processing display engine data in a communication channel, and 4) when the level of data in the display engine buffer is greater than or equal to the second threshold, decreasing the priority for processing the display engine data in the communication channel.
- Example 15 the method of Example 14 can optionally further comprise when the level of data in the display engine buffer is greater than the first threshold hold and less than the second threshold, maintaining a current priority for processing the display engine data in the communication channel.
- Example 16 the method of Example 14, can optionally include the first threshold being less than the second threshold.
- Example 17 the method of Example 16, can optionally include the first threshold comprising a value based on a minimum latency for transferring data across the communication channel, and the second threshold comprising a value based on a rate of consumption of the data in the display engine buffer by a display engine comprising the display engine buffer.
- Example 18 the method of Example 14, can optionally include the communication channel being shared by a plurality of client devices including the display engine buffer and the communication channel to transfer data between a memory controller and the plurality of client devices.
- Example 19 the method of Example 18, can optionally include increasing the priority for processing display engine data in the communication channel comprises providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process the display engine data prior to processing data for other client devices of the plurality of client devices.
- Example 20 the method of Example 18, can optionally include decreasing the priority for processing display engine data in the communication channel comprises providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data for other client devices of the plurality of client devices prior to processing the display engine data.
- Example 21 is an apparatus comprising 1) means for monitoring a level of data in a display engine buffer, 2) means for comparing the level of data in the display engine buffer to a plurality of thresholds, the plurality of thresholds comprising a first threshold and a second threshold, 3) means for increasing a priority for processing display engine data in a communication channel when the level of data in the display engine buffer is less than or equal to the first threshold, and 4) means for decreasing the priority for processing the display engine data in the communication channel when the level of data in the display engine buffer is greater than or equal to the second threshold.
- Example 22 the apparatus of Example 21, can optionally include means for maintaining a current priority for processing the display engine data in the communication channel when the level of data in the display engine buffer is greater than the first threshold hold and less than the second threshold.
- Example 23 the apparatus of Example 21, can optionally include the first threshold being less than the second threshold.
- Example 24 the apparatus of Example 23, can optionally include the first threshold comprising a value based on a minimum latency for transferring data across the communication channel, and the second threshold comprising a value based on a rate of consumption of the data in the display engine buffer by a display engine comprising the display engine buffer.
- Example 25 the apparatus of Example 21, can optionally include the communication channel being shared by a plurality of client devices including the display engine buffer and the communication channel to transfer data between a memory controller and the plurality of client devices.
- Example 26 the apparatus of Example 25, can optionally include the means for increasing the priority for processing display engine data in the communication channel comprising means for providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process the display engine data prior to processing data for other client devices of the plurality of client devices.
- Example 27 the apparatus of Example 25, can optionally include the means for decreasing the priority for processing display engine data in the communication channel comprising means for providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data for other client devices of the plurality of client devices prior to processing the display engine data.
- Example 28 is an apparatus comprising 1) a memory and 2) a computing system coupled to the memory, wherein the computing system is configured to perform the method of an one of Examples 14-20.
- Example 29 the apparatus of Example 28, can optionally include the computing system comprising a processing device, a memory controller, a display engine and a communication channel.
- Example 30 the apparatus of Example 29, can optionally include the display engine comprising a display engine buffer.
- Example 31 is a method comprising 1) monitoring a level of data in a client data buffer and 2) comparing, by a processing device, the level of data in the client data buffer to a plurality of thresholds, the plurality of thresholds comprising a first threshold and a second threshold and 3) controlling a priority of data requests for the client data buffer in a communication channel based on the comparing of the level of data to the first and second thresholds.
- Example 32 the method of Example 31, can optionally include controlling the priority by when the level of data in the client data buffer is less than or equal to the first threshold, increasing a priority for processing the data requests in the communication channel and when the level of data in the client data buffer is greater than or equal to the second threshold, decreasing the priority for processing the data requests in the communication channel.
- Example 33 the method of Example 31, can optionally include controlling the priority by when the level of data in the client data buffer is greater than the first threshold hold and less than the second threshold, maintaining a current priority for processing the data requests in the communication channel.
- Example 34 the method of Example 31, can optionally include the communication channel being shared by a plurality of client devices including the client data buffer and wherein the communication channel to transfer data between a memory controller and the plurality of client devices.
- Example 35 the method of Example 32, can optionally include increasing the priority for processing the data requests in the communication channel by providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process the data requests prior to processing data for other client devices.
- Example 36 the method of Example 32, can optionally include decreasing the priority for processing the data requests in the communication channel by providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data for other client devices prior to processing the data requests.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Controls And Circuits For Display Device (AREA)
- Digital Computer Display Output (AREA)
Abstract
Description
- This disclosure relates to the field of processing devices and, in particular, to dynamic priority control based on latency tolerance.
- A communication channel may be used to transfer data between client devices and memory. Depending on the client device, latency in the transfer of data across the communication channel can be detrimental. For example, if the client device is a display engine running a display, excess latency can negatively affect the visual output on the display, causing a lag or buffering. In some cases the communication channel may be shared by multiple client devices including the display engine. Conventional systems prioritize data transfers associated with the display engine above all other data on the communication channel in order to avoid display latency, which may be visually observed on a display screen. This comes at the expense of the other client devices utilizing the communication channel and can harm the performance of those other client devices.
- The present disclosure is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings.
-
FIG. 1 is a block diagram illustrating a computing device that dynamic priority control based on latency tolerance, according to an embodiment. -
FIG. 2 is a block diagram illustrating a communication channel with dynamic priority control, according to an embodiment. -
FIG. 3 is a block diagram illustrating a dynamic priority controller, according to an embodiment. -
FIG. 4 is line graph illustrating the level of data in a display engine buffer over time, according to an embodiment. -
FIG. 5 is a flow diagram illustrating a method for dynamic priority control, according to an embodiment. -
FIG. 6 is a flow diagram illustrating a method for dynamic priority control, according to an embodiment. -
FIG. 7 is a block diagram of a computer system according to one embodiment. -
FIG. 8 is a block diagram of a system on chip (SoC) in accordance with an embodiment of the present disclosure. -
FIG. 9 is a block diagram of an embodiment of a system on-chip (SOC) design. - The following description sets forth numerous specific details such as examples of specific systems, components, methods, and so forth, in order to provide a good understanding of several embodiments of the present disclosure. It will be apparent to one skilled in the art, however, that at least some embodiments of the present disclosure may be practiced without these specific details. In other instances, well-known components or methods are not described in detail or are presented in simple block diagram format in order to avoid unnecessarily obscuring the present disclosure. Thus, the specific details set forth are merely exemplary. Particular embodiments may vary from these exemplary details and still be contemplated to be within the scope of the present disclosure.
- Described herein is a system and method for dynamic priority control based on latency tolerance. In one embodiment, a dynamic priority controller in a client device monitors the latency tolerance of the client device and dynamically adjusts the priority of data transfers associated with the client device accordingly. For example, the client device may be a display engine that drives a display in a computing device. The display engine may include a display engine buffer that stores requested data prior to being displayed. The requested data may be received from a memory or memory controller (e.g., within a processing device) located elsewhere in the computing device. Requests for the data and the data itself may be transferred over a communication channel between the display engine and the memory controller. In one embodiment, the communication channel may be shared by multiple client devices, including the display engine and/or multiple data sources including the memory controller.
- In one embodiment, the dynamic priority controller monitors the level of data in the display engine buffer and compares the level of data to multiple thresholds. The thresholds can be used to determine whether to adjust the priority of data transfers associated with the display engine being sent across the communication channel. For example, a first threshold may be set to indicate when the level of data in the display engine buffer is getting low. When the dynamic priority controller compares the level of data in the display engine buffer to the first threshold and determines that the level of data in the display engine buffer is less than or equal to the first threshold, the dynamic priority controller may increase the priority of data transfers associated with the display engine in the communication channel. A second threshold may be set to indicate when the level of data in the display engine buffer is sufficiently high. When the dynamic priority controller compares the level of data in the display engine buffer to the second threshold and determines that the level of data in the display engine buffer is greater than or equal to the second threshold, the dynamic priority controller may decrease the priority of data transfers associated with the display engine in the communication channel. If the level of data in the display engine buffer is between the first and second thresholds, the dynamic priority controller may maintain the current priority of data transfers (i.e., either high or low priority).
- In one embodiment, to adjust the priority in the situations described above, the dynamic priority controller may generate and provide a priority control signal, message or other communication information to the communication channel and/or memory controller. For example, the priority control signal may have one of multiple discreet signal values to indicate the determined priority level. In one embodiment, the communication channel may include one or more arbiters that make decisions on the order in which to process (e.g., forward on) certain pieces of data. The dynamic priority controller may provide the priority control signal to these arbiters, and based on the value of the priority control signal, the arbiters may determine which data to process next. For example, if the priority control signal has a high value (e.g., indicating that data transfers associated with the display engine should be given high priority), the arbiter may process data transfers associated with the display engine prior to processing pending data transfers associated with other clients that share the communication channel. If, however, the priority control signal has a low value (e.g., indicating that data transfers associated with the display engine should be given low priority), the arbiter may process pending data transfers associated with other clients that share the communication channel prior to processing data transfers associated with the display engine. Similarly, the memory controller can give different priority to the display requests with respect to other clients based on the dynamic priority control signal.
- When the level of data in the display engine buffer is below the first threshold, the display engine may be in danger of draining the buffer completely, which can result in not being able to present pixels on the display screen or loss of the whole frame, unless the display engine buffer is populated with fresh data. Thus, the display engine cannot afford any excess latency in the transfer of data over the communication channel and/or memory controller. Accordingly, data transfers associated with the display engine should be prioritized. When the level of data in the display engine buffer is above the second threshold, the display engine can drive the display for a long period of time without needing to receive new data. Thus, some additional latency in the transfer of data over the communication channel and/or memory controller can be afforded. Accordingly, data transfers associated with the display engine can be deprioritized in relation to data transfers associated with other clients that share the communication channel and/or memory controller. This can improve the performance of these other client devices and prevent a denial of service for high bandwidth or low latency client devices.
-
FIG. 1 is a block diagram illustrating a computing device that dynamic priority control based on latency tolerance, according to an embodiment. In one embodiment, thecomputing device 100 includesprocessing device 110,memory 120,display engine 130 anddisplay 140. In one embodiment,processing device 110 anddisplay engine 130 are connected viacommunication channel 150.Computing device 100 may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single computing device is illustrated, the term “computing device” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. -
Processing device 110 may be, for example, a multi-core processor including multiple cores and graphic processor unit (GPU). These cores may be physical processors, and may include various components such as front end units, execution units and back end units. One embodiment ofmulti-core processor 110 is illustrated further below with respect toFIG. 8 .Processing device 110 may represent one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like.Processing device 110 may implement a complex instruction set computing (CISC) architecture, a reduced instruction set computer (RISC) architecture, a very long instruction word (VLIW) architecture, or other instruction sets, or a combination of instruction sets, through translation of binary codes in the above mentioned instruction sets by a compiler.Processing device 110 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like.Processing device 110 may be configured to execute processing logic for performing the operations discussed herein. -
Processing device 110 may employ execution units including logic to perform algorithms for processing data, such as in the embodiments described herein.Processing device 110 is representative of processing systems based on the PENTIUM III™, PENTIUM 4®, Xeon™, Itanium, XScale™ and/or StrongARM™ microprocessors available from Intel Corporation of Santa Clara, Calif., although other systems (including PCs having other microprocessors, engineering workstations, set-top boxes and the like) may also be used. In one embodiment,sample system 100 executes a version of the WINDOWS™ operating system available from Microsoft Corporation of Redmond, Wash., although other operating systems (UNIX and Linux for example), embedded software, and/or graphical user interfaces, may also be used. Thus, embodiments of the present invention are not limited to any specific combination of hardware circuitry and software. - In this illustrated embodiment,
processing device 110 includes one ormore execution units 111 to implement an algorithm that is to perform at least one instruction. One embodiment may be described in the context of a single processor desktop or server system, but alternative embodiments may be included in a multiprocessor system. Theprocessing device 110, as one illustrative example, includes a complex instruction set computer (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a processor implementing a combination of instruction sets, or any other processor device, such as a digital signal processor, for example. Theprocessing device 110 may be coupled to a processor bus that transmits data signals between theprocessing device 110 and other components in thedevice 100. -
Execution unit 111, including logic to perform integer and floating point operations, also resides in theprocessing device 110. Theprocessing device 110, in one embodiment, includes a microcode (ucode) ROM to store microcode, which when executed, is to perform algorithms for certain macroinstructions or handle complex scenarios. Here, microcode is potentially updateable to handle logic bugs/fixes forprocessing device 110. For one embodiment,execution unit 111 includes logic to handle a packedinstruction set 113. By including the packedinstruction set 113 in the instruction set of a general-purpose processing device 110, along with associated circuitry to execute the instructions, the operations used by many multimedia applications may be performed using packed data in a general-purpose processing device 110. Thus, many multimedia applications are accelerated and executed more efficiently by using the full width of a processor's data bus for performing operations on packed data. This potentially eliminates the need to transfer smaller units of data across the processor's data bus to perform one or more operations, one data element at a time. - In one embodiment,
processing device 110 additionally includesmemory controller 112.Memory controller 112 can manage the flow of data going to and frommemory 120. For example,memory controller 112 can receive and process memory access requests from client devices, such asdisplay engine 130. In addition,memory controller 112 can retrieve requested data frommemory 120 and provide the data to the requesting client. In this embodiment,memory controller 112 is illustrated as being part ofprocessing device 110. In other embodiments, however,memory controller 112 can be a separate chip or integrated into a different chip withincomputing device 100. For example, in another embodiment, the CPU and GPU cores ofprocessing device 110 can be connected to one other and to an internal processor cache.Memory controller 112 may be connected externally to processing device 110 (e.g., across communication channel 150). In other embodiments, thememory controller 112 and memory clients (e.g., display engine 130) can be connected in some other fashion. -
Memory 120 may include a main memory, such as read-only memory (ROM), flash memory, dynamic random access memory (DRAM) (such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), or a static memory, such as flash memory, static random access memory (SRAM), etc. In other embodiments,memory 120 may include some other type of storage device for storing information in a form (e.g., software, processing application) readable by a machine (e.g., a computer). The storage device may include a machine-readable medium including, but not limited to, magnetic storage medium (e.g., floppy diskette), optical storage medium (e.g., CD-ROM), magneto-optical storage medium, erasable programmable memory (e.g., EPROM and EEPROM), flash memory; or another type of medium suitable for storing electronic instructions. -
Display engine 130 may include electronic circuitry found in or associated with video or other graphics circuitry. Display engine may couple an image memory, such asdisplay engine buffer 132, or other image source data to adisplay device 140 such that video or image data is processed and properly formatted for theparticular display device 140.Display engine 130 may be used to convert image data that is retrieved from image memory into digital video or graphic display data that can ultimately be provided todisplay device 140.Display device 140 may include substantially any graphic display device along with its immediate circuitry. Examples of display devices include televisions, CRT devices, LCD display panels, LED display panels, mobile device display screens, consumer product display screens, OLED displays, projection displays, laser projection displays and 3-D display devices.Display device 140 may be any output device used to present information for visual, and in some circumstances, tactile or audio reception. - In one embodiment,
communication channel 150 connectsmemory controller 112 ofprocessing device 110 to displayengine 130 and optionally one or more other clients (e.g., a PCIe controller). In one embodiment,communication channel 150 can include either a physical transmission medium such as wires and multiplexing arbiters, or to a logical connection over a multiplexed medium such as a radio channel.Communication channel 150 is used to convey information, for example a digital bit stream, from one or several senders (or transmitters) to one or several receivers.Communication channel 150 may have a certain capacity for transmitting information, often measured by its bandwidth in Hertz or its data rate in bits per second. In general, communicating data from one location to another requires some form of pathway or medium.Communication channel 150 may form this pathway and may include a cable (e.g., twisted-pair wire, cable, fiber-optic cable) and/or a broadcast medium (e.g., microwave, satellite, radio, infrared). In one embodiment,communication channel 150 may be shared my multiple client devices, includingdisplay engine 130. - In one embodiment,
display engine 130 includesdisplay engine buffer 132 anddynamic priority controller 160.Display engine buffer 132 can receive and store display data received fromhost memory controller 112, for example in video random-access memory (VRAM) or other electronic or other memory, for instance in a linear, sequential, or other format. In embodiments,display engine buffer 132 can be embedded in a video display card, discrete graphic card, integrated in a motherboard video controller, or configured in other locations ofdisplay engine 130 orcomputing device 100. In one embodiment,display engine buffer 132 temporarily stores data fetched frommemory 120 before it is processed bydisplay engine 130, to be displayed ondisplay 140.Display engine 130 may then drivedisplay 140 with the data stored indisplay engine buffer 132. Over time,display engine buffer 132 may be replenished with additional data received overcommunication channel 150 in response to requests issued bydisplay engine 130. - In one embodiment,
dynamic priority controller 160 monitors the level of data indisplay engine buffer 132 and compares the level of data to multiple thresholds. The thresholds can be used to determine whether to adjust the priority of data transfers associated withdisplay engine 130 being sent acrosscommunication channel 150. For example, a first threshold may be set to indicate when the level of data indisplay engine buffer 132 is getting low. Whendynamic priority controller 160 compares the level of data indisplay engine buffer 132 to the first threshold and determines that the level of data indisplay engine buffer 132 is less than or equal to the first threshold,dynamic priority controller 160 may increase the priority of data transfers associated withdisplay engine 130 incommunication channel 150. A second threshold may be set to indicate when the level of data indisplay engine buffer 132 is sufficiently high. Whendynamic priority controller 160 compares the level of data indisplay engine buffer 132 to the second threshold and determines that the level of data indisplay engine buffer 132 is greater than or equal to the second threshold,dynamic priority controller 160 may decrease the priority of data transfers associated withdisplay engine 130 incommunication channel 150. If the level of data indisplay engine buffer 132 is between the first and second thresholds,dynamic priority controller 160 may maintain the current priority of data transfers (i.e., either high or low priority). - In one embodiment, to adjust the priority in the situations described above,
dynamic priority controller 160 may generate and provide apriority control signal 134 tocommunication channel 150. For example,priority control signal 134 may have one of multiple discreet signal values to indicate the determined priority level. In one embodiment,communication channel 150 may include one or more arbiters that make decisions on the order in which to process (e.g., forward on) certain pieces of data.Dynamic priority controller 160 may providepriority control signal 134 to these arbiters, and based on the value ofpriority control signal 134, the arbiters may determine which data to process next. For example, ifpriority control signal 134 has a high value (e.g., indicating that data transfers associated with the display engine should be given high priority), the arbiter may process data transfers associated withdisplay engine 130 prior to processing pending data transfers associated with other clients that sharecommunication channel 150. If, however,priority control signal 134 has a low value (e.g., indicating that data transfers associated with the display engine should be given low priority), the arbiter may process pending data transfers associated with other clients that sharecommunication channel 150 prior to processing data transfers associated withdisplay engine 130. In other embodiment, other signal values may be used forpriority control signal 134. For example, a low value may indicate high priority while a high value may indicate low priority. In other embodiments, the notion of priority setting can be transmitted through a message from thedisplay engine 130 to the arbiters in the communication channel andmemory controller 112. -
FIG. 2 is a block diagram illustrating a communication channel with dynamic priority control, according to an embodiment. As described above,communication channel 150 may connectmemory controller 113 anddisplay engine 130 to transfer requests for display data fromdisplay engine 130 tomemory controller 113 and to transfer the requested display data frommemory controller 113 to displayengine 130. In one embodiment,communication channel 150 may be a virtual channel such that it does not include a dedicated link between two entities. Rather, a virtual channel may include one or more intermediate buffers, which may be referred to herein ashubs 252.Hubs 252 may be formed using shared resources that are individually allocated in order to form the virtual channel. Each ofhubs 252 may include anarbiter 254 and a data storage that can temporarily store data (e.g., virtual channel 0 requests ordata 256 and virtual channel 1 requests or data 258) during transfer betweendisplay engine 130 andmemory controller 113. Eacharbiter 254 may implement one or more arbitration policies that are based on the receivedpriority control signal 134 to determine whether to process virtual channel 0 requests ordata 256 or virtual channel 1 requests ordata 258. - In one embodiment, if the value of
priority control signal 134 is high,arbiter 254 may first process (e.g., forward on to thenext hub 252 in communication channel 150) the high priority requests or data before processing the low priority requests and data. In one embodiment, the high priority requests and data may be those associated with thedisplay engine 130, while the low priority requests and data are those associated with other client devices that sharecommunication channel 150. For example, the high priority requests and data may be virtual channel 0 requests ordata 256, while the low priority requests and data may be virtual channel 1 requests ordata 258. In other embodiments, the priorities may be reversed, such that virtual channel 1 has high priority while virtual channel 0 has low priority. In one embodiment the client device (i.e., the device including dynamic priority controller 160) may be some other high bandwidth and/or low latency device besidesdisplay engine 130. In that case, the high priority requests and data may be those associated with that client device. If the value ofpriority control signal 134 is low,arbiter 254 may first process low priority requests or data before processing the high priority requests and data. In another embodiment, there may be requests or data associated with additional virtual channels (e.g., virtual channel N (not shown)). Thearbiters 254 may determine the priority of the requests and data associated with each virtual channel relative to the other channels based on thepriority control signal 134 and process those requests and data accordingly. -
FIG. 3 is a block diagram illustrating a dynamic priority controller, according to an embodiment. In one embodiment,dynamic priority controller 160 includesbuffer monitoring module 302,threshold comparison module 304,request interface module 306 andcontrol signal generator 308. This arrangement of modules and components may be a logical separation, and in other embodiments, these modules or other components can be combined together or separated in further components, according to a particular embodiment. In one embodiment,data store 340 is connected todynamic priority controller 160 and includesdisplay engine buffer 132 andbuffer threshold data 344. In one embodiment,display engine 130 may include bothdynamic priority controller 160 anddata store 340. In another embodiment,data store 340 may be external toserver display engine 130 and may be connected to displayengine 130 over a network or other connection. In other embodiments,display engine 130 may include different and/or additional components which are not shown to simplify the description.Data store 340 may include one or more mass storage devices which can include, for example, flash memory, magnetic or optical disks, or tape drives; read-only memory (ROM); random-access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or any other type of storage medium. - In one embodiment,
buffer monitoring module 302 monitors the level of data indisplay engine buffer 132.Buffer monitoring module 302 may periodically querydisplay engine buffer 132 for the level of data. The level of data may be expressed in a size of the data currently stored in display engine buffer 132 (e.g., measured in bytes) or as a percentage or fraction of the capacity ofdisplay engine buffer 132 that is currently filled. In one embodiment,buffer monitoring module 302 may querydisplay engine buffer 132 for the level of data each time new data is received overcommunication channel 150, each time data is removed fromdisplay engine buffer 132 to be displayed ondisplay 140, after the expiration of some period of time (e.g., every one micro second), and/or in response to a request to determine the level of data indisplay engine buffer 132 received from some other component in the system. In one embodiment,buffer monitoring module 302 may store a value representing the level of data indisplay engine buffer 132 indata store 340. - In one embodiment,
threshold comparison module 304 compares the level of data indisplay engine buffer 132 to one or more thresholds. The thresholds can be used to determine whether to adjust the priority of data transfers associated withdisplay engine 130 being sent acrosscommunication channel 150. In one embodiment, the thresholds are stored asbuffer threshold data 344 indata store 340. For example, a first threshold may be set to indicate when the level of data indisplay engine buffer 132 is getting low. Whenthreshold comparison module 304 compares the level of data indisplay engine buffer 132 to the first threshold and determines that the level of data indisplay engine buffer 132 is less than or equal to the first threshold,dynamic priority controller 160 may increase the priority of data transfers associated withdisplay engine 130 in thecommunication channel 150. In one embodiment, wheredisplay engine buffer 132 has a total size of approximately several hundred kilobytes (Kb), the first threshold may be for example, on the order of several Kb or less than one percent. In one embodiment, the first threshold is determined based on a minimum latency for transferring data acrosscommunication channel 150 and the drain rate of thebuffer 132 by thedisplay engine 130. In other embodiments, the first threshold is configurable (e.g. by driver, based on display resolution) and may be set at some other level. - A second threshold may be set to indicate when the level of data in
display engine buffer 132 is sufficiently high. Whenthreshold comparison module 304 compares the level of data indisplay engine buffer 132 to the second threshold and determines that the level of data indisplay engine buffer 132 is greater than or equal to the second threshold,dynamic priority controller 160 may decrease the priority of data transfers associated withdisplay engine 130 incommunication channel 150. In the embodiment wheredisplay engine buffer 132 has a total size of approximately several hundred kilobytes (Kb), the second threshold may be for example, 100 Kb or approximately 25-50%. In one embodiment, the second threshold is determined based on a rate of consumption of the data indisplay engine buffer 132 bydisplay engine 130. In other embodiments, the second threshold is configurable and may be set at some other level based on post silicon performance tuning. - In one embodiment,
request interface module 306 can receive and process requests to increase the channel priority for transfer associated withdisplay engine 130 without regard for the current level of data indisplay engine buffer 132. For example,request interface module 306 may receive an indication from a power controller incomputing device 100 thatmemory controller 112 is going to shut down for a period of time and as such, will not be able to service requests for data to replenishdisplay engine buffer 132. In response,request interface module 306 may causedynamic priority controller 160 to change the priority level to high priority for data transfer associated withdisplay engine 130 untildisplay engine buffer 132 is full. In other embodiments, a request to adjust the priority may come from some other component incomputing device 100. - In one embodiment,
control signal generator 308 generates and provide apriority control signal 134 tocommunication channel 150. For example,priority control signal 134 may have one of multiple discreet signal values to indicate the determined priority level. In one embodiment,communication channel 150 may include one ormore arbiters 254 that make decisions on the order in which to process (e.g., forward on) certain pieces of data.Control signal generator 308 may provide thepriority control signal 134 to thesearbiters 254, and based on the value of thepriority control signal 134, thearbiters 254 may determine which data to process next. For example, if thepriority control signal 134 has a high value (e.g., indicating that data transfers associated with thedisplay engine 130 should be given high priority), thearbiter 254 may process data transfers associated with thedisplay engine 130 prior to processing pending data transfers associated with other clients that share thecommunication channel 150. If, however, thepriority control signal 134 has a low value (e.g., indicating that data transfers associated with thedisplay engine 130 should be given low priority), thearbiter 254 may process pending data transfers associated with other clients that share thecommunication channel 150 prior to processing data transfers associated with thedisplay engine 130. In other embodiments thecontrol signal generator 308 can generate a side band configuration message to the communication channel and memory controller. -
FIG. 4 is line graph illustrating the level ofdata 410 in a display engine buffer overtime 420, according to an embodiment. Theline 440 represents the current level of data indisplay engine buffer 132 at any given point. Attime 421, thedisplay engine buffer 132 is empty 412.Dynamic priority controller 160 may set ahigh priority 431 for processing transfers associated withdisplay engine 130 until the level ofdata 440 reaches ahigh data threshold 414 attime 422. Attime 422,dynamic priority controller 160 may decrease the priority to alow priority 432 since the level ofdata 440 is greater thanhigh threshold 414. The priority may remain low 432 until thedisplay engine bugger 132 because full 415 attime 423. In one embodiment, there may be a period of time during which no requests fordata 433 are issued bydisplay engine 130, continuing until the level ofdata 440 reaches acritical threshold 413 attime 424. - At
time 424,dynamic priority controller 160 may increase the priority to ahigh priority 434 until the level ofdata 440 returns to thehigh threshold 414 attime 425. Attime 425,dynamic priority controller 160 may decrease the priority to alow priority 435 since the level ofdata 440 is greater thanhigh threshold 414. In one embodiment, attime 426dynamic priority controller 160 may receive a request to increase the priority level. In response,dynamic priority controller 160 may increase the priority to ahigh priority 436 until the level ofdata 440 reaches thecapacity 415 ofdisplay engine buffer 132 attime 427. Attime 427,dynamic priority controller 160 may decrease the priority level to low priority or issue no further request fordata 437. -
FIG. 5 is a flow diagram illustrating a method for dynamic priority control, according to an embodiment. Themethod 500 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. The processing logic may dynamically control the priority level of data transfers associated with a client based on the latency tolerance of the client. In one embodiment, themethod 500 is performed bydynamic priority controller 160, as shown inFIGS. 1-3 . - Referring to
FIG. 5 , atblock 510,method 500 monitors a level of data indisplay engine buffer 132. In one embodiment,buffer monitoring module 302 may periodically querydisplay engine buffer 132 for the level of data. In one embodiment,buffer monitoring module 302 may querydisplay engine buffer 132 for the level of data each time new data is received overcommunication channel 150, each time data is removed fromdisplay engine buffer 132 to be displayed ondisplay 140, after the expiration of some period of time (e.g., every one micro second), and/or in response to a request to determine the level of data indisplay engine buffer 132 received from some other component in the system, or simply constantly monitoring every clock cycle. In one embodiment,buffer monitoring module 302 may store a value representing the level of data indisplay engine buffer 132 indata store 340. - At
block 520,method 500 determines whether the level of data indisplay engine buffer 132 is less than or equal to a first threshold. In one embodiment,threshold comparison module 304 compares the level of data indisplay engine buffer 132 to a first (critical) threshold. The first threshold may be set to indicate when the level of data indisplay engine buffer 132 is getting low and can be used to determine whether to increase the priority of data transfers associated withdisplay engine 130 being sent acrosscommunication channel 150. - If at
block 520,method 500 determines that the level of data indisplay engine buffer 132 is less than or equal to the first threshold, atbock 530,method 500 increases the channel priority level to a high priority. In one embodiment,control signal generator 308 may generate and provide apriority control signal 134 with a high value (e.g., indicating that data transfers associated with thedisplay engine 130 should be given high priority) to one or more arbiters incommunication channel 150. In response, thearbiters 254 may process data transfers associated with thedisplay engine 130 prior to processing pending data transfers associated with other clients that share thecommunication channel 150. - If at
block 520,method 500 determines that the level of data indisplay engine buffer 132 is not less than or equal to the first threshold, atblock 540,method 500 determines whether the level of data indisplay engine buffer 132 is greater than or equal to a second threshold. In one embodiment,threshold comparison module 304 compares the level of data indisplay engine buffer 132 to a second (high) threshold. The second threshold may be set to indicate when the level of data indisplay engine buffer 132 is sufficiently high and can be used to determine whether to decrease the priority of data transfers associated withdisplay engine 130 being sent acrosscommunication channel 150. - If at
block 540,method 500 determines that the level of data indisplay engine buffer 132 is greater than or equal to the second threshold, atblock 550,method 500 decrease the channel priority level to a low priority. In one embodiment,control signal generator 308 may generate and provide apriority control signal 134 with a low value (e.g., indicating that data transfers associated with thedisplay engine 130 should be given low priority) to one or more arbiters incommunication channel 150. In response, thearbiters 254 may process pending data transfers associated with other clients that share thecommunication channel 150 prior to processing data transfers associated with thedisplay engine 130. - If at
block 540,method 500 determines that the level of data indisplay engine buffer 132 is not greater than or equal to the second threshold (i.e., that the data level is between the first and second threshold), atblock 560,method 500 maintains the current channel priority level. -
FIG. 6 is a flow diagram illustrating a method for dynamic priority control, according to an embodiment. Themethod 600 may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. The processing logic may dynamically control the priority level of data transfers associated with a client based on the latency tolerance of the client. In one embodiment, themethod 600 is performed bydynamic priority controller 160, as shown inFIGS. 1-3 . - Referring to
FIG. 6 , atblock 610,method 600 monitors a level of data indisplay engine buffer 132. At block 6,method 600 receives a request to increase the channel priority to a high priority. In one embodiment,request interface module 306 can receive and process requests to increase the channel priority for transfer associated withdisplay engine 130 without regard for the current level of data indisplay engine buffer 132. For example,request interface module 306 may receive an indication from a power controller incomputing device 100 thatmemory controller 112 is going to shut down for a period of time and as such, will not be able to service requests for data to replenishdisplay engine buffer 132. In other embodiments, a request to adjust the priority may come from some other component incomputing device 100. - At
block 630,method 600 determines whether the level of data indisplay engine buffer 132 is less than or equal to a first threshold. In one embodiment,threshold comparison module 304 compares the level of data indisplay engine buffer 132 to a first (critical) threshold. The first threshold may be set to indicate when the level of data indisplay engine buffer 132 is getting low and can be used to determine whether to increase the priority of data transfers associated withdisplay engine 130 being sent acrosscommunication channel 150. - If at
block 630,method 600 determines that the level of data indisplay engine buffer 132 is not less than or equal to the first threshold, atbock 640,method 600 increases the channel priority level to a high priority. In one embodiment,control signal generator 308 may generate and provide apriority control signal 134 with a high value (e.g., indicating that data transfers associated with thedisplay engine 130 should be given high priority) to one or more arbiters incommunication channel 150. In response, thearbiters 254 may process data transfers associated with thedisplay engine 130 prior to processing pending data transfers associated with other clients that share thecommunication channel 150. The priority level may remain at a high priority for data transfers associated withdisplay engine 130 untildisplay engine buffer 132 is full. - If at
block 630,method 600 determines that the level of data indisplay engine buffer 132 is less than or equal to the first threshold, atbock 650,method 600 maintains the current maintains the current channel priority, which should already be at a high priority. - Referring now to
FIG. 7 , shown is a block diagram of asystem 700 in accordance with an embodiment. As shown inFIG. 7 ,multiprocessor system 700 is a point-to-point interconnect system, and includes afirst processor 770 and asecond processor 780 coupled via a point-to-point interconnect 750. Each of 770 and 780 may be some version of theprocessors processing device 110, as shown inFIG. 1 . - While shown with only two
770, 780, it is to be understood that the scope of the present disclosure is not so limited. In other embodiments, one or more additional processors may be present in a given processor.processors -
770 and 780 are shown including integratedProcessors 772 and 782, respectively.memory controller units Processor 770 also includes as part of its bus controller units point-to-point (P-P) interfaces 776 and 778; similarly,second processor 780 includes 786 and 788.P-P interfaces 770, 780 may exchange information via a point-to-point (P-P)Processors interface 750 using 778, 788. As shown inP-P interface circuits FIG. 7 , integrated memory controllers (IMCs) 772 and 782 couple the processors to respective memories, namely amemory 732 and amemory 734, which may be portions of main memory locally attached to the respective processors. -
770 and 780 may each exchange information with aProcessors chipset 790 via individual 752, 754 using point to pointP-P interfaces 776, 794, 786, 798.interface circuits Chipset 790 may also exchange information with a high-performance graphics circuit 738 via a high-performance graphics interface 739. - A shared cache (not shown) may be included in either processor or outside of both processors, yet connected with the processors via P-P interconnect, such that either or both processors' local cache information may be stored in the shared cache if a processor is placed into a low power mode.
-
Chipset 790 may be coupled to afirst bus 716 via aninterface 796. In one embodiment,first bus 716 may be a Peripheral Component Interconnect (PCI) bus, or a bus such as a PCI Express bus or another third generation I/O interconnect bus, although the scope of the present disclosure is not so limited. - As shown in
FIG. 7 , various I/O devices 714 may be coupled tofirst bus 716, along with a bus bridge 718 which couplesfirst bus 716 to asecond bus 720. In one embodiment,second bus 720 may be a low pin count (LPC) bus. Various devices may be coupled tosecond bus 720 including, for example, a keyboard and/ormouse 722,communication devices 727 and astorage unit 728 such as a disk drive or other mass storage device which may include instructions/code anddata 730, in one embodiment. Further, an audio I/O 724 may be coupled tosecond bus 720. Note that other architectures are possible. For example, instead of the point-to-point architecture ofFIG. 7 , a system may implement a multi-drop bus or other such architecture. - Embodiments may be implemented in many different system types.
FIG. 8 is a block diagram of aSoC 800 in accordance with an embodiment of the present disclosure. Dashed lined boxes are optional features on more advanced SoCs. InFIG. 8 , an interconnect unit(s) 812 is coupled to: anapplication processor 820 which includes a set of one ormore cores 802A-N and shared cache unit(s) 806; asystem agent unit 810; a bus controller unit(s) 816; an integrated memory controller unit(s) 814; a set or one ormore media processors 818 which may includeintegrated graphics logic 808, animage processor 824 for providing still and/or video camera functionality, anaudio processor 826 for providing hardware audio acceleration, and avideo processor 828 for providing video encode/decode acceleration; an static random access memory (SRAM)unit 830; a direct memory access (DMA)unit 832; and adisplay unit 840 for coupling to one or more external displays. In one embodiment, a memory module may be included in the integrated memory controller unit(s) 814. In another embodiment, the memory module may be included in one or more other components of theSoC 800 that may be used to access and/or control a memory. Theapplication processor 820 may include a microcode context and aliased parameter passing logic as described in embodiments herein. - The memory hierarchy includes one or more levels of cache within the cores, a set or one or more shared
cache units 806, and external memory (not shown) coupled to the set of integratedmemory controller units 814. The set of sharedcache units 806 may include one or more mid-level caches, such as level 2 (L2), level 3 (L3), level 4 (L4), or other levels of cache, a last level cache (LLC), and/or combinations thereof. In some embodiments, one or more of thecores 802A-N are capable of multi-threading. - The
system agent 810 includes those components coordinating andoperating cores 802A-N. Thesystem agent unit 810 may include for example a power control unit (PCU) and a display unit. The PCU may be or include logic and components needed for regulating the power state of thecores 802A-N and theintegrated graphics logic 808. The display unit is for driving one or more externally connected displays. - The
cores 802A-N may be homogenous or heterogeneous in terms of architecture and/or instruction set. For example, some of thecores 802A-N may be in order while others are out-of-order. As another example, two or more of thecores 802A-N may be capable of execution the same instruction set, while others may be capable of executing only a subset of that instruction set or a different instruction set. - The
application processor 820 may be a general-purpose processor, such as a Core™ i3, i5, i7, 2 Duo and Quad, Xeon™, Itanium™, XScale™ or StrongARM™ processor, which are available from Intel™ Corporation, of Santa Clara, Calif. Alternatively, theapplication processor 820 may be from another company, such as ARM Holdings™, Ltd, MIPS™, etc. Theapplication processor 820 may be a special-purpose processor, such as, for example, a network or communication processor, compression engine, graphics processor, co-processor, embedded processor, or the like. Theapplication processor 820 may be implemented on one or more chips. Theapplication processor 820 may be a part of and/or may be implemented on one or more substrates using any of a number of process technologies, such as, for example, BiCMOS, CMOS, or NMOS. -
FIG. 9 is a block diagram of an embodiment of a system on-chip (SoC) design in accordance with the present disclosure. As a specific illustrative example,SoC 900 is included in user equipment (UE). In one embodiment, UE refers to any device to be used by an end-user to communicate, such as a hand-held phone, smartphone, tablet, ultra-thin notebook, notebook with broadband adapter, or any other similar communication device. Often a UE connects to a base station or node, which potentially corresponds in nature to a mobile station (MS) in a GSM network. - Here,
SOC 900 includes two cores—906 and 907. 906 and 907 may conform to an Instruction Set Architecture, such as an Intel® Architecture Core™-based processor, an Advanced Micro Devices, Inc. (AMD) processor, a MIPS-based processor, an ARM-based processor design, or a customer thereof, as well as their licensees or adopters.Cores 906 and 907 are coupled to cache control 908 that is associated withCores bus interface unit 909 andL2 cache 910 to communicate with other parts ofsystem 900.Interconnect 910 includes an on-chip interconnect, such as an IOSF, AMBA, or other interconnect discussed above, which potentially implements one or more aspects of the described disclosure. In one embodiment, a microcode context and aliased parameter passing logic may be included in 906, 907.cores -
Interconnect 910 provides communication channels to the other components, such as a Subscriber Identity Module (SIM) 930 to interface with a SIM card, aboot ROM 935 to hold boot code for execution by 906 and 907 to initialize and bootcores SoC 900, aSDRAM controller 940 to interface with external memory (e.g. DRAM 960), aflash controller 945 to interface with non-volatile memory (e.g. Flash 965), a peripheral control 950 (e.g. Serial Peripheral Interface) to interface with peripherals,video codecs 920 andVideo interface 925 to display and receive input (e.g. touch enabled input),GPU 915 to perform graphics related computations, etc. Any of these interfaces may incorporate aspects of the disclosure described herein. In addition, thesystem 900 illustrates peripherals for communication, such as a 970,Bluetooth module 3G modem 975,GPS 980, and Wi-Fi 985. - The following examples pertain to further embodiments.
- Example 1 is an apparatus comprising 1) a data buffer; and 2) a dynamic priority controller coupled to the data buffer, the dynamic priority controller to monitor a level of data in the data buffer, compare the level of data in the data buffer to a plurality of thresholds, the plurality of thresholds comprising a first threshold and a second threshold, when the level of data in the data buffer is less than or equal to the first threshold, increase a priority for processing data associated with the data buffer in a communication channel, and when the level of data in the data buffer is greater than or equal to the second threshold, decrease the priority for processing data associated with the data buffer in the communication channel.
- In Example 2, the apparatus of Example 1 can optionally include when the level of data in the data buffer is greater than the first threshold hold and less than the second threshold, maintain a current priority for processing data associated with the data buffer in the communication channel.
- In Example 3, the apparatus of Example 1, can optionally include the first threshold being less than the second threshold.
- In Example 4, the apparatus of Example 3, can optionally include the first threshold comprising a value based on a minimum latency for transferring data across the communication channel, and the second threshold comprising a value based on a rate of consumption of the data in the data buffer.
- In Example 5, the apparatus of Example 1, can optionally include the communication channel being shared by a plurality of client devices including the data buffer and the communication channel to transfer data between a memory controller and the plurality of client devices.
- In Example 6, the apparatus of Example 5, can optionally include to increase the priority for processing data associated with the data buffer in the communication channel, the dynamic priority controller to provide a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data associated with the data buffer prior to processing data for other client devices of the plurality of client devices.
- In Example 7, the apparatus of Example 5, can optionally include to decrease the priority for processing data associated with the data buffer in the communication channel, the dynamic priority controller to provide a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data for other client devices of the plurality of client devices prior to processing data associated with the data buffer.
- Example 8 is a system comprising 1) a processing device comprising a memory controller, 2) a communication channel coupled to the processing device, and 3) a display engine coupled to the communication channel, the display engine comprising a display engine buffer and a dynamic priority controller, the dynamic priority controller to monitor a level of data in the display engine buffer, compare the level of data in the display engine buffer to a plurality of thresholds, the plurality of thresholds comprising a first threshold and a second threshold, when the level of data in the display engine buffer is less than or equal to the first threshold, increase a priority for processing display engine data in the communication channel, and when the level of data in the display engine buffer is greater than or equal to the second threshold, decrease the priority for processing the display engine data in the communication channel.
- In Example 9, the system of Example 8, can optionally include the dynamic priority controller further to when the level of data in the display engine buffer is greater than the first threshold hold and less than the second threshold, maintain a current priority for processing the display engine data in the communication channel.
- In Example 10, the system of Example 8, can optionally include the first threshold comprising a value based on a minimum latency for transferring data across the communication channel, and the second threshold comprising a value based on a rate of consumption of the data in the display engine buffer by the display engine.
- In Example 11, the system of Example 8, can optionally include the communication channel being shared by a plurality of client devices including the display engine buffer and the communication channel to transfer data between the memory controller and the plurality of client devices.
- In Example 12, the system of Example 11, can optionally include increasing the priority for processing display engine data in the communication channel by providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process the display engine data prior to processing data for other client devices of the plurality of client devices.
- In Example 13, the system of Example 11, can optionally include decreasing the priority for processing display engine data in the communication channel by providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data for other client devices of the plurality of client devices prior to processing the display engine data.
- Example 14 is a method comprising 1) monitoring a level of data in a display engine buffer, 2) comparing, by a processing device, the level of data in the display engine buffer to a plurality of thresholds, the plurality of thresholds comprising a first threshold and a second threshold, 3) when the level of data in the display engine buffer is less than or equal to the first threshold, increasing a priority for processing display engine data in a communication channel, and 4) when the level of data in the display engine buffer is greater than or equal to the second threshold, decreasing the priority for processing the display engine data in the communication channel.
- In Example 15, the method of Example 14 can optionally further comprise when the level of data in the display engine buffer is greater than the first threshold hold and less than the second threshold, maintaining a current priority for processing the display engine data in the communication channel.
- In Example 16, the method of Example 14, can optionally include the first threshold being less than the second threshold.
- In Example 17, the method of Example 16, can optionally include the first threshold comprising a value based on a minimum latency for transferring data across the communication channel, and the second threshold comprising a value based on a rate of consumption of the data in the display engine buffer by a display engine comprising the display engine buffer.
- In Example 18, the method of Example 14, can optionally include the communication channel being shared by a plurality of client devices including the display engine buffer and the communication channel to transfer data between a memory controller and the plurality of client devices.
- In Example 19, the method of Example 18, can optionally include increasing the priority for processing display engine data in the communication channel comprises providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process the display engine data prior to processing data for other client devices of the plurality of client devices.
- In Example 20, the method of Example 18, can optionally include decreasing the priority for processing display engine data in the communication channel comprises providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data for other client devices of the plurality of client devices prior to processing the display engine data.
- Example 21 is an apparatus comprising 1) means for monitoring a level of data in a display engine buffer, 2) means for comparing the level of data in the display engine buffer to a plurality of thresholds, the plurality of thresholds comprising a first threshold and a second threshold, 3) means for increasing a priority for processing display engine data in a communication channel when the level of data in the display engine buffer is less than or equal to the first threshold, and 4) means for decreasing the priority for processing the display engine data in the communication channel when the level of data in the display engine buffer is greater than or equal to the second threshold.
- In Example 22, the apparatus of Example 21, can optionally include means for maintaining a current priority for processing the display engine data in the communication channel when the level of data in the display engine buffer is greater than the first threshold hold and less than the second threshold.
- In Example 23, the apparatus of Example 21, can optionally include the first threshold being less than the second threshold.
- In Example 24, the apparatus of Example 23, can optionally include the first threshold comprising a value based on a minimum latency for transferring data across the communication channel, and the second threshold comprising a value based on a rate of consumption of the data in the display engine buffer by a display engine comprising the display engine buffer.
- In Example 25, the apparatus of Example 21, can optionally include the communication channel being shared by a plurality of client devices including the display engine buffer and the communication channel to transfer data between a memory controller and the plurality of client devices.
- In Example 26, the apparatus of Example 25, can optionally include the means for increasing the priority for processing display engine data in the communication channel comprising means for providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process the display engine data prior to processing data for other client devices of the plurality of client devices.
- In Example 27, the apparatus of Example 25, can optionally include the means for decreasing the priority for processing display engine data in the communication channel comprising means for providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data for other client devices of the plurality of client devices prior to processing the display engine data.
- Example 28 is an apparatus comprising 1) a memory and 2) a computing system coupled to the memory, wherein the computing system is configured to perform the method of an one of Examples 14-20.
- In Example 29, the apparatus of Example 28, can optionally include the computing system comprising a processing device, a memory controller, a display engine and a communication channel.
- In Example 30, the apparatus of Example 29, can optionally include the display engine comprising a display engine buffer.
- Example 31 is a method comprising 1) monitoring a level of data in a client data buffer and 2) comparing, by a processing device, the level of data in the client data buffer to a plurality of thresholds, the plurality of thresholds comprising a first threshold and a second threshold and 3) controlling a priority of data requests for the client data buffer in a communication channel based on the comparing of the level of data to the first and second thresholds.
- In Example 32, the method of Example 31, can optionally include controlling the priority by when the level of data in the client data buffer is less than or equal to the first threshold, increasing a priority for processing the data requests in the communication channel and when the level of data in the client data buffer is greater than or equal to the second threshold, decreasing the priority for processing the data requests in the communication channel.
- In Example 33, the method of Example 31, can optionally include controlling the priority by when the level of data in the client data buffer is greater than the first threshold hold and less than the second threshold, maintaining a current priority for processing the data requests in the communication channel.
- In Example 34, the method of Example 31, can optionally include the communication channel being shared by a plurality of client devices including the client data buffer and wherein the communication channel to transfer data between a memory controller and the plurality of client devices.
- In Example 35, the method of Example 32, can optionally include increasing the priority for processing the data requests in the communication channel by providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process the data requests prior to processing data for other client devices.
- In Example 36, the method of Example 32, can optionally include decreasing the priority for processing the data requests in the communication channel by providing a priority control signal to an arbiter in the communication channel, the priority control signal to cause the arbiter to process data for other client devices prior to processing the data requests.
- The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the operations. The required structure for a variety of these systems will appear from the description below. In addition, the present embodiments are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the embodiments as described herein.
- The above description sets forth numerous specific details such as examples of specific systems, components, methods and so forth, in order to provide a good understanding of several embodiments. It will be apparent to one skilled in the art, however, that at least some embodiments may be practiced without these specific details. In other instances, well-known components or methods are not described in detail or are presented in simple block diagram format in order to avoid unnecessarily obscuring the present embodiments. Thus, the specific details set forth above are merely exemplary. Particular embodiments may vary from these exemplary details and still be contemplated to be within the scope of the present embodiments.
- It is to be understood that the above description is intended to be illustrative and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the present embodiments should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Claims (20)
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/957,843 US8959266B1 (en) | 2013-08-02 | 2013-08-02 | Dynamic priority control based on latency tolerance |
| EP20140177724 EP2840506A3 (en) | 2013-08-02 | 2014-07-18 | Dynamic priority control based on latency tolerance |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/957,843 US8959266B1 (en) | 2013-08-02 | 2013-08-02 | Dynamic priority control based on latency tolerance |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20150039790A1 true US20150039790A1 (en) | 2015-02-05 |
| US8959266B1 US8959266B1 (en) | 2015-02-17 |
Family
ID=51260589
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US13/957,843 Active US8959266B1 (en) | 2013-08-02 | 2013-08-02 | Dynamic priority control based on latency tolerance |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US8959266B1 (en) |
| EP (1) | EP2840506A3 (en) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20160239454A1 (en) * | 2015-02-13 | 2016-08-18 | Amazon Technologies, Inc. | Multi-mode system on a chip |
| US20180032281A1 (en) * | 2016-08-01 | 2018-02-01 | Apple Inc. | System for managing memory devices |
| US10250518B2 (en) * | 2015-09-24 | 2019-04-02 | Samsung Electronics Co., Ltd. | Apparatus and method for scheduling packet in communication system |
| US10394731B2 (en) | 2014-12-19 | 2019-08-27 | Amazon Technologies, Inc. | System on a chip comprising reconfigurable resources for multiple compute sub-systems |
| US10523585B2 (en) | 2014-12-19 | 2019-12-31 | Amazon Technologies, Inc. | System on a chip comprising multiple compute sub-systems |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10055809B2 (en) | 2016-05-09 | 2018-08-21 | Apple Inc. | Systems and methods for time shifting tasks |
| JP2021196681A (en) * | 2020-06-10 | 2021-12-27 | ルネサスエレクトロニクス株式会社 | Semiconductor device |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060022985A1 (en) * | 2004-07-30 | 2006-02-02 | Texas Instruments Incorporated | Preemptive rendering arbitration between processor hosts and display controllers |
| US20110302345A1 (en) * | 2010-06-03 | 2011-12-08 | Philippe Boucard | Network on chip (noc) with qos features |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5771356A (en) * | 1995-01-04 | 1998-06-23 | Cirrus Logic, Inc. | Apparatus for controlling FIFO buffer data transfer by monitoring bus status and FIFO buffer thresholds |
| US5903283A (en) * | 1997-08-27 | 1999-05-11 | Chips & Technologies, Inc. | Video memory controller with dynamic bus arbitration |
| JP4847036B2 (en) * | 2005-03-30 | 2011-12-28 | キヤノン株式会社 | Control device for arbitrating bus access and control method for data processing device |
| US7647444B2 (en) * | 2007-03-13 | 2010-01-12 | Sun Microsystems, Inc. | Method and apparatus for dynamic hardware arbitration |
-
2013
- 2013-08-02 US US13/957,843 patent/US8959266B1/en active Active
-
2014
- 2014-07-18 EP EP20140177724 patent/EP2840506A3/en not_active Withdrawn
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060022985A1 (en) * | 2004-07-30 | 2006-02-02 | Texas Instruments Incorporated | Preemptive rendering arbitration between processor hosts and display controllers |
| US20110302345A1 (en) * | 2010-06-03 | 2011-12-08 | Philippe Boucard | Network on chip (noc) with qos features |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10394731B2 (en) | 2014-12-19 | 2019-08-27 | Amazon Technologies, Inc. | System on a chip comprising reconfigurable resources for multiple compute sub-systems |
| US10523585B2 (en) | 2014-12-19 | 2019-12-31 | Amazon Technologies, Inc. | System on a chip comprising multiple compute sub-systems |
| US20160239454A1 (en) * | 2015-02-13 | 2016-08-18 | Amazon Technologies, Inc. | Multi-mode system on a chip |
| US11200192B2 (en) * | 2015-02-13 | 2021-12-14 | Amazon Technologies. lac. | Multi-mode system on a chip |
| US10250518B2 (en) * | 2015-09-24 | 2019-04-02 | Samsung Electronics Co., Ltd. | Apparatus and method for scheduling packet in communication system |
| US20180032281A1 (en) * | 2016-08-01 | 2018-02-01 | Apple Inc. | System for managing memory devices |
| US10877688B2 (en) * | 2016-08-01 | 2020-12-29 | Apple Inc. | System for managing memory devices |
Also Published As
| Publication number | Publication date |
|---|---|
| EP2840506A3 (en) | 2015-04-29 |
| EP2840506A2 (en) | 2015-02-25 |
| US8959266B1 (en) | 2015-02-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8959266B1 (en) | Dynamic priority control based on latency tolerance | |
| US10853276B2 (en) | Executing distributed memory operations using processing elements connected by distributed channels | |
| US10331186B2 (en) | Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states | |
| US9954792B2 (en) | Shared flow control credits | |
| US10585709B2 (en) | Job scheduling optimization based on ratio of stall to active cycles | |
| US9626316B2 (en) | Managing shared resources between multiple processing devices | |
| US20170039144A1 (en) | Loading data using sub-thread information in a processor | |
| US11347673B2 (en) | Method, apparatus, system for thunderbolt-based display topology for dual graphics systems | |
| EP4242893A2 (en) | Confidential computing extensions for highly scalable accelerators | |
| US20210318981A1 (en) | Selection of Communication Protocol for Management Bus | |
| US20200004699A1 (en) | Variable-stride write in a multi-point bus architecture | |
| US20220416997A1 (en) | Handling unaligned transactions for inline encryption | |
| US20250131596A1 (en) | Determining optical center in an image | |
| US8996760B2 (en) | Method to emulate message signaled interrupts with interrupt data | |
| US9753832B2 (en) | Minimizing bandwith to compress output stream in instruction tracing systems | |
| US9792212B2 (en) | Virtual shared cache mechanism in a processing device | |
| US9378163B2 (en) | Method to accelerate message signaled interrupt processing | |
| US9411763B2 (en) | Allocation of flow control credits for high performance devices | |
| US20160224252A1 (en) | Hybrid memory architecture | |
| EP4439323A1 (en) | Apparatus and methods for universal serial bus 4 (usb4) data bandwidth scaling | |
| US9716646B2 (en) | Using thresholds to gate timing packet generation in a tracing system | |
| US20150188797A1 (en) | Adaptive admission control for on die interconnect | |
| US20190041895A1 (en) | Single clock source for a multiple die package | |
| US11704167B2 (en) | Staggered software synchronization | |
| US11416311B2 (en) | Staggered software synchronization |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BONEN, NADAV;WITTER, TODD M.;SHIFER, ERAN;AND OTHERS;SIGNING DATES FROM 20130811 TO 20130901;REEL/FRAME:032732/0367 |
|
| FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |