CA2517156A1 - System and method for dynamic ordering in a network processor - Google Patents

System and method for dynamic ordering in a network processor Download PDF

Info

Publication number
CA2517156A1
CA2517156A1 CA002517156A CA2517156A CA2517156A1 CA 2517156 A1 CA2517156 A1 CA 2517156A1 CA 002517156 A CA002517156 A CA 002517156A CA 2517156 A CA2517156 A CA 2517156A CA 2517156 A1 CA2517156 A1 CA 2517156A1
Authority
CA
Canada
Prior art keywords
thread
order
threads
order group
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CA002517156A
Other languages
French (fr)
Other versions
CA2517156C (en
Inventor
Kenneth H. Potter, Jr.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology, Inc.
Kenneth H. Potter, Jr.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cisco Technology, Inc., Kenneth H. Potter, Jr. filed Critical Cisco Technology, Inc.
Publication of CA2517156A1 publication Critical patent/CA2517156A1/en
Application granted granted Critical
Publication of CA2517156C publication Critical patent/CA2517156C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Abstract

A system and method maintains order among a plurality of threads in a multi-threaded processing system. The processing system which may be disposed at an intermediate network device, has a plurality of processors each supporting a plurality of threads. The ordering system includes a dispatcher that assigns work, such as the processing of received packets to free threads, an order manager that keeps track of the relative order of the threads, and a thread client associated with each thread for enforcing the determined order. Packets to be processed by the processing system are assigned to an initial order group by the order manager based on a selected attribute, and those packets sharing the same attribute value are assigned to the same order group. During processing, a thread may request reassignment to other order groups in response to other attributes of the packets. The order manager preferably manages the switching of threads among order groups and ensures that the threads within each order group process their packets in order.

Claims (24)

1. A method for maintaining order among a plurality of threads disposed at one or more processors, each thread executing an instruction sequence, the method com-prising the steps of:
assigning, in a particular order, a set of threads to an order group;
treating the first assigned thread as being, at least initially, at a head-of-line (HOL) for the order group;
assigning a separate sequence number to each thread of the set, each sequence number indicating the order in which the respective thread was assigned to the order group;
providing a modifiable current HOL sequence value that specifies which se-quence number is currently at the HOL of the order group; and suspending a given thread of the set from performing at least some of the given thread's instruction sequence until the given thread reaches the HOL of the order group as indicated by the modifiable HOL sequence value.
2. The method of claim 1 further comprising the step of modifying the HOL se-quence value, when the thread currently at the HOL of the order group completes its instruction sequence, so as to indicate the next thread in the particular order.
3. The method of claim 1 wherein the one or more processors are disposed at an intermediate network node of a computer network and the threads are configured to process network messages traversing the computer network.
4. The method of claim 3 wherein the set of threads assigned to the order group are each processing network messages that all share a common attribute.
5. The method of claim 4 wherein the intermediate network node has a plurality of interfaces for sending and re-ceiving network messages, and a first common attribute corresponds to the interface on which a set of network messages are received.
6. The method of claim 1 further comprising the step of permitting one or more threads of the set to perform at least some of their respective instruction sequences be-fore the one or more threads reach the HOL.
7. The method of claim 1 further comprising the step of switching a selected thread from a first order group to a second order group.
8. The method of claim 7 wherein the selected thread must be at the HOL for the first order group in order to be switched to the second order group.
9. The method of claim 8 further comprising the step of assigning the selected thread a new sequence number based on the order in which the selected thread was switched to the second order group.
10. The method of claim 1 further comprising the step of providing a thread cli-ent for each thread, wherein each thread communicates with its thread client through one or more primitives issued by the thread to the respective thread client, and the primitives include a "Wait HOL" primitive that causes the thread client to suspend the thread pending the thread reaching the HOL for its order group.
11. The method of claim 10 wherein the primitives further include an Exchange primitive that causes the thread client either to suspend the thread if the thread is not at the HOL for its order group or to switch the thread from a first order group to a second order group if the thread is at the HOL for its order group.
12. The method of claim 10 wherein the primitives further include a Release primitive that causes the thread client either (1) to suspend the thread if the thread is not at one of the HOL or near the HOL for its order group or (2) to have the thread re-moved from its order group if the thread is at the HOL or near HOL for its order group.
13. The method of claim 10 wherein the primitives further include a Free_Thread primitive that causes the thread client to make the thread available for work.
14. In an intermediate network node having a plurality of interfaces for sending and receiving network messages within a computer network, a forwarding engine con-figured to process network messages received at the intermediate network node, the forwarding engine comprising:
a plurality of threads for processing the received network messages;
a dispatcher for assigning at least a portion of the network messages to selected ones of the plurality of threads, wherein the dispatcher associates each network mes-sage with an order group;
an order manager in communicating relationship with the plurality of threads for tracking the relative order among threads associated with the same order group; and a thread client associated with each thread, the thread clients configured to en-sure that the threads process their respective network messages according to the threads' relative order within the order group.
15. The forwarding engine of claim 14 wherein the dispatcher associates all network messages that share an inter-dependency with the same order group.
16. The forwarding engine of claim 15 wherein the intermediate network node has a plurality of physical interfaces and a plu-rality of logical interfaces, and the inter-dependency is one of the physical interface and logical interface on which the network messages are received.
17. The forwarding engine of claim 14 wherein the network messages are one of packets, frames, and cells.
18. The forwarding engine of claim 14 wherein the threads are configured to issue requests to the order manager to change the order group with which the threads are associated as the threads process their respective network messages.
19. The forwarding engine of claim 18 wherein the order manager tracks which thread is at a head of the relative order;
a given thread is blocked from changing its order group until the given thread reaches the head of its current order group.
20. The forwarding engine of claim 14 wherein the order manager tracks which thread is at a head of the relative order;
the thread clients suspend the threads from performing at least some processing of the network messages until a thread is at the head of the relative order.
21. The forwarding engine of claim 19 wherein the threads perform at least some processing of the network messages before the threads reach the head of the rela-tive order.
22. The forwarding engine of claim 20 wherein the order manager comprises:
an order group table that is manipulated to indicate which thread is at the head of line for each order group; and a thread table that specifies where in the relative order each thread is located for its order group.
23. The forwarding engine of claim 22 wherein the order manager manipulates the order group table, as each thread reaches the head of line of its order group and completes its processing of the respective packet, so as to indicate that a next thread in the relative order has reached the head of line of the order group.
24. The forwarding engine of claim 22 wherein each order group is assigned a group identifier (ID) value; and the order manager further comprises a group ID table that maps group ID values to corresponding entries in the order group table for the respective order groups.
CA2517156A 2003-03-07 2004-02-23 System and method for dynamic ordering in a network processor Expired - Fee Related CA2517156C (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/383,901 US7039914B2 (en) 2003-03-07 2003-03-07 Message processing in network forwarding engine by tracking order of assigned thread in order group
US10/383,901 2003-03-07
PCT/US2004/005420 WO2004080149A2 (en) 2003-03-07 2004-02-23 System and method for dymanic ordering in a network processor

Publications (2)

Publication Number Publication Date
CA2517156A1 true CA2517156A1 (en) 2004-09-23
CA2517156C CA2517156C (en) 2011-05-24

Family

ID=32987276

Family Applications (1)

Application Number Title Priority Date Filing Date
CA2517156A Expired - Fee Related CA2517156C (en) 2003-03-07 2004-02-23 System and method for dynamic ordering in a network processor

Country Status (6)

Country Link
US (2) US7039914B2 (en)
EP (1) EP1602030B1 (en)
CN (1) CN100392602C (en)
AU (1) AU2004220640B2 (en)
CA (1) CA2517156C (en)
WO (1) WO2004080149A2 (en)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7961723B2 (en) * 2002-10-08 2011-06-14 Netlogic Microsystems, Inc. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US7334086B2 (en) 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US7984268B2 (en) 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US8478811B2 (en) 2002-10-08 2013-07-02 Netlogic Microsystems, Inc. Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US8015567B2 (en) 2002-10-08 2011-09-06 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US7627721B2 (en) 2002-10-08 2009-12-01 Rmi Corporation Advanced processor with cache coherency
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7346757B2 (en) * 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US9088474B2 (en) 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US7924828B2 (en) 2002-10-08 2011-04-12 Netlogic Microsystems, Inc. Advanced processor with mechanism for fast packet queuing operations
US8176298B2 (en) 2002-10-08 2012-05-08 Netlogic Microsystems, Inc. Multi-core multi-threaded processing systems with instruction reordering in an in-order pipeline
US7509378B2 (en) * 2003-03-11 2009-03-24 Bea Systems, Inc. System and method for message ordering in a message oriented network
CA2463228C (en) 2003-04-04 2012-06-26 Evertz Microsystems Ltd. Apparatus, systems and methods for packet based transmission of multiple data signals
US7379460B2 (en) * 2003-06-06 2008-05-27 Intel Corporation Packet processing system
US20050047439A1 (en) * 2003-08-26 2005-03-03 Madajczak Tomasz Bogdan System to process packets according to an assigned sequence number
US7672302B2 (en) * 2003-11-21 2010-03-02 Samsung Electronics Co., Ltd. Router using switching-before-routing packet processing and method of operation
US7770179B1 (en) 2004-01-30 2010-08-03 Xilinx, Inc. Method and apparatus for multithreading on a programmable logic device
US7552042B1 (en) 2004-01-30 2009-06-23 Xilinx, Inc. Method for message processing on a programmable logic device
US7823162B1 (en) 2004-01-30 2010-10-26 Xilinx, Inc. Thread circuits and a broadcast channel in programmable logic
US7185309B1 (en) 2004-01-30 2007-02-27 Xilinx, Inc. Method and apparatus for application-specific programmable memory architecture and interconnection network on a chip
US7719540B2 (en) * 2004-03-31 2010-05-18 Intel Corporation Render-cache controller for multithreading, multi-core graphics processor
US20060041705A1 (en) * 2004-08-20 2006-02-23 International Business Machines Corporation System and method for arbitration between shared peripheral core devices in system on chip architectures
US7913206B1 (en) * 2004-09-16 2011-03-22 Cadence Design Systems, Inc. Method and mechanism for performing partitioning of DRC operations
US8250131B1 (en) * 2004-12-08 2012-08-21 Cadence Design Systems, Inc. Method and apparatus for managing a distributed computing environment
US7844973B1 (en) * 2004-12-09 2010-11-30 Oracle America, Inc. Methods and apparatus providing non-blocking access to a resource
US7564847B2 (en) * 2004-12-13 2009-07-21 Intel Corporation Flow assignment
US7577438B2 (en) * 2005-04-25 2009-08-18 Interdigital Technology Corporation Method and system for efficient addressing and power savings in wireless systems
US7904852B1 (en) 2005-09-12 2011-03-08 Cadence Design Systems, Inc. Method and system for implementing parallel processing of electronic design automation tools
US10554534B1 (en) * 2005-09-23 2020-02-04 Chicago Mercantile Exchange Inc. Clearing message broker system messaging gateway
US7907614B2 (en) * 2005-11-11 2011-03-15 Broadcom Corporation Fast block acknowledgment generation in a wireless environment
US7809009B2 (en) * 2006-02-21 2010-10-05 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US7751336B2 (en) * 2006-06-08 2010-07-06 Cisco Technology, Inc. Technique for efficiently avoiding transient routing disturbances in link state routing protocols with link state packet fragmentation
US8041929B2 (en) * 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
US20070294693A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
US8448096B1 (en) 2006-06-30 2013-05-21 Cadence Design Systems, Inc. Method and system for parallel processing of IC design layouts
US8639655B2 (en) * 2006-08-31 2014-01-28 Red Hat, Inc. Dedicating threads to classes of LDAP service
US7734658B2 (en) * 2006-08-31 2010-06-08 Red Hat, Inc. Priority queue to determine order of service for LDAP requests
US8010966B2 (en) * 2006-09-27 2011-08-30 Cisco Technology, Inc. Multi-threaded processing using path locks
WO2008101756A1 (en) * 2007-02-20 2008-08-28 International Business Machines Corporation Method and system for concurrent message processing
US8327363B2 (en) * 2007-07-24 2012-12-04 Microsoft Corporation Application compatibility in multi-core systems
US8544014B2 (en) * 2007-07-24 2013-09-24 Microsoft Corporation Scheduling threads in multi-core systems
US8379647B1 (en) * 2007-10-23 2013-02-19 Juniper Networks, Inc. Sequencing packets from multiple threads
TWI371695B (en) * 2007-12-11 2012-09-01 Inst Information Industry A priority-based data message publish method and system according to a data message chain
US8381226B2 (en) * 2008-02-07 2013-02-19 Nec Laboratories America, Inc. System and method for monotonic partial order reduction
US9596324B2 (en) 2008-02-08 2017-03-14 Broadcom Corporation System and method for parsing and allocating a plurality of packets to processor core threads
JP5081847B2 (en) * 2009-02-20 2012-11-28 株式会社日立製作所 Packet processing apparatus and packet processing method using multiprocessor
FR2942556B1 (en) * 2009-02-24 2011-03-25 Commissariat Energie Atomique ALLOCATION AND CONTROL UNIT
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8935483B2 (en) * 2009-04-27 2015-01-13 Lsi Corporation Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor
US8514874B2 (en) * 2010-03-12 2013-08-20 Lsi Corporation Thread synchronization in a multi-thread network communications processor architecture
US8505013B2 (en) * 2010-03-12 2013-08-06 Lsi Corporation Reducing data read latency in a network communications processor architecture
US9444757B2 (en) 2009-04-27 2016-09-13 Intel Corporation Dynamic configuration of processing modules in a network communications processor architecture
US8537832B2 (en) * 2010-03-12 2013-09-17 Lsi Corporation Exception detection and thread rescheduling in a multi-core, multi-thread network processor
US8868889B2 (en) 2010-03-12 2014-10-21 Lsi Corporation Instruction breakpoints in a multi-core, multi-thread network communications processor architecture
US8910171B2 (en) * 2009-04-27 2014-12-09 Lsi Corporation Thread synchronization in a multi-thread network communications processor architecture
JP5452125B2 (en) * 2009-08-11 2014-03-26 クラリオン株式会社 Data processing apparatus and data processing method
TWI512504B (en) * 2009-11-16 2015-12-11 Inst Information Industry Candidate key retrieving apparatus, candidate key retrieving method and computer program product thereof
US8537831B2 (en) * 2010-02-17 2013-09-17 Alcatel Lucent Method and system for common group action filtering in telecom network environments
US8593960B2 (en) 2010-06-30 2013-11-26 Intel Corporation Providing a bufferless transport method for multi-dimensional mesh topology
US8428076B2 (en) * 2010-09-13 2013-04-23 Tata Consultancy Services Limited System and method for priority scheduling of plurality of message types with serialization constraints and dynamic class switching
US8756613B2 (en) 2011-09-23 2014-06-17 International Business Machines Corporation Scalable, parallel processing of messages while enforcing custom sequencing criteria
US8811401B2 (en) * 2012-06-21 2014-08-19 Breakingpoint Systems, Inc. Binding of network flows to process threads
US8929379B2 (en) 2012-06-21 2015-01-06 Breakingpoint Systems, Inc. High-speed CLD-based internal packet routing
US9158595B2 (en) * 2012-10-25 2015-10-13 Nvidia Corporation Hardware scheduling of ordered critical code sections
US9792292B1 (en) * 2012-11-02 2017-10-17 National Technology & Engineering Solutions Of Sandia, Llc Method and system for a network mapping service
US9135087B1 (en) * 2012-12-27 2015-09-15 Altera Corporation Workgroup handling in pipelined circuits
US9207978B2 (en) * 2013-10-09 2015-12-08 Wipro Limited Method and system for efficient execution of ordered and unordered tasks in multi-threaded and networked computing
US9437299B2 (en) * 2014-03-31 2016-09-06 Freescale Semiconductor, Inc. Systems and methods for order scope transitions using cam
EP3776238A1 (en) * 2018-03-31 2021-02-17 Micron Technology, Inc. Execution control of a multi-threaded, self-scheduling reconfigurable computing fabric

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630128A (en) * 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
JP3193240B2 (en) * 1994-09-08 2001-07-30 株式会社東芝 Image processing device
JP3231571B2 (en) * 1994-12-20 2001-11-26 日本電気株式会社 Ordered multi-thread execution method and its execution device
US5870567A (en) 1996-12-31 1999-02-09 Compaq Computer Corporation Delayed transaction protocol for computer system bus
US5835741A (en) 1996-12-31 1998-11-10 Compaq Computer Corporation Bus-to-bus bridge in computer system, with fast burst memory range
US6205465B1 (en) 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6505228B1 (en) 1998-07-22 2003-01-07 Cisco Technology, Inc. Dynamic determination of execution sequence
CA2290265A1 (en) 1999-11-24 2001-05-24 Alberto Leon-Garcia High-speed programmable packet scheduler and buffer manager
US6484224B1 (en) 1999-11-29 2002-11-19 Cisco Technology Inc. Multi-interface symmetric multiprocessor
US6625654B1 (en) 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6804815B1 (en) 2000-09-18 2004-10-12 Cisco Technology, Inc. Sequence control mechanism for enabling out of order context processing
US6834385B2 (en) * 2001-01-04 2004-12-21 International Business Machines Corporation System and method for utilizing dispatch queues in a multiprocessor data processing system
US6757768B1 (en) 2001-05-17 2004-06-29 Cisco Technology, Inc. Apparatus and technique for maintaining order among requests issued over an external bus of an intermediate network node
US6832279B1 (en) 2001-05-17 2004-12-14 Cisco Systems, Inc. Apparatus and technique for maintaining order among requests directed to a same address on an external bus of an intermediate network node
US6886041B2 (en) * 2001-10-05 2005-04-26 Bea Systems, Inc. System for application server messaging with multiple dispatch pools
US6836808B2 (en) * 2002-02-25 2004-12-28 International Business Machines Corporation Pipelined packet processing
US7379460B2 (en) * 2003-06-06 2008-05-27 Intel Corporation Packet processing system
US20050047439A1 (en) * 2003-08-26 2005-03-03 Madajczak Tomasz Bogdan System to process packets according to an assigned sequence number

Also Published As

Publication number Publication date
CN1759379A (en) 2006-04-12
US20040187112A1 (en) 2004-09-23
EP1602030B1 (en) 2018-09-12
WO2004080149A2 (en) 2004-09-23
US7287255B2 (en) 2007-10-23
CN100392602C (en) 2008-06-04
AU2004220640B2 (en) 2010-07-08
US7039914B2 (en) 2006-05-02
EP1602030A2 (en) 2005-12-07
WO2004080149A3 (en) 2005-07-28
CA2517156C (en) 2011-05-24
US20060200825A1 (en) 2006-09-07
AU2004220640A1 (en) 2004-09-23

Similar Documents

Publication Publication Date Title
CA2517156A1 (en) System and method for dynamic ordering in a network processor
US9037719B2 (en) Hypervisor level distributed load-balancing
US8578053B2 (en) NAS load balancing system
CN106656846B (en) The construction method of cooperation layer in a kind of SDN architectural framework
CN107079046A (en) For providing system and method for the subnet through pipe (SA) query caching for dynamic cloud
JPH01291596A (en) Incoming call distribution control system
JP2009301581A (en) Method of assigning task, data processing system, client data processing node, and machine-readable storage medium
CN1826771A (en) High availability virtual switch
EP0362105A3 (en) Method for processing program threads of a distributed application program by a host computer and an intelligent work station in an sna lu 6.2 network environment
JPH05114905A (en) Message processing filtering using single address and protocol table bridge
CN112398902B (en) High availability load balancing method, system and computer readable storage medium
CN103546315B (en) The standby system of a kind of Dynamic Host Configuration Protocol server, method and apparatus
CN113726636A (en) Data forwarding method and system of software forwarding equipment and electronic equipment
CN106970827A (en) Information processing method, information processor, electronic equipment
CN104684068B (en) The method and apparatus that a kind of data synchronize
CN115766729A (en) Data processing method for four-layer load balancing and related device
CN114827677A (en) Artificial intelligence analysis load balancing method and device
CN114020417A (en) Virtual load balancing system and working method thereof
JPH1027146A (en) Communication processor and its method
CN109698845A (en) Method, server, unloading card and the storage medium of data transmission
CN113254160A (en) IO resource request method and device
JPH09224066A (en) Communication protocol parallel processor
CN106534073B (en) Method and device for acquiring streaming media information
CN105264858A (en) Session processing method and apparatus
CN114286127B (en) Distributed artificial intelligence analysis method and device

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed

Effective date: 20180223