US9271267B2 - Detection and control of resource congestion by a number of processors - Google Patents
Detection and control of resource congestion by a number of processors Download PDFInfo
- Publication number
- US9271267B2 US9271267B2 US13/478,051 US201213478051A US9271267B2 US 9271267 B2 US9271267 B2 US 9271267B2 US 201213478051 A US201213478051 A US 201213478051A US 9271267 B2 US9271267 B2 US 9271267B2
- Authority
- US
- United States
- Prior art keywords
- processor
- access
- congestion
- data
- negative
- 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.)
- Active, expires
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 108
- 230000015654 memory Effects 0.000 claims description 110
- 238000000034 method Methods 0.000 claims description 24
- 230000001934 delay Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims 8
- 230000004044 response Effects 0.000 abstract description 102
- 208000027744 congestion Diseases 0.000 description 271
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 93
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 93
- 238000010586 diagram Methods 0.000 description 50
- 238000012935 Averaging Methods 0.000 description 38
- 230000000630 rising effect Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000002411 adverse Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
Images
Classifications
-
- H04W72/0406—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/74—Admission control; Resource allocation measures in reaction to resource unavailability
- H04L47/745—Reaction in network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W72/00—Local resource management
- H04W72/20—Control channels or signalling for resource management
Definitions
- This invention relates generally to electronic data processing and more particularly, to detection and control of resource congestion by a number of processors.
- Multiprocessor computer systems have long been valued for the high performance they offer by utilizing multiple processors that are not individually capable of the same high level of performance as the multiprocessor system.
- tasks are divided among more than one processor, such that each processor does a part of the computation of the system. Therefore, more than one task can be carried out at a time with each task or thread running on a separate processor, or a single task can be broken up into pieces that can be assigned to each processor.
- Multiprocessor systems incorporate many methods of dividing tasks among their processors, but all benefit from the ability to do computations on more than one processor simultaneously.
- multiprocessor systems were large mainframe or supercomputers with several processors mounted in the same physical unit.
- Modern multiprocessor systems include arrays of interconnected computers or workstations that divide large tasks among themselves in much the same way as the processors of traditional mainframe systems, and achieve similarly impressive results.
- Many multiprocessor computer systems have a combination of theses attributes, such as a group of multiprocessor systems that are interconnected.
- Centralized memory systems use a single central bank of memory that all processors can access, such that all processors can access the central memory at roughly the same speed. Still other systems have distributed or independent memory for individual processors or groups of processors and provide faster access to memory that is local to each processor or group of processors, but access to data from other processors takes somewhat longer than in shared memory systems.
- the memory can further be shared or multiple address type memory.
- Shared address memory systems allow multiple processors to access the same memory, whether distributed or centralized, to communicate with other processors via data stored in the shared memory.
- Multiple address memory incorporates separate memory for each processor or group of processors, and does not allow access to this local memory to other processors.
- Such multiple address or local memory systems must rely on messages to share data between processors.
- Cache memory can be utilized in any of these memory configurations to attempt to provide faster access to data each processor is likely to need and to reduce requests for the same commonly used data from multiple processors on the system bus.
- Cache in a multiple address system simply caches data from the local memory, but cache in a shared address system typically caches memory from any of the shared memory locations, whether local or remote from the processor requesting the data.
- the cache associated with each processor or group of processors in a distributed shared memory system likely maintains copies of data from memory local to a number of other processor nodes.
- Information about each block of memory is kept in a directory, which keeps track of data such as which caches have copies of the block, whether the cache is dirty, and other related data.
- the directory is used to maintain cache coherency, or to ensure that the system can determine whether the data in each cache is valid.
- the directory is also used to keep track of which caches hold data that is to be written, and facilitates granting exclusive write access to one processor or I/O device. After write access has been granted and a memory location is updated, the cached copies are marked as dirty.
- multiple processors may attempt to access the same data from a same memory. Therefore, such systems use a request/acknowledgment protocol.
- a processor is to access data from a shared memory
- the processor submits an access request. If the data is accessible, the memory controller responds with an acknowledgment (ACK) along with the data. Conversely, if the data is not accessible, the memory controller responds with a negative acknowledgement (NACK).
- ACK acknowledgment
- NACK negative acknowledgement
- such a protocol may introduce congestion into the system.
- multiple processors may attempt to access a same cache line in a cache memory. Therefore, the access request by one processor is granted, while the access requests by the other processors are denied. Typically, these other processors continue to request access to such data until the access is granted. Accordingly, system resources become congested with the multiple retry requests for access to data, which includes multiple access requests and NACKS in response to such requests.
- processors in a multi-processor system transmit requests for lines of data in different memories and detect congestion of access to such lines of data based on the type of responses (negative acknowledgments (NACKs) or positive acknowledgements (ACKs)).
- NACKs negative acknowledgments
- ACKs positive acknowledgements
- hardware that is internal to the processors detects such congestion after receipt of a repeated number of NACKs in response to requests for a line of data.
- hardware that is internal to the processors regulates access to congested lines of data. In one embodiment, such hardware increases the time between retries for access to congested lines of data as the number of NACKs increase.
- a system that incorporates embodiments of the invention may include a large number of processors that are attempting to access a same line of data based on such requests. Accordingly, embodiments of the invention preclude the overloading of the interconnects (that couple the multi-processor system together) with repeated requests and responses thereto to a line of data that is congested.
- a system in one embodiment, includes a cache memory to store data.
- the system also includes a first processor to attempt to access the data from the cache memory based on access requests.
- the first processor includes a congestion detection logic to detect congestion of access to the data based on receipt of a consecutive number of negative acknowledgements in response to the access requests.
- a system in an embodiment, includes a resource.
- the system also includes a first processor having a load/store functional unit.
- the load/store functional unit is to attempt to access the resource based on access requests.
- the first processor includes a congestion detection logic to detect congestion of access of the resource based on a consecutive number of negative acknowledgements received in response to the access requests prior to receipt of a positive acknowledgment in response to one of the access requests within a first time period.
- a system in one embodiment, includes a cache memory to include a number of cache lines for storage of data.
- the system also includes at least two processors, wherein a first processor of the at least two processors is to attempt to access the data in one of the number of cache lines based on access requests.
- the first processor includes a congestion detection logic to detect congestion of access of a first cache line of the number of cache lines based on a ratio of a number of negative acknowledgments to a number of positive acknowledgments received in response to the access requests.
- an apparatus in one embodiment, includes a load/store unit that includes a retry logic that is to retry access to a resource after receipt of a negative acknowledgement for an attempt to access the resource by the load/store unit.
- the apparatus also includes a congestion detection logic to output a signal that indicates that the resource is congested based on receipt of a consecutive number of negative acknowledgments in response to access requests to the resource.
- a processor in one embodiment, includes a functional unit to attempt to access data from memory coupled to the processor based on an access request.
- the functional unit is to retry attempts to access of the data based on other access requests after receipt of a negative acknowledgement in response to the attempt to access the data.
- the processor also includes a congestion detection logic to detect congestion of access of the data based on receipt of a consecutive number of negative acknowledgments that exceed a threshold prior to access of the data.
- the processor also includes a congestion control logic to disable the functional unit from the attempts to access the data for a time period after congestion is detected.
- a processor in an embodiment, includes a functional unit to attempt to access a cache line in a cache memory coupled to the processor based on an access request.
- the functional unit is to retry attempts to access the cache line based on additional access requests after receipt of a negative acknowledgement in response to the attempt to access the data.
- the processor also includes a congestion detection logic to detect congestion of access of the cache line based on an average number of negative acknowledgments received that exceed a threshold prior to access of the data.
- the processor also includes a congestion control logic to disable the functional unit from attempts to access the cache line for a time period after congestion is detected.
- a system in one embodiment, includes a cache memory to store data.
- the system also includes a first processor to attempt to access the data from the cache memory based on access requests.
- the first processor includes a congestion detection logic to detect congestion of access to the data based on receipt of a consecutive number of negative acknowledgements in response to the access requests.
- a system in an embodiment, includes a resource.
- the system also includes a first processor having a load/store functional unit.
- the load/store functional unit is to attempt to access the resource based on access requests.
- the first processor includes a congestion detection logic to detect congestion of access of the resource based on a consecutive number of negative acknowledgements received in response to the access requests prior to receipt of a positive acknowledgment in response to one of the access requests within a first time period.
- a system in one embodiment, includes a cache memory to include a number of cache lines for storage of data.
- the system also includes at least two processors, wherein a first processor of the at least two processors is to attempt to access the data in one of the number of cache lines based on access requests.
- the first processor includes a congestion detection logic to detect congestion of access of a first cache line of the number of cache lines based on a ratio of a number of negative acknowledgments to a number of positive acknowledgments received in response to the access requests.
- a method in an embodiment, includes transmitting access requests, by a first processor, to access data in a memory. The method also includes receiving a positive acknowledgement or a negative acknowledgment from a second processor that is associated with the memory based on one of the number of access requests. The method includes detecting congestion of the data based on receipt, by the first processor, of a consecutive number of negative acknowledgements that exceed a first threshold, prior to receipt, by the first processor, of a positive acknowledgment.
- a method in one embodiment, includes accessing, by at least one processor, a resource based on an access request. The method also includes receiving a positive acknowledgement if the resource is accessible. Additionally, the method includes receiving a negative acknowledgement if the resource is not accessible. The method includes retrying accessing, by the at least one processor, of the resource based on a number of access requests. The method includes detecting that a consecutive number of negative acknowledgements exceeds a first threshold within a time period, prior to receiving a positive acknowledgments.
- FIG. 1 illustrates a system for detection and control of resource congestion by a number of processors, according to one embodiment of the invention.
- FIG. 2 illustrates a more detailed block diagram of a processor, according to one embodiment of the invention.
- FIG. 3 illustrates the input/output communications of a load/store functional unit and a congestion logic, according to one embodiment of the invention.
- FIG. 4 illustrates a one dimensional network congestion model based on the number of NACKs, according to one embodiment of the invention.
- FIG. 5 illustrates a one dimensional network congestion model based on the number of NACKs and ACKs, according to another embodiment of the invention.
- FIG. 6 illustrates a congestion detection logic for detecting congestion based on whether a consecutive number of negative acknowledgements received in response to access requests exceeds a threshold, according to one embodiment of the invention.
- FIG. 7 illustrates a flow diagram for detecting congestion based on a consecutive number of NACKs received in response to access requests, according to one embodiment of the invention.
- FIG. 8 illustrates a congestion detection logic for detecting congestion based on whether a number of consecutive negative acknowledgements received in response to access requests exceed a threshold within a time period, according to one embodiment of the invention.
- FIG. 9 illustrates a flow diagram for detecting congestion based on a number of consecutive negative acknowledgements received in response to access requests within a time period, according to one embodiment of the invention.
- FIG. 10 illustrates a congestion detection logic for detecting congestion based on whether the ratio of the number of negative acknowledgements to the number of positive acknowledgments received in response to access requests exceeds a threshold, according to one embodiment of the invention.
- FIG. 11 illustrates a flow diagram for detecting congestion based on a ratio of the number of negative acknowledgements to the number of positive acknowledgments received in response to access requests, according to one embodiment of the invention.
- FIG. 12 illustrates a congestion detection logic for detecting congestion based on whether an average number of negative acknowledgements received in response to access requests exceeds a threshold, according to one embodiment of the invention.
- FIG. 13 illustrates a flow diagram for detecting congestion based on an average number of negative acknowledgements received in response to access requests, according to one embodiment of the invention.
- FIG. 14 illustrates a congestion detection logic for detecting congestion based on a moving average of the number of negative acknowledgements received in response to access requests, according to one embodiment of the invention.
- FIG. 15 illustrates a flow diagram for detecting congestion based on a moving average of the number of negative acknowledgements received in response to access requests, according to one embodiment of the invention.
- FIGS. 16A-16I illustrate the value an averaging window shift register (as an eight-bit shift register) over time, according to one embodiment of the invention.
- FIG. 17 illustrates a congestion control logic for controlling access to a resource based on an exponential back off delay operation, according to one embodiment of the invention.
- FIGS. 18A-18C illustrate flow diagrams for controlling congestion of accesses to a resource based on an exponential back off delay, according to one embodiment of the invention.
- references in the specification to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
- Embodiments of the invention include features, methods or processes embodied within machine-executable instructions provided by a machine-readable medium.
- a machine-readable medium includes any mechanism which provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, a network device, a personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.).
- a machine-readable medium includes volatile and/or non-volatile media (e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.), as well as electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.)).
- volatile and/or non-volatile media e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.
- electrical, optical, acoustical or other form of propagated signals e.g., carrier waves, infrared signals, digital signals, etc.
- Such instructions are utilized to cause a general or special purpose processor, programmed with the instructions, to perform methods or processes of the embodiments of the invention.
- the features or operations of embodiments of the invention are performed by specific hardware components which contain hard-wired logic for performing the operations, or by any combination of programmed data processing components and specific hardware components.
- Embodiments of the invention include software, data processing hardware, data processing system-implemented methods, and various processing operations, further described herein.
- a number of figures show block diagrams of systems and apparatus for detection and control of resource congestion by a number of processors, in accordance with embodiments of the invention.
- a number of figures show flow diagrams illustrating operations for detection and control of resource congestion by a number of processors.
- the operations of the flow diagrams will be described with references to the systems/apparatus shown in the block diagrams. However, it should be understood that the operations of the flow diagrams could be performed by embodiments of systems and apparatus other than those discussed with reference to the block diagrams, and embodiments discussed with reference to the systems/apparatus could perform operations different than those discussed with reference to the flow diagrams.
- FIG. 1 illustrates a system for detection and control of resource congestion by a number of processors, according to one embodiment of the invention.
- FIG. 1 illustrates a system 100 that includes a number of cache memories 102 A- 102 N, a number of processors 104 A- 104 N, a number of hub controllers 106 A- 106 N, a number of memories 108 A- 108 N.
- Each one of the processors 104 A- 104 N are associated with and coupled to one of the cache memories 102 A- 102 N.
- the processor 104 A is associated with and coupled to the cache memory 104 A; the processor 104 B is associated with and coupled to the cache memory 102 B; the processor 104 C is associated with and coupled to the cache memory 102 C; the processor 104 N is associated with and coupled to the cache memory 102 N.
- the hub controller 106 A is coupled to the processors 104 A- 104 B.
- the hub controller 106 N is coupled to the processors 104 C- 104 N.
- the hub controller 106 A is coupled to the memory 108 A.
- the hub controller 106 N is coupled to the memory 108 N.
- the cache memories 102 A- 102 N include a number of cache lines for storage of blocks of data therein.
- the hub controllers 106 A- 106 N are coupled together.
- the processors 104 A- 104 N may be different types of general purpose application processors.
- the processors 104 A- 104 N may execute different types of instructions.
- the cache memories 102 A- 102 N may be different types of cache in a unified or a split cache configuration.
- the cache memory 102 may be an instruction cache or a data cache.
- the cache memory may be different levels of cache (e.g., L1, L2, etc.) in a multi-level cache configuration.
- the cache memory 102 may be a directed-mapped cache or an n-way set-associative cache.
- the memories 108 A- 108 N may be of any suitable type of memory, in an embodiment, the memories IOSA- 108 N are different types of Random Access Memory (RAM) (e.g., Synchronous RAM (SRAM), Synchronous Dynamic RAM (SDRAM), Dynamic RAM (DRAM), Double Data Rate (DDR)-SDRAM, etc.) of varying size.
- RAM Random Access Memory
- SRAM Synchronous RAM
- SDRAM Synchronous Dynamic RAM
- DRAM Dynamic RAM
- DDR Double Data Rate
- any of the number of processors 104 A- 104 N may access data from cache lines in any of the cache memories 102 A- 102 N through the hub controllers 106 A- 106 N.
- the hub controllers 106 A- 106 N includes a directory that stores identifications of which data is stored in the different cache lines of the different cache memories 102 A- 102 N and the state of these cache lines. For example, in one embodiment, a same data may be stored in different cache lines in different cache memories 102 A- 102 N. Therefore, the state of such cache lines is “shared.” If the data in a cache line is to be updated, the state of this cache line within the directory is changed to an “exclusive” state. Accordingly, if a shared cache line is to be updated by its associated processor 104 , the processors 104 associated with the other cache memories 102 that have shared copies of this cache line invalidate their cache lines, thereby leaving one valid copy of the cache line.
- the processors 104 N transmits a request for this cache line to the hub controller 106 N.
- the hub controller 106 N performs a lookup in its directory to determine which of the caches 102 A- 102 N have this cache line stored and the state of such cache lines.
- the hub controller 106 N forwards the request to the hub controller 106 A.
- the hub controller 106 A forwards the access request for the data in the cache memory 102 A to the processor 104 A. If the cache line is accessible (not being written to or read from), the processor 104 A returns an acknowledgment (ACK) along with the data in the cache line. If the cache line is not accessible, the processor 104 A returns a negative acknowledgement (NACK).
- the hub controller 106 A then returns the ACK (and the data) or NACK back to the processor 102 N.
- congestion may occur with regard to access of one of the cache lines in the cache memories 102 A- 102 N by a multiple number of the processors 104 A- 104 N. For example, if a multiple number of the processors 104 A- 104 N are attempting to read a same cache line in the cache 102 A, only one of these accessing processors 104 is able to access the cache line. Such processor receives a positive acknowledgement (ACK) and accesses the cache line. The other processors attempting to access this cache line receive a negative acknowledgement (NACK) and are unable to access this cache line. Such processors may attempt to retry accessing this cache line. As further described below, in an embodiment, the number of processors 104 A- 104 N may include logic for detection and control of congestion with regard to accessing resources, such as a cache line.
- FIG. 2 illustrates a more detailed block diagram of a processor, according to one embodiment of the invention.
- FIG. 2 illustrates a more detailed block diagram of one of the processors 104 A- 104 N.
- memory interface unit 270 is coupled to cache 256 , register file 250 (that includes general purpose registers 252 and special purpose registers 254 ) and instruction buffer 202 , such that memory interface unit 270 can retrieve macro instructions and associated operands and store such data into instruction buffer 202 and cache 256 , general purpose registers 252 and/or special purpose registers 254 .
- cache 256 and register file 250 are coupled to decoder 204 , functional units 212 - 218 and retirement logic 228 .
- the processor 104 also includes a congestion logic 280 that includes a congestion detection logic 282 and a congestion control logic 284 .
- operations for the congestion detection and congestion control include a number of configurable values.
- the special purpose registers 254 include a number of registers for storage of such configuration data.
- such configuration data may store a value for an initial delay for a time period for controlling the congestion.
- the configuration data may also include different thresholds (such as NACK and ACK thresholds), Boolean values for different shift operations, etc.
- Decoder 204 is coupled to instruction buffer 202 , such that decoder 204 retrieves the instructions from instruction buffer 202 . Decoder 204 can receive these instructions and decode each of them to determine the given instruction and also to generate a number of instructions in an internal instruction set. For example, in one embodiment, the instructions received by decoder 204 are termed macro instructions, while the instructions that are generated by decoder 204 are termed micro instructions (or micro-operations). Decoder 204 is also coupled to instruction scheduler 208 , such that instruction scheduler 208 can receive these micro-operations for scheduled execution by functional units 212 - 218 .
- Instruction scheduler 208 is coupled to dispatch logic 226 , such that the instruction scheduler 208 transmits the instructions to be executed by functional units 212 - 218 .
- Dispatch logic 226 is coupled to functional units 212 - 216 and a load/store functional unit 218 such that dispatch logic 226 transmits the instructions to functional units 212 - 218 for execution.
- Functional units 212 - 218 can be one of a number of different execution units, including, but not limited to, an integer arithmetic logic unit (ALU), a floating-point unit, memory load/store unit, etc.
- Functional units 212 - 218 are also coupled to retirement logic 228 , such that functional units 212 - 218 execute the instructions and transmit the results to retirement logic 228 .
- Retirement logic 228 can transmit these results to memory that can be internal or external to processor 104 , such as registers within register file 250 or cache 256 , one of the caches 105 A- 105 N, the memory 112 , etc.
- the load/store functional unit 218 loads data into the processor 102 from an external memory (e.g., one of the cache memories 102 ) and stores data into an external memory from the processor 104 based on execution of load and store instructions, respectively. As shown, the load/store functional unit 218 includes a retry logic 286 .
- the retry logic 286 attempts to again access the resource. Accordingly, the retry logic 286 attempts to access the resource until an ACK is received. In other words, the retry logic 286 causes the re-execution of the load or store instruction by the load/store functional unit 218 when a NACK is received.
- the congestion control logic 284 transmits a command to the retry logic 286 to stop attempting the access (through a disable retry signal 307 , which is described in more detail below). After a given time period, the congestion control logic 284 may also issue a different command (through the disable retry signal 307 ) to the retry logic 286 to allow the retry logic 286 to attempt to access the resource.
- a disable retry signal 307 which is described in more detail below.
- the congestion control logic 284 may also issue a different command (through the disable retry signal 307 ) to the retry logic 286 to allow the retry logic 286 to attempt to access the resource.
- FIG. 3 illustrates the input/output communications of a load/store functional unit and a congestion logic, according to one embodiment of the invention.
- FIG. 3 illustrates one embodiment of the input/output communications of the load/store functional unit 218 (that includes the retry logic 286 ), the congestion detection logic 282 and the congestion control logic 284 .
- the load/store functional unit 218 transmits a first access request 310 to access a resource (such as a cache line within one of the cache memories 102 ). If the resource cannot be accessed, the retry logic 286 attempts to continue to access this resource.
- the retry logic 286 and the congestion detection logic 282 are coupled to receive ACKS 302 and the NACKS 304 in response the access requests 310 .
- the congestion detection logic 282 determines that there is congestion with regard to accessing a resource, the congestion detection logic 282 outputs a congestion detected signal 306 , which is inputted into the congestion control logic 284 .
- the congestion detection logic 282 determines whether congestion is occurring with regard to the resource attempting to be accessed by on the ACKS and NACK received. The congestion detection logic 282 may make this determination based on a number of different logic and operations.
- congestion detection logic 282 A number of different embodiments of the congestion detection logic 282 are described in more detail below in conjunction with FIGS. 6 , 8 , 10 , 12 and 14 .
- one or more of the congestion detection logic 282 illustrated in FIGS. 6 , 8 , 10 , 12 and 14 are within the congestion detection logic 282 . Accordingly, one or more of such logic may be used to determine if congestion is detected.
- the different types of logic used within the congestion detection logic 282 is dependent on the system configuration, the applications being executed therein, etc. For example, the logic selected for detection may be different for the system 100 having two processors in comparison to the system 100 having 50 processors.
- the logic selected for detection may be different for the system 100 executing applications that include a relatively large amount of loads and stores in comparison to the system 100 executing applications that include a relatively small amount of loads and stores.
- the type of detection operation(s) used by the congestion detection logic 282 are configurable.
- a value within a register within the special purpose registers 254 is set, which indicates the type of detection operation(s).
- the congestion control logic 284 outputs a value through the disable retry signal 307 that is inputted to the retry logic 286 . As further described below, depending on such value, the retry logic 286 may or may not be precluded from outputting an access request 310 for accessing a given resource.
- FIG. 4 illustrates a one dimensional network congestion model based on the number of NACKs, according to one embodiment of the invention.
- FIG. 4 illustrates a graph of the number of NACKs received in response to access requests to a resource in reference to the time of the access requests, according to one embodiment of the invention.
- a y-axis 402 of a graph 400 represents the number of NACKs received in response to an attempt to access a resource (e.g., one of the cache lines in one of the cache memories 102 ).
- An x-axis 404 of the graph 400 represents the time of access requests.
- a capacity line 408 represents the amount of capacity of the resource such that there is congestion with regard to accessing the resource beyond such point.
- a rising edge 410 represents a rapid increase in the number of NACKs received back from the resource, because the capacity to process the access requests has been exceeded.
- a falling edge 412 represents a rapid decrease in the number of NACKs received back from the resource.
- a network congestion storm begins at the rising edge 410 when a number of the processors 104 A- 104 N attempt to access a shared resource. As shown, when the number of accesses is greater than the capacity of the system 100 , the number of NACKs increases. In turn, the memory latency would be longer with increasing number of NACKs, and the longer memory latency in turn would saturate buffers within the processors 104 (not shown) more quickly and thereby generate more NACKs. Such feedback may cause the rising edge 410 to be much steeper.
- FIG. 5 illustrates a one dimensional network congestion model based on the number of NACKs and ACKs, according to another embodiment of the invention. As shown, FIG. 5 illustrates a graph 500 of the receipt of ACKs and NACKs in response to access requests in reference to the time of the access requests, according to one embodiment of the invention.
- a y-axis 502 of the graph 500 represents the NACKs and ACKs received in response to an attempt to access a resource (e.g., one of the cache lines in one of the cache memories 105 ).
- An x-axis 504 of the graph 500 represents the time of access requests.
- the NACKs line 506 represents the NACKs received from the resource.
- the ACKs line 508 represents the ACKs received from the resource.
- the NACKs line 506 includes a number of sets of consecutive NACKs (including a third set of consecutive NACKs 516 and a fourth set of consecutive NACKs 518 ).
- a time point 510 , a time point 512 and a time point 514 are different points in time for access requests. Different embodiments for apparatus and operations for detection of the rising edge 419 are described in more detail below in conjunction with FIGS. 6-15 .
- FIGS. 6 , 8 , 10 , 12 and 14 illustrate different embodiments for the detection of memory congestion/contention in a multi-processor system.
- FIGS. 6 , 8 , 10 , 12 and 14 illustrate different apparatus for detecting the rising edge 410 , according to different embodiments of the invention.
- FIGS. 7 , 9 , 11 , 13 and 15 illustrate different operations for detecting the rising edge 410 , according to different embodiments of the invention.
- the operations of FIGS. 6 , 8 , 10 , 12 and 14 are described with reference to attempt to access a cache line from one of the cache memories 102 . However, embodiments of the invention may be used to access a number of other different resources (c.g., the memory 108 , a secondary storage device, etc.).
- a first embodiment of the congestion detection logic 282 is now described that detects congestion based on the consecutive number of NACKs received in response to an access request to a resource. Such an embodiment allows for accurate detection for a worst storm of congestion with regard to the number of NACKs received.
- FIG. 6 illustrates a congestion detection logic for detecting congestion based on whether a consecutive number of negative acknowledgements received in response to access requests exceeds a threshold, according to one embodiment of the invention.
- the congestion detection logic 282 includes an OR logic 610 , a NACK counter 612 and a comparison logic 614 .
- An ACKs signal 302 and the congestion detected signal 306 are coupled as inputs into the OR logic 610 .
- An output of the OR logic 610 is coupled to the reset input of the NACK counter 612 .
- the NACKs signal 304 is coupled to a data input of the NACK counter 612 .
- An output of the NACK counter 612 is coupled as a first input of the comparison logic 614 .
- a threshold signal 606 is coupled as a second input into the comparison logic 614 .
- the output of the comparison logic 614 is the congestion threshold signal 306 .
- FIG. 7 illustrates a flow diagram for detecting congestion based on a consecutive number of NACKs received in response to access requests, according to one embodiment of the invention.
- an access request is transmitted to a resource.
- the load/store functional unit 218 transmits an access request to one of the cache lines within one of the cache memories 102 .
- the access request may be routed through a local hub controller 106 coupled to the requesting processor 104 to a remote hub controller 106 .
- the remote hub controller 106 forwards the request to the processor 104 associated with the cache memory 102 that includes the cache line that is being requested. Control continues at block 704 .
- the congestion detection logic 282 and the retry logic 286 receive the response to the access request.
- the congestion detection logic 282 determines the type of response received in response to the access request. In particular, the congestion detection logic 282 determines whether the response is an ACK or a NACK based on whether the response is received on the ACKs signal 302 or the NACKs signal 304 .
- control continues at block 712 , which is described in more detail below.
- the NACK counter is incremented. With reference to the embodiment illustrated in FIG. 6 , the NACK counter 612 is incremented in response to receiving a NACK on the NACKs signal 304 . Control continues at block 708 .
- the NACK counter 612 counts the consecutive number of NACKs received back from the resource through the NACKs signal 304 .
- the NACK counter 612 outputs the current value of the number of NACKs to the comparison logic 614 .
- the comparison logic 614 compares the current value of the number of NACKS to a threshold received from the threshold signal 606 .
- the threshold from the threshold signal 606 is a configurable value that may vary based on the configuration of the system 100 . For example, if the system 100 includes ten processors instead of three, the threshold may be smaller.
- the comparison logic 614 upon determining that the consecutive number of NACKs has exceeded the threshold, access to the resource is controlled.
- the comparison logic 614 generates the congestion detected signal 306 .
- the congestion detection logic 282 outputs an indication on the congestion detected signal 306 to the congestion control logic 284 that indicates that there is congestion with reference to access of this resource.
- the congestion control logic 284 precludes the retry logic 286 from retrying the accessing of the resource from a given period of time. Control continues at block 712 .
- the NACK counter is reset.
- the OR logic 610 outputs a logical high to the reset input of the NACK counter 612 if either congestion is detected (on the congestion detected signal 306 ) or if an ACK is received on the ACKS signal 302 . Accordingly, a consecutive count of the number of NACKS is reset if either an ACK is received or congestion is detected.
- the operations of the flow diagram 700 are complete.
- Another embodiment of the congestion detection logic 282 is now described. Such an embodiment detects congestion based on the consecutive number of NACKs received in response to an access request to a resource within a given time period. Returning to FIG. 4 , this embodiment of the congestion detection logic 282 detects the change (the rising edge 410 ) of the consecutive number of NACKs. In such an embodiment, there is congestion if the consecutive number of NACKs detected exceeds a threshold.
- FIG. 8 illustrates a congestion detection logic for detecting congestion based on whether a number of consecutive negative acknowledgements received in response to access requests exceed a threshold within a time period, according to one embodiment of the invention.
- FIG. 8 illustrates one embodiment of the congestion detection logic 282 .
- the congestion detection logic 282 includes a OR logic 806 , a NACK counter 812 , a previous NACKs (before ACK) memory 804 and a comparison logic 814 .
- the ACKs signal 302 and the congestion detected signal 306 are coupled as inputs into the OR logic 806 .
- An output of the OR logic 806 is coupled as the reset input of the NACK counter 812 .
- the NACKs signal 304 is coupled as a data input into the NACK counter 812 .
- An output of the NACK counter 812 is coupled as a first input of the comparison logic 814 and is coupled as an input into the previous NACKs (before ACK) memory 804 .
- a threshold signal 802 is coupled as a second input into the comparison logic 814 .
- the comparison logic 814 also retrieves a previous NACK value from the previous NACKs (before ACK) memory 804 .
- the output of the comparison logic 814 is the congestion threshold signal 306 .
- FIG. 9 illustrates a flow diagram for detecting congestion based on a number of consecutive negative acknowledgements received in response to access requests within a time period, according to one embodiment of the invention.
- an access request is transmitted to a resource.
- the load/store functional unit 218 transmits an access request to one of the cache lines within one of the cache memories 105 . Control continues at block 906 .
- the congestion detection logic 282 and the retry logic 286 receive the response to the access request.
- the congestion detection logic 282 determines the type of response received in response to the access request. In particular, the congestion detection logic 282 determines whether the response is an ACK or a NACK based on whether the response is received on the ACKs signal 302 or the NACKs signal 304 .
- control continues at block 914 , which is described in more detail below.
- the NACK counter is incremented. With reference to FIG. 8 , the NACK counter 812 is incremented after a NACK is received on the NACKs signal 304 . Control continues at block 910 .
- the previous NACKs (before ACK) memory 804 stores the value of the number of consecutive NACKs received prior to the receipt of an ACK. Therefore, after an ACK is received, the value in the NACK counter 812 is stored in the previous NACKs (before ACK) memory 804 .
- the retry logic 286 may have retried five times before receiving an ACK from a resource. Therefore, the number of consecutive NACKs would be five, which is stored in the previous NACKs (before ACK) memory 804 .
- the comparison logic 814 determines whether the difference between the value stored in the previous NACKs (before ACK) memory 804 and the current value of the NACK counter 812 exceeds the threshold 802 . Accordingly, the comparison logic 814 compares the change of the consecutive number of NACKs between an ACK.
- the embodiment of the congestion detection logic 282 shown in FIG. 6 is compared to the embodiment of the congestion detection logic 282 shown in FIG. 8 .
- the threshold 606 for the embodiment shown in FIG. 6 is such that the congestion is not detected until the time point 514 .
- the third set of consecutive NACKs 516 (shown in FIG. 5 ) includes four consecutive NACKs; while a fourth set of consecutive NACKs 518 includes nine consecutive NACKs.
- the congestion is considered detected once the difference between the two sets of consecutive NACKs exceeds a threshold. Assuming that the threshold is two, congestion is detected at time point 512 (i.e., after six consecutive NACKS in the fourth set 518 ).
- the congestion is detected at an earlier point with the embodiment of FIG. 8 in comparison to when the congestion is detected with the embodiment of FIG. 6 . Therefore, as described above, different embodiments of the congestion detection logic 282 using different thresholds are used based on the system configuration and the applications executing on such systems.
- control continues at block 902 , where another access request is made for the resource by the retry logic 286 (in the load/store unit functional unit 218 ).
- the comparison logic 814 upon determining that the difference between the previous number of consecutive NACKs and the current number of consecutive NACKs does exceed a threshold, access to the resource is controlled.
- the comparison logic 814 generates the congestion detected signal 306 .
- the congestion detection logic 282 outputs an indication on the congestion detected signal 306 to the congestion control logic 284 that indicates that there is congestion with reference to access of this resource.
- the congestion control logic 284 precludes the retry logic 286 from retrying the accessing of the resource for a given period of time. Control continues at block 914 .
- the value of the NACK counter is copied as the previous NACK value.
- the OR logic 806 outputs a logical high value into the reset input of the NACK counter 812 , the NACK counter 812 copies its value into the previous NACKs (before ACK) memory 804 . Accordingly, if an ACK is received through the ACKs signal 302 or congestion is detected (congestion detected signal 306 is a logical high value), the OR logic 806 outputs a logical high value that causes the NACK counter 812 to copy its value into the previous NACKs (before ACK) memory 804 . Control continues at block 916 .
- the NACK counter is reset.
- the OR logic 806 outputs a logical high value into the reset input of the NACK counter 812 . Accordingly, if an ACK is received through the ACKs signal 302 or congestion is detected (congestion detected signal 306 is a logical high value), the OR logic 806 outputs a logical high value that causes the NACK counter 812 to reset.
- the operations of the flow diagram 900 are complete.
- congestion detection logic 282 incorporates the number of ACKs, in addition to the number of NACKs, received in response to access requests to a resource. Accordingly, the number of NACKs may be counted without the restriction of being consecutive.
- FIG. 10 illustrates a congestion detection logic for detecting congestion based on whether the ratio of the number of negative acknowledgements to the number of positive acknowledgments received in response to access requests exceeds a threshold, according to one embodiment of the invention.
- FIG. 10 illustrates one embodiment of the congestion detection logic 282 .
- the congestion detection logic 282 includes an OR logic 1002 , a NACK counter 1012 , a NACK comparison logic 1008 , an ACK counter 1014 and an ACK comparison logic 1006 .
- the congestion detected logic signal 306 and the output from the ACK comparison logic 1006 are coupled as inputs into the OR logic 1002 .
- the output of the OR logic 1002 is coupled to the reset input of the NACK counter 1012 and is coupled to the reset input of the ACK counter 1014 .
- the NACKs signal 304 is coupled as a data input into the NACK counter 1012 .
- the ACKs signal 302 is coupled as a data input into the ACK counter 1014 .
- the output of the NACK counter 1012 is coupled as a first input into the NACK comparison logic 1008 .
- a NACK threshold signal 1018 is coupled as a second input into the NACK comparison logic 1008 .
- the output of the ACK counter 1014 is coupled as a first input into the ACK comparison logic 1006 .
- An ACK threshold signal 1016 is coupled as a second input into the ACK comparison logic 1006 .
- the output of the NACK comparison logic 1008 is the congestion threshold signal 306 .
- FIG. 11 illustrates a flow diagram for detecting congestion based on a ratio of the number of negative acknowledgements to the number of positive acknowledgments received in response to access requests, according to one embodiment of the invention.
- an access request is transmitted to a resource.
- the load/store functional unit 218 transmits an access request to one of the cache lines within one of the cache memories 105 .
- Control continues at block 1104 .
- the congestion detection logic 282 determines the type of response received in response to the access request.
- control continues at block 1112 , which is described in more detail below.
- the NACK counter is incremented.
- the NACK counter 1012 is incremented when a NACK is received on the NACKs signal 304 . Control continues at block 1108 .
- the NACK counter 1012 counts the number of NACKs received back from the resource through the NACKs signal 304 .
- the NACK counter 1012 outputs the current value of the number of NACKs to the NACK comparison logic 1008 .
- the NACK comparison logic 1008 compares the current value of the number of NACKs to a threshold received from the NACK threshold signal 1018 .
- the threshold from the NACK threshold signal 1018 is a configurable value that may vary based on the configuration of the system 100 .
- the NACK comparison logic 1008 generates the congestion detected signal 306 .
- the congestion detection logic 282 outputs an indication on the congestion detected signal 306 to the congestion control logic 284 that indicates that there is congestion with reference to access of this resource.
- the congestion control logic 284 precludes the retry logic 286 from retrying the accessing of the resource from a given period of time. Control continues at block 1116 , which is described in more detail below.
- the ACK counter is incremented.
- the ACK counter 1014 is incremented when an ACK is received on the ACKS signal 302 . Control continues at block 1114 .
- the ACK counter 1014 counts the number of ACKs received back from the resource through the ACKs signal 302 .
- the ACK counter 1014 outputs the current value of the number of ACKs to the ACK comparison logic 1006 .
- the ACK comparison logic 1006 compares the current value of the number of ACKs to a threshold received from the ACK threshold signal 1016 .
- the threshold from the ACK threshold signal 1016 is a configurable value that may vary based on the configuration of the system 100 .
- the NACK counter and the ACK counter are reset.
- the OR logic 1002 outputs a logical high to the NACK counter 1012 and the ACK counter 1014 if either congestion is detected (on the congestion detected signal 306 ) or if the number of ACKs received exceed a threshold.
- the operations of the flow diagram 1100 are complete. Therefore, the embodiment of the congestion detection logic 282 illustrated in FIG. 10 accounts for the number of ACKs in the determination of whether access to the resource is congested.
- An embodiment of the congestion detection logic 282 is now described that uses the average number of NACKs in the determination of whether access to the resource is congested. Accordingly, such an embodiment does not require that the number of NACKs be consecutive in order for there to be congestion with regard to the resource being accessed.
- FIG. 12 illustrates a congestion detection logic for detecting congestion based on whether an average number of negative acknowledgements received in response to access requests exceeds a threshold, according to one embodiment of the invention.
- FIG. 12 illustrates one embodiment of the congestion detection logic 282 .
- the congestion detection logic 282 includes a NACK counter 1212 and a NACK comparison logic 1208 .
- the congestion detected signal 306 is coupled to the reset input of the NACK counter 1212 .
- the NACKs signal 304 is coupled to a first data input of the NACK counter 1212 .
- the ACKs signal 302 is coupled to a second data input of the NACK counter 1212 .
- the output of the NACK counter 1212 is coupled to a first input of the NACK comparison logic 1208 .
- a NACK threshold signal 1202 is coupled to a second input of the NACK comparison logic 1208 .
- the output of the NACK comparison logic 1208 is the congestion detected signal 306 .
- FIG. 13 illustrates a flow diagram for detecting congestion based on an average number of negative acknowledgements received in response to access requests, according to one embodiment of the invention.
- an access request is transmitted to a resource.
- the load/store functional unit 218 transmits an access request to one of the cache lines within one of the cache memories 105 . Control continues at block 1304 .
- the congestion detection logic 282 determines the type of response received in response to the access request.
- the ACK counter is decremented.
- the ACK counter 1212 is decremented when an ACK is received on the ACKs signal 302 . Control continues at block 1310 , which is described in more detail below.
- the NACK counter is incremented. With reference to FIG. 12 , the NACK counter 1212 is incremented when a NACK is received on the NACKs signal 304 . Control continues at block 1310 .
- the NACK counter 1212 outputs the current value of the number of NACKs to the NACK comparison logic 1208 .
- the NACK comparison logic 1208 compares the current value of the number of NACKs to a threshold received from the NACK threshold signal 1202 .
- the operations of the flow diagram 1300 continue at block 1302 , wherein another access request is made by the retry logic 286 (in the load/store functional unit 218 ).
- the NACK comparison logic 1208 generates the congestion detected signal 306 .
- the congestion detection logic 282 outputs an indication on the congestion detected signal 306 to the congestion control logic 284 that indicates that there is congestion with reference to access of this resource.
- the congestion control logic 284 precludes the retry logic 286 from retrying the accessing of the resource from a given period of time. Control continues at block 1314 .
- the NACK counter is reset. With reference to the embodiment illustrated in FIG. 12 , if the congested detected signal 306 indicates congestion, such indication also causes the NACK counter 1212 to reset. The operations of the flow diagram 1300 are complete.
- An embodiment of the congestion detection logic 282 uses a moving (shifting) average number of NACKs in the determination of whether access to the resource is congested.
- a resource such as a cache memory
- the instructions of the application include a number of loads for loading data into the processor 104 for execution.
- the instructions of a typical application have a relatively smaller number of loads, as a number of the instructions are to operate on the data that is loaded into the processor 104 .
- subsequent instructions of such an application have an increased number of stores for outputting the results of the prior operations.
- the embodiment of the congestion detection logic 282 illustrated in FIG. 14 uses a window of the number of NACKs that shifts over time during the operations.
- FIG. 14 illustrates a congestion detection logic for detecting congestion based on a moving average of the number of negative acknowledgements received in response to access requests, according to one embodiment of the invention.
- FIG. 14 illustrates one embodiment of the congestion detection logic 282 .
- the congestion detection logic 282 includes a NACK counter 1408 , a NACK comparison logic 1410 , an OR logic 1402 , an averaging window shift register 1404 and a multiplexer 1406 .
- the NACKs signal 304 is coupled to a first input of the OR logic 1402 , to a data input into the averaging window shift register 1404 and to a first data input of the NACK counter 1408 .
- the ACKs signal 302 is coupled to a second input of the OR logic 1402 .
- the output of the OR logic 1402 is coupled to a shift input of the averaging window shift register 1404 .
- the congestion detected signal 306 is coupled to a reset input of the averaging window shift register 1404 and to a reset input of the NACK counter 1408 .
- a first output 1424 of the averaging window shift register 1404 is coupled to a first input of the multiplexer 1406 .
- a second output 1426 of the averaging window shift register 1404 is coupled to a second input of the multiplexer 1406 .
- a third output 1428 of the averaging window shift register 1404 is coupled to a third input of the multiplexer 1406 .
- a window slice signal 1422 is coupled to a control input of the multiplexer 1406 .
- An output of the multiplexer 1406 is coupled to a second data input of the NACK counter 1408 .
- the output of the NACK counter 1408 is coupled to a first input of the NACK comparison logic 1410 .
- a NACK threshold signal 1420 is coupled as a second input of the NACK comparison logic 1410 .
- the output of the NACK comparison logic 1410 is the congestion detected signal 306 .
- FIG. 15 illustrates a flow diagram for detecting congestion based on a moving average of the number of negative acknowledgements received in response to access requests, according to one embodiment of the invention.
- an access request is transmitted to a resource.
- the load/store functional unit 218 transmits an access request to one of the cache lines within one of the cache memories 105 . Control continues at block 1504 .
- the congestion detection logic 282 determines the type of response received in response to the access request.
- the NACK counter is incremented. With reference to FIG. 14 , the NACK counter 1408 is incremented when a NACK is received on the NACK signal 304 . Control continues at block 1508 .
- a logical high value is shifted into the averaging window shift register.
- the OR logic 1404 outputs a logical high value into the shift input of the averaging window shift register 1404 .
- the averaging window shift register 1404 shifts in the current value on the NACKs signal 304 . Therefore, if a response is a NACK, the averaging window shift register 1404 shifts in a logical high. If a response is an ACK, the averaging window shift register 1404 shifts in a logical low (the operation in block 1510 ).
- FIGS. 16A-16I illustrate the value an averaging window shift register (as an eight-bit shift register) over time, according to one embodiment of the invention.
- FIG. 16A illustrates the averaging window shift register 1404 after a reset, wherein its value is initialized to zero.
- FIG. 16B illustrates the averaging window shift register 1404 after a logical high is shifted therein based on a response that is a NACK.
- FIG. 16C illustrates the averaging window shift register 1404 after a second logical high is shifted therein based on a second response that is a NACK.
- FIG. 16D illustrates the averaging window shift register 1404 after a logical low is shifted therein based on a third response that is an ACK.
- FIG. 16A illustrates the averaging window shift register 1404 after a reset, wherein its value is initialized to zero.
- FIG. 16B illustrates the averaging window shift register 1404 after a logical high is shifted there
- FIG. 16E illustrates the averaging window shift register 1404 after a logical high is shifted therein based on a fourth response that is a NACK.
- FIG. 16F illustrates the averaging window shift register 1404 after a logical low is shifted therein based on a fifth response that is an ACK.
- FIG. 16G illustrates the averaging window shift register 1404 after a logical high is shifted therein based on a sixth response that is a NACK.
- FIG. 16H illustrates the averaging window shift register 1404 after a logical high is shifted therein based on a seventh response that is a NACK.
- 16I illustrates the averaging window shift register 1404 after a logical high is shifted therein based on a eighth response that is a NACK.
- control continues at block 1512 , which is described in more detail below.
- a logical low value is shifted into the averaging window shift register.
- the OR logic 1404 outputs a logical high value into the shift input of the averaging window shift register 1404 .
- the averaging window shift register 1404 shifts in the current value on the NACKs signal 304 . Therefore, if a response is an ACK, the averaging window shift register 1404 shifts in a logical low. Control continues at block 1512 .
- the value of the window slice signal 1422 causes the multiplexer 1406 to select one of the three inputs to be inputted into the NACK counter 1408 .
- the first output 1424 , the second output 1426 and the third output 1428 are different sizes of the averaging window shift register 1404 . Accordingly, the congestion detection logic 282 illustrated in FIG. 14 is configurable to vary the size of the window of the responses (ACKs and NACKs) to view in determining whether there is congestion.
- the first output 1424 may be the largest size window; the second output 1426 may be the second largest window; and the third output 1428 may be the smallest size window.
- the first output 1424 therefore, takes into account the largest number of responses in determining whether there is congestion.
- the first output 1424 selects a first bit of the averaging window shift register 1404 .
- the second output 1426 selects a second bit of the averaging window shift register 1404 .
- the third output 1428 selects a third bit of the averaging window shift register 1404 .
- third output 1428 selects the rightmost bit (bit zero having a value of one).
- the second output 1426 selects the second to the rightmost bit (bit one having a value of one).
- the first output 1424 selects the third to the rightmost bit (bit two having a value of zero). Accordingly, the values shifted into the averaging window shift register 1404 moves the window, while the different bit selections of the averaging window shift register 1404 determines the size of the window of responses used to determine whether there is congestion.
- the value of the window slice signal 1422 causes the multiplexer 1406 to select one of the three bits that are outputted from the averaging window shift register 1404 .
- the output from the multiplexer 1406 is inputted into a data input the NACK counter 1408 .
- the NACK counter 1408 decrements its current value of the number of NACKs, if the multiplexer 1406 outputs a bit having a value of one.
- the NACK counter 1408 does not decrement its current value of the number of NACKs, if the multiplexer 1406 outputs a bit having a value of zero.
- control continues at block 1516 , which is described in more detail below.
- the NACK counter is decremented.
- the NACK counter 1408 is decremented after the multiplexer 1406 selects a value of one from the averaging window shift register 1404 . Control continues at block 1516 .
- the NACK counter 1408 outputs the current value of the number of NACKs to the NACK comparison logic 1410 .
- the NACK comparison logic 1410 compares the current value of the number of NACKs to a threshold received from the NACK threshold signal 1420 .
- the operations of the flow diagram 1500 continue at block 1502 , wherein another access request is made by the retry logic 286 (in the load/store functional unit 218 ).
- the NACK comparison logic 1410 generates the congestion detected signal 306 .
- the congestion detection logic 282 outputs an indication on the congestion detected signal 306 to the congestion control logic 284 that indicates that there is congestion with reference to access of this resource.
- the congestion control logic 284 precludes the retry logic 286 from retrying the accessing of the resource from a given period of time. Control continues at block 1520 .
- the NACK counter and the averaging window shift register are reset.
- congestion e.g., a logical high
- congestion also causes the NACK counter 1408 and the averaging window shift register 1404 to reset.
- the operations of the flow diagram 1500 are complete.
- the congestion control logic 284 delays the issuance of retry requests by the retry logic 286 .
- the length of delay may affect the performance of the system 100 . Therefore, a number of considerations may be taken into account when determining the length of the delay.
- the detection may be a false indication of congestion depending on the system configuration, the application being executed and/or the types of congestion detection logic used. If there is actual congestion but if the delay is too small, the number of retries for accessing the resource may be too great. Also, if the detection is false but if the delay is too large, the performance of the system 100 may be adversely affected. Moreover, if the congestion storm is detected at a late stage of congestion and the confidence of detection is high, the delay may be too large. However, if the congestion storm is detected at an earlier stage, but the detection is not definitive, the delay may be too small.
- collision control logic may be incorporated into embodiments of the invention that controls the retry of the access requests across the different processors.
- the collision control logic may include some random delay such that all of the processors do not retry the accessing of a resource at the same time.
- the congestion control logic 284 is not provided an indication of when the falling edge 412 is reached with regard to congestion. Accordingly, if the congestion is in the range of the falling edge 412 , performance may be adversely affected if the congestion control logic 284 does not retry at certain points of the congestion. In particular, the resource may no longer be congested and could be accessed but the congestion control logic 282 continues to preclude the retrying of accessing the resource. However, the retry logic 286 may be required to retry extra times to determine the degree of congestion.
- congestion control logic 284 based on an exponential back off delay operation is now described.
- the amount of delay increases each time extra congestion is detected. Further, the amount of delay decreases each time the processor 104 receives a given number of ACKs for the resource.
- FIG. 17 illustrates a congestion control logic for controlling access to a resource based on an exponential back off delay operation, according to one embodiment of the invention.
- FIG. 17 illustrates one embodiment of the congestion control logic 284 .
- the congestion control logic 284 includes a state machine 1702 , a state machine 1704 , an AND logic 1706 , an AND logic 1708 , an OR logic 1710 , an initial delay memory 1712 , a delay amount 1714 , a cycle down counter 1716 and a comparison logic 1718 .
- An operation type signal 1730 is coupled to a first input of the state machine 1702 .
- the operation type signal 1730 indicates the type of congestion detection operation used (e.g., consecutive number of NACKs, moving average of the number of NACKs, etc.).
- the one to a number of different types of congestion detection logic 282 may be coupled to the congestion control logic 284 .
- one to a number of the congestion detection logic 282 may be used to indicate detection.
- the operation type signal 1730 indicates which congestion detection operation is indicating congestion on the congestion detected signal 306 being received. Therefore, if two different congestion detection logics 282 are coupled to the congestion control logic 284 , the state machine 1702 may select whether to control congestion based on which congestion detection logic 282 generated the congestion detected signal 306 .
- the congestion detected signal 306 is coupled to a second input of the state machine 1702 and to a first input of the AND logic 1706 .
- the state machine 1702 outputs a storm begin signal 1734 and a storm pending signal 1736 .
- the storm begin signal 1734 is coupled to a first input of the state machine 1704 and to a power load input of the delay amount 1714 .
- the storm pending signal 1736 is coupled to a second input of the state machine 1704 , to a second input of the AND logic 1706 and to a second input of the AND logic 1708 .
- the output of the AND logic 1706 is coupled to a left shift input of the delay amount 1714 , to a left shift input of the cycle down counter 1716 and to a first input of the OR logic 1710 .
- the output of the AND logic 1708 is coupled to a right shift input of the delay amount 1714 , to a right shift input of the cycle down counter 1716 and to a second input of the OR logic 1710 .
- the initial delay memory 1712 is coupled to be inputted into the delay amount 1714 .
- the output of the delay amount 1714 is coupled to an input of the cycle down counter 1716 .
- the output of the OR logic 1710 is coupled to a start input of the cycle down counter 1716 .
- the output of the cycle down counter is coupled to a first input of the comparison logic 1718 .
- the comparison logic 1718 is coupled to receive a zero input value.
- the output of the comparison logic 1718 is an enable retry signal 308 that is coupled to an input of the state machine 1704 .
- a valid retry cycle signal 1738 is coupled to an input of the state machine 1704 .
- the output of the state machine 1704 is a disable retry signal 307 .
- the valid retry cycle signal 1738 is an indicator of when a retry of a request made be made.
- the processor 104 may be configured to retry a request once every eight clock cycles. Therefore, after the enable retry signal 308 indicates that a request may be retried, the state machine 1704 does not provide this indication on the disable retry signal 307 to the retry logic 286 until the valid retry cycle signal 1738 indicates that a retry may be made.
- the operations of the congestion control logic 284 shown in FIG. 17 are now described with reference to flow diagrams 1800 , 1830 and 1850 of FIGS. 18A , 18 B and 18 C, respectively.
- FIGS. 18A-18C illustrate flow diagrams for controlling congestion of accesses to a resource based on an exponential back off delay, according to one embodiment of the invention.
- FIGS. 18A-18C illustrate different independent operations for controlling congestion of accesses to a resource.
- FIG. 18A illustrates the flow diagram 1800 for the operations of the congestion control logic 284 illustrated in FIG. 17 upon receipt of an indication that congestion is detected.
- FIG. 18B illustrates the flow diagram 1830 for the operations of the congestion control logic 284 illustrated in FIG. 17 after the number of ACKS equal a threshold.
- FIG. 18C illustrates the flow diagram 1850 for the operations of the congestion control logic 284 illustrated in FIG. 17 after congestion is detected.
- the operations of the flow diagram 1800 are now described.
- an indication that congestion is detected is received.
- the state machine 1702 receives such an indication on the congestion detected signal 306 (being received from the congestion detection logic 282 ).
- the state machine 1702 varies the processing of this indication based on the current state of the congestion control logic 284 . Control continues at block 1804 .
- the state machine 1702 determines whether there is congestion currently.
- the state machine 1702 stores the current state of the congestion control logic 284 (including whether there is congestion currently).
- the state machine 1702 sets the storm begin signal 1734 and the storm pending signal 1736 (indicative of a congestion storm) to logical high values.
- the state machine 1704 receives these logical high values on the storm begin signal 1734 and the storm pending signal 1736 .
- the logical high value for the storm begin signal 1734 causes the state machine 1704 to output a logical high value on the disable retry signal 307 , thereby indicating that retries are to be disabled.
- this value on the disable retry signal 307 causes the retry logic 286 to stop retrying of accessing the resource. Control continues at block 1808 .
- the initial value of delay of the retry is loaded.
- the delay amount 1714 receives the logical high value on the storm beginning signal 1734 on its power load input.
- the delay amount 1714 loads an initial delay value from initial delay memory 1712 .
- This value (which may be configurable) is the initial amount of delay before retries of access to the resource may resume. Control continues at block 1810 .
- the count down of the delay is initiated.
- the AND logic 1706 outputs a logical high value after receipt of a logical high value from the storm pending signal 1736 and a logical high value from the congestion detected signal 306 .
- the output of the AND logic 1706 is inputted into an input of the OR logic 1710 .
- the output of the OR logic 1710 is inputted into the start input of the cycle down counter 1716 . Therefore, the cycle down counter 1716 starts the count down of the delay when there is congestion currently and additional congestion is received. A more detailed description of this count down operation is described in more detail below in conjunction with the flow diagram 1850 of FIG. 18C .
- the value of the delay is increased exponentially.
- the storm pending signal 1736 has a logical high value.
- the AND logic 1706 receives this logical high value and the logical high value from the congestion detected signal 306 , thereby causing the AND logic 1706 to output a logical high that is inputted into the left shift input of the delay amount 1714 and the left shift input of the cycle down counter 1716 .
- the delay amount 1714 and the cycle down counter 1716 left shift zeros into the least significant bit of current value of the delay. Accordingly, the amount of delay is exponentially increased each time there is congestion currently and additional congestion is detected.
- an indication is received on the signal 1732 that the number of ACKs received equals an ACK threshold.
- the state machine 1702 and the AND logic 1732 receives this indication on the signal 1732 .
- Such a signal indicates when the number of ACKs returned in response to accessing a resource exceeds a given threshold. Control continues at block 1834 .
- the state machine 1702 determines whether there is congestion currently.
- the state machine 1702 stores the current state of the congestion control logic 284 (including whether there is congestion currently).
- the operations of the flow diagram 1830 are complete.
- the value of the delay is exponentially decreased.
- the storm pending signal 1736 has a logical high value.
- the AND logic 1708 receives this logical high value and the logical high value from the signal 1732 (that indicates that the number of ACKs received exceed a threshold), thereby causing the AND logic 1708 to output a logical high that is inputted into the right shift input of the delay amount 1714 and the right shift input of the cycle down counter 1716 .
- the delay amount 1714 and the cycle down counter 1716 right shift zeros into the least significant bit of current value of the delay. Accordingly, the amount of delay is exponentially decreased each time there is congestion currently and the number of ACKs exceed a threshold. Control continues at block 1840 .
- the value of the delay is decremented.
- the cycle down counter 1716 decrements the current value stored therein. Control continues at block 1854 .
- the comparison logic 1718 retrieves the current value of the delay stored in the cycle down counter 1716 .
- the comparison logic 1718 compares this value to zero.
- the cycle down counter 1716 is partitioned into a lower set of bits and an upper set of bits to allow for random delay.
- the lower set of bits start from a maximum value and count down to zero and restarts at the maximum value. For example, if the lower set of bits are the lower four bits, the maximum value is 1111 and counts down to 0000. Once the lower four bits are restarted at the maximum value, a carry value is carried over to the upper set of bits.
- the upper set of bits are loaded with a configurable value from one of the special purpose registers.
- the upper set of bits counts down from the loaded configurable value to zero and restarts at the loaded configurable value. Accordingly, the comparison logic 1718 determines whether the value of the cycle down counter 1716 (including the lower set of bits and the upper set of bits) equals zero. Upon determining that the current value of the delay is not equal to zero, control continues at block 1852 , wherein the delay is again decremented.
- the comparison logic 1718 outputs an indication on the enable retry signal 308 that indicates that access to the resource may be retried.
- the state machine 1704 receives this indication and outputs an indication on the disable retry signal 307 that is inputted into the retry logic 286 , thereby enabling the retry logic 286 to output access requests to the resource.
- the types of memory detection and congestion to execute in the processors may vary depending on the number of processors in the system as well as the number of accesses by the application that is executing therein. Therefore, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
Claims (16)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/478,051 US9271267B2 (en) | 2003-07-31 | 2012-05-22 | Detection and control of resource congestion by a number of processors |
US15/051,512 US20160248695A1 (en) | 2003-07-31 | 2016-02-23 | Detection and control of resource congestion by a number of processors |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/631,988 US8185703B2 (en) | 2003-07-31 | 2003-07-31 | Detection and control of resource congestion by a number of processors |
US13/478,051 US9271267B2 (en) | 2003-07-31 | 2012-05-22 | Detection and control of resource congestion by a number of processors |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/631,988 Continuation US8185703B2 (en) | 2003-07-31 | 2003-07-31 | Detection and control of resource congestion by a number of processors |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/051,512 Continuation US20160248695A1 (en) | 2003-07-31 | 2016-02-23 | Detection and control of resource congestion by a number of processors |
Publications (2)
Publication Number | Publication Date |
---|---|
US20120272002A1 US20120272002A1 (en) | 2012-10-25 |
US9271267B2 true US9271267B2 (en) | 2016-02-23 |
Family
ID=34104241
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/631,988 Active 2026-07-24 US8185703B2 (en) | 2003-07-31 | 2003-07-31 | Detection and control of resource congestion by a number of processors |
US13/478,051 Active 2025-07-18 US9271267B2 (en) | 2003-07-31 | 2012-05-22 | Detection and control of resource congestion by a number of processors |
US15/051,512 Abandoned US20160248695A1 (en) | 2003-07-31 | 2016-02-23 | Detection and control of resource congestion by a number of processors |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/631,988 Active 2026-07-24 US8185703B2 (en) | 2003-07-31 | 2003-07-31 | Detection and control of resource congestion by a number of processors |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/051,512 Abandoned US20160248695A1 (en) | 2003-07-31 | 2016-02-23 | Detection and control of resource congestion by a number of processors |
Country Status (1)
Country | Link |
---|---|
US (3) | US8185703B2 (en) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8254372B2 (en) * | 2003-02-21 | 2012-08-28 | Genband Us Llc | Data communication apparatus and method |
US8185703B2 (en) | 2003-07-31 | 2012-05-22 | Silicon Graphics International Corp. | Detection and control of resource congestion by a number of processors |
US7990865B2 (en) * | 2004-03-19 | 2011-08-02 | Genband Us Llc | Communicating processing capabilities along a communications path |
US8027265B2 (en) * | 2004-03-19 | 2011-09-27 | Genband Us Llc | Providing a capability list of a predefined format in a communications network |
US8930569B2 (en) * | 2004-05-05 | 2015-01-06 | Qualcomm Incorporated | Methods and apparatus for optimum file transfers in a time-varying network emvironment |
US7729346B2 (en) * | 2004-09-18 | 2010-06-01 | Genband Inc. | UMTS call handling methods and apparatus |
US7830864B2 (en) * | 2004-09-18 | 2010-11-09 | Genband Us Llc | Apparatus and methods for per-session switching for multiple wireline and wireless data types |
US7440399B2 (en) * | 2004-12-22 | 2008-10-21 | Qualcomm Incorporated | Apparatus and method for efficient transmission of acknowledgments |
US8254411B2 (en) * | 2005-02-10 | 2012-08-28 | International Business Machines Corporation | Data processing system, method and interconnect fabric having a flow governor |
KR100692529B1 (en) * | 2005-07-01 | 2007-03-09 | 삼성전자주식회사 | Method and apparatus for determining optimal delay time, and computer-readable storage medium storing optimal delay time determining program |
US7792150B2 (en) * | 2005-08-19 | 2010-09-07 | Genband Us Llc | Methods, systems, and computer program products for supporting transcoder-free operation in media gateway |
US7835346B2 (en) * | 2006-01-17 | 2010-11-16 | Genband Us Llc | Methods, systems, and computer program products for providing transcoder free operation (TrFO) and interworking between unlicensed mobile access (UMA) and universal mobile telecommunications system (UMTS) call legs using a media gateway |
US8359624B2 (en) | 2006-03-01 | 2013-01-22 | Broadcom Corporation | Protocol for control of network or bus attached cable TV set-top box front-end functionality |
WO2008056205A1 (en) * | 2006-11-08 | 2008-05-15 | Freescale Semiconductor, Inc. | Device and method for managing access requests |
US8346239B2 (en) | 2006-12-28 | 2013-01-01 | Genband Us Llc | Methods, systems, and computer program products for silence insertion descriptor (SID) conversion |
US9887813B2 (en) * | 2007-06-13 | 2018-02-06 | Qualcomm Incorporated | Protocol data unit recovery |
US8385207B2 (en) * | 2008-05-27 | 2013-02-26 | International Business Machines Corporation | Method and apparatus for end-to-end network congestion management |
JP5052549B2 (en) * | 2009-03-03 | 2012-10-17 | 株式会社東芝 | Wireless communication apparatus and wireless communication method |
US8908541B2 (en) | 2009-08-04 | 2014-12-09 | Genband Us Llc | Methods, systems, and computer readable media for intelligent optimization of digital signal processor (DSP) resource utilization in a media gateway |
AU2010201718B2 (en) * | 2010-04-29 | 2012-08-23 | Canon Kabushiki Kaisha | Method, system and apparatus for identifying a cache line |
US20120281530A1 (en) * | 2010-11-08 | 2012-11-08 | Qualcomm Incorporated | System and method for radio access network overload control |
US9537892B2 (en) | 2012-12-20 | 2017-01-03 | Bank Of America Corporation | Facilitating separation-of-duties when provisioning access rights in a computing system |
US9483488B2 (en) | 2012-12-20 | 2016-11-01 | Bank Of America Corporation | Verifying separation-of-duties at IAM system implementing IAM data model |
US9639594B2 (en) | 2012-12-20 | 2017-05-02 | Bank Of America Corporation | Common data model for identity access management data |
US9542433B2 (en) | 2012-12-20 | 2017-01-10 | Bank Of America Corporation | Quality assurance checks of access rights in a computing system |
US9189644B2 (en) | 2012-12-20 | 2015-11-17 | Bank Of America Corporation | Access requests at IAM system implementing IAM data model |
US9477838B2 (en) | 2012-12-20 | 2016-10-25 | Bank Of America Corporation | Reconciliation of access rights in a computing system |
US9489390B2 (en) | 2012-12-20 | 2016-11-08 | Bank Of America Corporation | Reconciling access rights at IAM system implementing IAM data model |
US9529629B2 (en) * | 2012-12-20 | 2016-12-27 | Bank Of America Corporation | Computing resource inventory system |
US9495380B2 (en) | 2012-12-20 | 2016-11-15 | Bank Of America Corporation | Access reviews at IAM system implementing IAM data model |
JP6007799B2 (en) * | 2013-01-16 | 2016-10-12 | 富士通株式会社 | Centralized network control system |
US8959528B2 (en) * | 2013-03-13 | 2015-02-17 | International Business Machines Corporation | Acknowledging incoming messages |
US9521158B2 (en) * | 2014-01-06 | 2016-12-13 | Cisco Technology, Inc. | Feature aggregation in a computer network |
WO2017182927A1 (en) * | 2016-04-19 | 2017-10-26 | Nokia Technologies Oy | Split bearer dual/multiple connectivity retransmission diversity |
US10585800B2 (en) | 2017-06-16 | 2020-03-10 | International Business Machines Corporation | Reducing cache transfer overhead in a system |
CN109951879B (en) * | 2017-12-21 | 2021-04-23 | 中国移动通信集团设计院有限公司 | Punishment method for ESRVCC switching preparation stage and evolution base station |
WO2019195086A1 (en) * | 2018-04-03 | 2019-10-10 | Walmart Apollo, Llc | Customized service request permission control system |
CN111752490B (en) * | 2020-07-02 | 2024-04-12 | 大陆汽车车身电子系统(芜湖)有限公司 | Resource allocation method |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4516200A (en) | 1981-05-18 | 1985-05-07 | Texas Instruments Incorporated | Data communications system with host character terminal mode |
US4893248A (en) | 1987-02-06 | 1990-01-09 | Access Corporation | Monitoring and reporting system for remote terminals |
US5930820A (en) | 1996-03-18 | 1999-07-27 | Advanced Micro Devices, Inc. | Data cache and method using a stack memory for storing stack data separate from cache line storage |
US5974456A (en) | 1995-05-05 | 1999-10-26 | Silicon Graphics, Inc. | System and method for input/output flow control in a multiprocessor computer system |
US20020004842A1 (en) | 2000-06-30 | 2002-01-10 | Kanad Ghose | System and method for fast, reliable byte stream transport |
US20020009067A1 (en) | 2000-07-04 | 2002-01-24 | Joachim Sachs | Method and device for improving the transmission efficiency in a communication system with a layered protocol stack |
US20020040421A1 (en) | 2000-10-02 | 2002-04-04 | Fujitsu Limited Kawasaki, Japan | Cache controlling device and processor |
US6427193B1 (en) * | 1999-05-18 | 2002-07-30 | Advanced Micro Devices, Inc. | Deadlock avoidance using exponential backoff |
US20020150048A1 (en) | 2001-04-12 | 2002-10-17 | Sungwon Ha | Data transport acceleration and management within a network communication system |
US20040165538A1 (en) | 2003-02-21 | 2004-08-26 | Swami Yogesh Prem | System and method for movement detection and congestion response for transport layer protocol |
US6816954B2 (en) | 2002-07-29 | 2004-11-09 | Lsi Logic Corporation | System and method for tuning retry performance |
US6898751B2 (en) | 2002-07-31 | 2005-05-24 | Transdimension, Inc. | Method and system for optimizing polling in systems using negative acknowledgement protocols |
US8185703B2 (en) | 2003-07-31 | 2012-05-22 | Silicon Graphics International Corp. | Detection and control of resource congestion by a number of processors |
-
2003
- 2003-07-31 US US10/631,988 patent/US8185703B2/en active Active
-
2012
- 2012-05-22 US US13/478,051 patent/US9271267B2/en active Active
-
2016
- 2016-02-23 US US15/051,512 patent/US20160248695A1/en not_active Abandoned
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4516200A (en) | 1981-05-18 | 1985-05-07 | Texas Instruments Incorporated | Data communications system with host character terminal mode |
US4893248A (en) | 1987-02-06 | 1990-01-09 | Access Corporation | Monitoring and reporting system for remote terminals |
US5974456A (en) | 1995-05-05 | 1999-10-26 | Silicon Graphics, Inc. | System and method for input/output flow control in a multiprocessor computer system |
US5930820A (en) | 1996-03-18 | 1999-07-27 | Advanced Micro Devices, Inc. | Data cache and method using a stack memory for storing stack data separate from cache line storage |
US6427193B1 (en) * | 1999-05-18 | 2002-07-30 | Advanced Micro Devices, Inc. | Deadlock avoidance using exponential backoff |
US20020004842A1 (en) | 2000-06-30 | 2002-01-10 | Kanad Ghose | System and method for fast, reliable byte stream transport |
US20020009067A1 (en) | 2000-07-04 | 2002-01-24 | Joachim Sachs | Method and device for improving the transmission efficiency in a communication system with a layered protocol stack |
US20020040421A1 (en) | 2000-10-02 | 2002-04-04 | Fujitsu Limited Kawasaki, Japan | Cache controlling device and processor |
US20020150048A1 (en) | 2001-04-12 | 2002-10-17 | Sungwon Ha | Data transport acceleration and management within a network communication system |
US6816954B2 (en) | 2002-07-29 | 2004-11-09 | Lsi Logic Corporation | System and method for tuning retry performance |
US6898751B2 (en) | 2002-07-31 | 2005-05-24 | Transdimension, Inc. | Method and system for optimizing polling in systems using negative acknowledgement protocols |
US20040165538A1 (en) | 2003-02-21 | 2004-08-26 | Swami Yogesh Prem | System and method for movement detection and congestion response for transport layer protocol |
US8185703B2 (en) | 2003-07-31 | 2012-05-22 | Silicon Graphics International Corp. | Detection and control of resource congestion by a number of processors |
Non-Patent Citations (12)
Title |
---|
MARLAN, Appeal Brief, U.S. Appl. No. 10/631,988, Mar. 14, 2011, 24 pgs. |
MARLAN, Notice of Allowance, U.S. Appl. No. 10/631,988, Jan. 23, 2012, 9 pgs. |
MARLAN, Office Action, U.S. Appl. No. 10/631,988, Apr. 18, 2006, 25 pgs. |
MARLAN, Office Action, U.S. Appl. No. 10/631,988, Feb. 6, 2008, 19 pgs. |
MARLAN, Office Action, U.S. Appl. No. 10/631,988, Jul. 24, 2009, 23 pgs. |
MARLAN, Office Action, U.S. Appl. No. 10/631,988, Jun. 8, 2011, 5 pgs. |
MARLAN, Office Action, U.S. Appl. No. 10/631,988, Mar. 19, 2010, 23 pgs. |
MARLAN, Office Action, U.S. Appl. No. 10/631,988, Mar. 23, 2007, 19 pgs. |
MARLAN, Office Action, U.S. Appl. No. 10/631,988, Nov. 12, 2010, 24 pgs. |
MARLAN, Office Action, U.S. Appl. No. 10/631,988, Oct. 28, 2005, 22 pgs. |
MARLAN, Office Action, U.S. Appl. No. 10/631,988, Oct. 7, 2008, 18 pgs. |
Song, Enhancement of IEEE 802.11 Distributed Coordination Function with Exponential Increase Exponential Decrease Rackoff Algorithm, Apr. 25, 2003, 4 pgs. |
Also Published As
Publication number | Publication date |
---|---|
US20160248695A1 (en) | 2016-08-25 |
US8185703B2 (en) | 2012-05-22 |
US20120272002A1 (en) | 2012-10-25 |
US20050027948A1 (en) | 2005-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9271267B2 (en) | Detection and control of resource congestion by a number of processors | |
US7047322B1 (en) | System and method for performing conflict resolution and flow control in a multiprocessor system | |
US7386681B2 (en) | Reducing number of rejected snoop requests by extending time to respond to snoop request | |
US8131948B2 (en) | Snoop request arbitration in a data processing system | |
US5133074A (en) | Deadlock resolution with cache snooping | |
US7484046B2 (en) | Reducing number of rejected snoop requests by extending time to respond to snoop request | |
US8447905B2 (en) | Dynamic multi-level cache including resource access fairness scheme | |
KR920005834B1 (en) | Direct memory access controlling system | |
US5651130A (en) | Memory controller that dynamically predicts page misses | |
US8327082B2 (en) | Snoop request arbitration in a data processing system | |
US20060112238A1 (en) | Techniques for pushing data to a processor cache | |
CN116324745A (en) | Read option command and write option command | |
US8706972B2 (en) | Dynamic mode transitions for cache instructions | |
US6467032B1 (en) | Controlled reissue delay of memory requests to reduce shared memory address contention | |
US10599585B2 (en) | Least recently used-based hotness tracking mechanism enhancements for high performance caching | |
US10997075B2 (en) | Adaptively enabling and disabling snooping bus commands | |
US8996819B2 (en) | Performance optimization and dynamic resource reservation for guaranteed coherency updates in a multi-level cache hierarchy | |
US20020129210A1 (en) | Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers that uses dynamic hardware/software controls | |
US20020108021A1 (en) | High performance cache and method for operating same | |
CN116662219A (en) | Dynamic prefetching of data from a storage device | |
US5809534A (en) | Performing a write cycle to memory in a multi-processor system | |
US8930628B2 (en) | Managing in-line store throughput reduction | |
EP1096384B1 (en) | Bridge unit between a system bus and a local bus | |
US20110320694A1 (en) | Cached latency reduction utilizing early access to a shared pipeline | |
US20060184749A1 (en) | Reducing number of rejected snoop requests by extending time to respond to snoop request |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SILICON GRAPHICS, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MARLAN, GREGORY;YEAGER, KENNETH;SEDDIGHNEZHAD, MAHDI;AND OTHERS;REEL/FRAME:032890/0807 Effective date: 20030730 Owner name: SILICON GRAPHICS INTERNATIONAL CORP., CALIFORNIA Free format text: MERGER;ASSIGNOR:SGI INTERNATIONAL, INC.;REEL/FRAME:032891/0025 Effective date: 20120808 Owner name: SILICON GRAPHICS INTERNATIONAL, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SILICON GRAPHICS, INC.;REEL/FRAME:032890/0829 Effective date: 20090508 Owner name: SGI INTERNATIONAL, INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:SILICON GRAPHICS INTERNATIONAL, INC.;REEL/FRAME:032896/0554 Effective date: 20090513 |
|
AS | Assignment |
Owner name: MORGAN STANLEY SENIOR FUNDING, INC., NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:SILICON GRAPHICS INTERNATIONAL CORP.;REEL/FRAME:035200/0722 Effective date: 20150127 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: MORGAN STANLEY SENIOR FUNDING, INC., NEW YORK Free format text: SECURITY INTEREST;ASSIGNOR:SILICON GRAPHICS INTERNATIONAL CORP.;REEL/FRAME:038532/0574 Effective date: 20160505 |
|
AS | Assignment |
Owner name: SILICON GRAPHICS INTERNATIONAL CORP., CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC., AS AGENT;REEL/FRAME:040545/0362 Effective date: 20161101 |
|
AS | Assignment |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SILICON GRAPHICS INTERNATIONAL CORP.;REEL/FRAME:044128/0149 Effective date: 20170501 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY 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 |