IP Library Granted Patent US 8,279,885
Granted Patent B2
US 8,279,885 · App. 11/861,049 · Granted Oct 2, 2012

Lockless processing of command operations in multiprocessor systems

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,279,885
App. No.
11/861,049
Granted
Oct 2, 2012
Kind
B2
Abstract

A beltway mechanism that takes advantage of atomic locking mechanisms supported by certain classes of hardware processors to handle the tasks that require atomic access to data structures while also reducing the overhead associated with these atomic locking mechanisms. The beltway mechanisms described herein can be used to control access to software and hardware facilities in an efficient manner.

Claims (52)

1. An apparatus comprising

N processors, where N is greater than 1;

a work order module operative to provide work queue entries to the N processors, wherein the work queue entries correspond to respective tasks, and to provide, to a given processor of the N processors, exclusive access to one or more shared data structures for work queue entries including atomic tags;

a memory operative to store one or more instances of a beltway data structure, each instance of a beltway data structure comprising N circular buffers for corresponding ones of the N processors, wherein the N circular buffers each comprise a plurality of entries; the memory further operative to store processor-readable instructions for a beltway producer function and a beltway consumer process;

wherein the beltway producer function includes instructions operative to cause the N processors, when executing the beltway producer function, to

add entries to corresponding ones of the circular buffers of an identified instance of a beltway data structure;

conditionally submit work queue entries to the work order module including an atomic tag associated with the identified instance of the beltway data structure; and

wherein the beltway consumer process includes instructions operative to cause a processor of the N processors, responsive to a work queue entry identifying the beltway consumer process and an atomic tag corresponding to the instance of a beltway data structure, to:

identify the instance of the beltway data structure based on one or more attributes of the work queue entry;

read entries from the circular buffers of the identified instance of the beltway data structure; and

call a consumer function associated with the identified instance of the beltway data structure to process the read entries.

2. The apparatus of claim 1 wherein the work order module is operative to

maintain a queue of work entries, one or more of the work entries including an atomic tag; and

schedule work entries in the queue for the N processors such that only a single processor of the N processors is provided a work entry labeled with a given atomic tag.

3. The apparatus of claim 1 wherein submitting work queue entries to the work order module is conditioned on whether a previous work queue entry for a consumer process for the identified instance of the beltway data structure is currently maintained by the work order module.

4. The apparatus of claim 1 wherein the beltway consumer process further comprises instructions operative to cause a processor of the N processors to arbitrate among the circular buffers in a round robin arbitration scheme.

5. The apparatus of claim 4 wherein the beltway consumer process further comprises instructions operative to cause a processor of the N processors to read up to a limited number of entries in a given circular buffer before proceeding to a next circular buffer during the round robin arbitration scheme.

6. The apparatus of claim 1 wherein entries of the beltway data structure are associated with time stamps each corresponding to a time when a given entry is added, and wherein the beltway consumer process further comprises instructions operative to cause a processor of the N processors to select entries across the circular buffers of the beltway data structure based on the time stamps.

7. The apparatus of claim 1 further comprising an output port, and wherein the consumer function is operative to write data onto the output port.

8. The apparatus of claim 1 further comprising hardware timer logic, and wherein the consumer function is operative to access and send commands to the hardware tinier logic.

9. The apparatus of claim 1 further comprising hardware compression logic, and wherein the consumer function is operative to access and send commands to the hardware compression logic.

10. The apparatus of claim 1 wherein the consumer function is operative to exclusively access a first hardware resource.

11. The apparatus of claim 10 wherein the first hardware resource comprises one or more registers.

12. The apparatus of claim 1 wherein the consumer function is operative to exclusively access a plurality of hardware resources.

13. The apparatus of claim 1 further comprising one or more network interfaces; and wherein the memory is further operative to define a hierarchical partition configuration, the hierarchical partition configuration comprising a plurality of partitions, the memory further operative to buffer packets received at the one or more network interfaces;

wherein the N processors, to schedule packets for transmission according to the hierarchical partition configuration, are each operative to:

receive, from the work order module, an indication of a first work entry, wherein the first work entry is associated with a packet to be processed and includes a tag identifying a partition of the plurality of partitions,

forward the packet corresponding to the first work entry to a parent partition of the identified partition by modifying the first work entry to include a tag of the parent partition,

resubmit the first modified work entry to the work order module, and

call, if the partition associated with the tag is a root partition, the beltway producer function to add an entry to an instance of the beltway data structure associated with a network interface to schedule a packet for transmission from the network interface.

14. The apparatus according to claim 13 , wherein the plurality of processors are further operative to

add tokens to a token bucket associated with the partition associated with the tag based on a target rate associated with the partition and a last token update time;

conditionally forward the packet to the parent partition based on a size of the packet and a current number of tokens in the token bucket of the partition associated with the tag; and

deduct, responsive to forwarding the packet, tokens from the token bucket of the partition associated with the tag.

15. The apparatus according to claim 14 wherein the plurality of processors are further operative to

place the packet on a partition queue if a number of tokens in the token bucket of the partition associated with the tag is insufficient to transmit the packet; and

compute a delay time based on the target rate of the partition and the size of the packet;

call the beltway producer function with a command operative to set a timer for the delay time, wherein the timer, when triggered, is operative to return the work entry identifying the partition associated with the tag to the corresponding processor.

16. A method comprising

maintaining a queue of work queue entries in a work order module, one or more of the work queue entries including a tag, wherein the work order module is operative to schedule work queue entries in the queue for N processors, wherein N is greater than 1, such that only a single processor of the N processors is provided a work queue entry labeled with a given tag;

storing, in a memory, one or more instances of a beltway data structure, each instance of a beltway data structure comprising N circular buffers (rings) for corresponding ones of the N processors, wherein the N circular buffers each comprise a plurality of entries;

executing a beltway producer function operative to

add entries to corresponding ones of the circular buffers of an identified instance of a beltway data structure;

conditionally submit work queue entries to the work order module including a tag associated with the identified instance of the beltway data structure; and

executing, responsive to a work queue entry identifying a beltway consumer process and a tag corresponding to the instance of a beltway data structure, a beltway consumer process on a select processor of the N processors, the beltway consumer process operative to:

identify the instance of the beltway data structure based on one or more attributes of the work queue entry;

read entries from the circular buffers of the identified instance of the beltway data structure; and

call a consumer function associated with the identified instance of the beltway data structure to process the read entries.

17. The method of claim 16 wherein submitting work queue entries to the work order module is conditioned on whether a previous work queue entry for a consumer process for the identified instance of the beltway data structure is currently maintained by the work order module.

18. The method of claim 16 wherein the beltway consumer process is further operative to cause a processor of the N processors to arbitrate among the circular buffers in a round robin arbitration scheme.

19. The method of claim 18 wherein the beltway consumer process is further operative to cause a processor of the N processors to read up to a limited number of entries in a given circular buffer before proceeding to a next circular buffer during the round robin arbitration scheme.

20. The method of claim 16 wherein entries of the beltway data structure are associated with time stamps each corresponding to a time when a given entry is added, and wherein the beltway consumer process is further operative to cause a processor of the N processors to select entries across the circular buffers of the beltway data structure based on the time stamps.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: SYMANTEC CORPORATION
To: CA, INC.
Reel/Frame 051144/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2016
From: BLUE COAT SYSTEMS, INC.
To: SYMANTEC CORPORATION
Reel/Frame 039851/0044 →
RELEASE OF SECURITY INTEREST Recorded Aug 1, 2016
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 039516/0929 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 30740/0181 Recorded May 29, 2015
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 035797/0280 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 27727/0144 Recorded May 29, 2015
From: JEFFERIES FINANCE LLC
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 035798/0006 →
SECURITY INTEREST Recorded May 22, 2015
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC, AS THE COLLATERAL AGENT
Reel/Frame 035751/0348 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jul 3, 2013
From: BLUE COAT SYSTEMS, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 030740/0181 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL RECORDED AT R/F 027727/0178 Recorded Oct 16, 2012
From: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
To: BLUE COAT SYSTEMS, INC.
Reel/Frame 029140/0170 →