Memory mapping in a processor having multiple programmable units

Information

  • Patent Grant
  • 9830284
  • Patent Number
    9,830,284
  • Date Filed
    Monday, July 27, 2015
    8 years ago
  • Date Issued
    Tuesday, November 28, 2017
    6 years ago
Abstract
The disclosure includes, in general, among other aspects, an apparatus having multiple programmable units integrated within a processor. The apparatus has circuitry to map addresses in a single address space to resources within the multiple programmable units where the single address space includes addresses for different ones of the resources in different ones of the multiple programmable units and where there is a one-to-one correspondence between respective addresses in the single address space and resources within the multiple programmable units.
Description
BACKGROUND OF THE INVENTION

This invention relates to parallel processors.


Parallel processing is an efficient form of information processing of concurrent events in a computing process. Parallel processing demands concurrent execution of many programs in a computer, in contrast to sequential processing. In the context of a parallel processor, parallelism involves doing more than one function at the same time. Unlike a serial paradigm in which all tasks are performed sequentially at a single station or a pipelined machine where tasks are performed at specialized stations, with parallel processing, multiple stations are provided with each station capable of performing all tasks. That is, in general, all or some of the stations work simultaneously and independently on the same or common elements of a problem. Certain problems are suitable for solution by applying parallel processing.


SUMMARY OF THE INVENTION

The apparatus includes circuitry to map addresses in a single address space to resources within the multiple programmable units where the single address space includes addresses for different ones of the resources in different ones of the multiple programmable units and where there is a one-to-one correspondence between respective addresses in the single address space and resources within the multiple programmable units. The apparatus can provide data access to a resource within a first of the multiple programmable units to a second one of the multiple programmable units in response to a data access request of the second one of the multiple programmable units that specifies an address within the single address space.


Various features and advantages will be readily apparent from the following detailed description, the drawings, and the claims.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram of a communication system employing a hardware-based multithreaded processor.



FIG. 2 is a block diagram of a micro-engine functional unit employed in the multithreaded processor of FIG. 1.



FIGS. 3A-3C are block diagrams_illustrating interface units used for converting CPU commands directed to the I/O memory space address of micro-engines or a bus interface unit.



FIG. 4 illustrates an exemplary address space map for the CPU.



FIG. 5 is a flow chart illustrating a method of writing data from the CPU to a destination in a first-in-first-out (FIFO) bus interface.



FIG. 6 is a flow chart illustrating a method of writing data from the CPU to a register in one of the micro-engines.



FIG. 7 is a flow chart illustrating a method of the CPU reading data from a destination in the FIFO bus interface.



FIG. 8 is a flow chart illustrating a method of the CPU reading data from a register in one of the micro-engines.





DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring to FIG. 1, a communication system 10 includes a parallel, hardware-based multithreaded processor 12. The hardware-based multithreaded processor 12 is coupled to a bus such as a Peripheral Component Interconnect (PCI) bus 14, a memory system 16 and a second bus 18. The system 10 is especially suited for tasks that can be broken into parallel sub-tasks or functions. Specifically, multithreaded processor 12 is useful for tasks that are bandwidth oriented rather than latency oriented. The multithreaded processor 12 has multiple micro-coded processing engines (micro-engines) 22 each with multiple hardware controlled threads that can be simultaneously active and can independently work on a task.


The multithreaded processor 12 includes a central processing unit (CPU) 20 that assists in loading micro-code control for other resources of the multithreaded processor 12 and performs other general purpose computer-type functions such as handling protocols, exceptions, extra support for packet processing where the micro-engines pass the packets off for more detailed processing such as in boundary conditions. The CPU 20 can be implemented, for example, as a general purpose processor. In one embodiment, the CPU 20 is a Strong Arm® (Arm is a trademark of ARM Limited, United Kingdom) based architecture. The CPU 20 has an operating system through which the CPU can call functions to operate on the micro-engines 22a-22f. The CPU 20 can use any supported operating system and preferably uses a real time operating system. For the CPU implemented as a Strong Arm architecture, operating systems such as, MicrosoftNT real-time, VXWorks and uCUS, a freeware operating system available over the Internet, can be used.


The central processing unit (CPU) 20 includes a processor that uses memory-mapped input-output (I/O) space. For example, in one implementation, the CPU 20 includes a reduced instruction set computer (RISC) engine 50 (FIG. 1) that can be implemented in a five-stage pipeline that performs a single cycle shift of one operand or two operands in a single cycle and provides multiplication support and 32-bit barrel shift support. The RISC engine 50 can have a standard Strong Arm® architecture but it is implemented with a five-stage pipeline for performance reasons. The CPU 20 also includes a 16-kilobyte instruction cache 52, an 8-kilobyte data cache 54 and a pre-fetch stream buffer 56. The CPU 20 performs arithmetic operations in parallel with memory write operations and instruction fetches. The CPU 20 interfaces with other functional units via the 32-bit bi-directional ASB bus 32.


The memory system 16 includes a Synchronous Dynamic Random Access Memory (SDRAM) controller 26a and a Synchronous Random Access Memory (SRAM) controller 26b. SDRAM memory 16a and SDRAM controller 26a are typically used for processing large volumes of data, for example, processing network payloads from network packets. SRAM memory 16b and SRAM controller 26b are used in a networking implementation for low latency, fast access tasks, for example, accessing look-up tables, memory for the CPU 20, and so forth.


The CPU 20 is able to access the shared resources. For example, the CPU 20 has a direct communication to the SDRAM controller 26a, to the bus interface 24 and to the SRAM controller 26b via bus 32.


Advantages of hardware multithreading can be explained by SRAM or SDRAM memory accesses. As an example, an SRAM access requested by a Thread_0, from a micro-engine 22 will cause the SRAM controller 26b to initiate an access to the SRAM memory 16b. The SRAM controller controls arbitration for the SRAM bus, accesses the SRAM 16b, fetches the data from the SRAM 16b, and returns data to a requesting micro-engine 22a-22b. During an SRAM access, if the micro-engine, for example micro-engine 22a, had only a single thread that could operate, that micro-engine would be dormant until data was returned from the SRAM. By employing hardware context swapping within each of the micro-engines 22a-22f, the hardware context swapping enables other contexts with unique program counters to execute in that same micro-engine. Thus, another thread, for example Thread_1, can function while the first thread Thread_0 is awaiting the read data to return. During execution, Thread_1 may access the SDRAM memory 16a. While Thread_1 operates on the SDRAM unit, and Thread_0 is operating on the SRAM unit, a new thread, for example Thread_2, can now operate in the micro-engine 22a. Thread_2 can operate until it needs to access memory or perform some other long latency operation, such as making an access to a bus interface. Therefore, simultaneously, the processor 12 can have a bus operation, SRAM operation and SDRAM operation all being completed or operated upon by one micro-engine 22a and have one more thread available to process more work in the data path.


An exemplary application for the hardware-based multithreaded processor 12 is as a network processor. As a network processor, the multithreaded processor 12 serves as an interface to network devices such as a media access controller (MAC) device, for example, a 10/100BaseT Octal MAC 13a or a Gigabit Ethernet device 13b. In general, as a network processor, the multithreaded processor 12 can interface to any type of communication device or interface that receives or sends large amounts of data. When functioning in a networking application, the communication system 10 can receive multiple network packets from the devices 13a, 13b and process those packets in a parallel manner. With the hardware-based multithreaded processor 12, each network packet can be independently processed.


The processor 12 also can be used as a print engine for a postscript processor, as a processor for a storage subsystem, for example, RAID disk storage, or as a matching engine. In the securities industry, for example, the advent of electronic trading requires the use of electronic matching engines to match orders between buyers and sellers. These and other parallel types of tasks can be accomplished on the system 10.


The processor 12 includes a bus interface 28 that couples the processor to the second bus 18. The bus interface 28 can couple the processor 12, for example, to a first-in-first-out (FIFO) bus (FBUS) 18. The FBUS interface 28 is responsible for controlling the interface between the processor 12 and the 64-bit wide FBUS 18.


The processor 12 also includes a Peripheral Component Interconnect (PCI) bus interface 24 that can couple other system components that reside on the PCI 14 bus to the processor 12. The PCI bus interface 24 provides a high-speed data path 24a to the memory 16. Data can be moved through that path quickly from the SDRAM 16a through the PCI bus 14, via direct memory access (DMA) transfers.


Each of the functional units is coupled to one or more internal buses. The internal buses can be dual, 32-bit buses, in other words, one bus for read operations and one bus for write operations. The multithreaded processor 12 is arranged such that the sum of the bandwidths of the internal buses in the processor 12 exceeds the bandwidth of external buses coupled to the processor 12. The processor 12 includes an internal core processor bus 32, for example, an ASB bus (Advanced System Bus) that couples the CPU 20 to the memory controllers 26a, 26b and to an ASB translator 30 described below. The ASB bus 32 is a subset of the AMBA bus that is used with the processor core. The processor 12 also includes a private bus 34 that couples the micro-engine units 22 to the SRAM controller 26b, the translator 30 and the FBUS interface 28. A memory bus 38 couples the memory controllers 26a, 26b to the bus interfaces 24, 28 and memory system 16 including flash-ROM 16c used for boot operations and the like.


Micro-engines:


Each micro-engine 22a-22f maintains program counters in hardware and has states associated with the program counters. Corresponding sets of threads can be simultaneously active on each of the micro-engines 22a-22f while only one is actually operating at any one time.


In one implementation, there are six micro-engines 22a-22f each of which is capable of processing four hardware threads. The micro-engines 22a-22f operate with shared resources including the memory system 16 and bus interfaces 24 and 28.


Referring to FIG. 2, an exemplary one of the micro-engines, such as micro-engine 22f, includes a control store 70 that, in one implementation, includes a random access memory (RAM) of 1,024 32-bit words. The RAM stores a micro-program that is loadable by the CPU 20. The micro-engine 22f also includes controller logic 72 that has an instruction decoder 73 and program counter (PC) units 72a-72d maintained in hardware. The micro-engine 22f includes context event switching logic 74 that receives messages from the shared resources. The messages provide information on whether a requested function has completed. The context event logic 74 includes arbitration for the four threads.


The micro-engine 22f includes an execution box data path 76 that has an arithmetic logic unit 76a and a general purpose register set 76b. The arithmetic logic unit 76a performs arithmetic and logical functions as well as shift functions. The register set 76b has a relatively large number of general purpose registers that are relatively and absolutely addressable.


The micro-engine 22f also includes a write transfer register stack 78 and a read transfer register stack 80 that are relatively and absolutely addressable. Write-data to a resource is located in the write transfer register stack 78. Similarly, the read register stack 80 is used for return data from a shared resource. Subsequent to or concurrent with data arrival, an event signal from the respective shared resource is provided to the context event switching logic 74 which alerts the thread that the data is available or has been sent.


Data functions are distributed among the micro-engines 22. Connectivity to the SRAM 26a, SDRAM 26b and FBUS interface 28 is through command requests. Command requests include memory requests FBUS requests. For example, a command request can move data from a register located in a micro-engine 22 to a shared resource, for example, an SDRAM location, SRAM location, flash memory or a MAC address. The commands are sent out to each of the functional units and the shared resources. However, the shared resources do not need to maintain local buffering of the data. Rather, the shared resources access distributed data located inside of the micro-engines. This enables the micro-engines 22a-22f to have local access to data rather than arbitrating for access on a bus and risk contention for the bus. With this feature there is a 0 cycle stall for waiting for data internal to the micro-engines 22a-22f.


FBUS Interface (FBI)


Referring to FIGS. 3A-3C, the FBUS interface 28 contains a transmit FIFO 102, a receive FIFO 104, a HASH unit 106 and control and status registers 108. The FBUS interface 28 also includes a scratchpad memory 110.


The FBUS interface 28 has a push engine 120 for pushing data into the transfer registers 78, 80 during the cycles when the SRAM is not using the SRAM data bus. The FBUS interface 28 also includes a pull engine 122 for retrieving data from the transfer registers 78, 80 in the micro-engines 22. The engines 120, 122 are implemented within the FBUS interface control logic.


In general, data transfers between the FBUS interface 28 and the micro-engines 22 are accomplished over the bus 34 via the transfer registers 78, 80 in the micro-engines and the push and pull engines 120, 122 in the FBUS interface 28. As previously mentioned, in some implementations, the bus 34 includes two data buses each of which is unidirectional. One bus (Sbus_pull_data) 34A is used for transferring data into the FBUS interface 28 and another bus (Sbus_push_data) 34B is used for returning data to the micro-engines 22. The buses 34A, 34B use control signals that provide read/write control to the appropriate transfer registers 78, 80 in one of the micro-engines 22.


A global command arbiter 60 enables commands from the micro-engines 22 to be driven onto a command bus 34C. The various units in the FBUS interface 28 communicate with the micro-engines 22 through time-multiplexed access to the bus 34. A command from a micro-engine 22 involving the FBUS interface 28 is loaded into a one of several queues: a pull command queue 124, a hash command queue 126 or a push command queue 128. Commands in the pull and hash queues 124, 126 then can be passed to the pull engine 120 via a multiplexer 130. Similarly, commands in the push queue 128 can be passed to the push engine 132 via a multiplexer 132.


References from the CPU 20 to the registers 78, 80 in the micro-engines 22 as well as to the registers 108 or scratchpad 110 in the FBUS interface 28 are mapped in the input/output (I/O) space of the CPU. An exemplary mapping of the I/O space of the CPU 20 is illustrated in FIG. 4.


Translation Unit


Still referring to FIGS. 3A-3C, the translation unit 30 converts address space requests from the CPU 20 into commands that simulate operations between the micro-engines 22 and the FBUS interface unit 28 with the core processor bus 32 acting as either the source or destination of the data. For example, the translation unit 30 performs address translations between micro-engine transfer register locations and CPU addresses so that the CPU 20 can access registers belonging to the micro-engines 22. READ and WRITE operations from the core processor bus 32 to the micro-engines 22 appear to the micro-engines like operations from the FBUS interface 28.


The translation unit 30 also performs address translations between FBUS interface register locations and CPU addresses so that the CPU 20 can access registers in the FBUS interface 28. Similarly, the translation unit 30 performs address translations between the FBUS scratchpad location and a corresponding CPU address so that the CPU 20 can access the scratchpad 110. When the CPU 20 performs a READ or WRITE operation with respect to a destination in the FBUS interface 28, the translation unit 30 appears to the FBUS interface as simply another micro-engine 22 with one read transfer register and one write transfer register.


In general, the translation unit 30 maps the CPU address and READ/WRITE signal into a command for the pull engine 120 or the push engine 122. The translation unit 30 contains hardwired sequencing logic 90 and registers 92 that respond to control signals from the pull and push engines to supply or receive the targeted data. In other implementations, the translation unit 30 can include a programmable logic array (PLA). Although the translation unit 30 can physically reside in the FBUS interface 28, it is logically distinct.


Referring to FIG. 5, to initiate a WRITE operation from the CPU 20 to a particular destination in the FBUS interface 28, such as a control and status register 108 or the scratchpad 110, the CPU sends 200 a WRITE command to the address space of the particular register or the scratchpad. The translation unit 30 latches the address and command type from the bus 32 and translates 202 the address and the WRITE command to a corresponding command in a format that simulates the format used by the pull engine 120. A latched register in the translation unit 30 simulates a source output transfer register in one of the micro-engines 22. The translation unit 30 uses a sideband command bus 134 to pass 204 the translated command to a command interface 140 for the pull engine 120. The command interface 140 includes the multiplexer 130 and an arbiter 142 that determines the priority in which the various commands from the queues 124, 126 and the bus 134 are forwarded to the pull engine 120. In general, commands from the translation unit 30 are given priority over other commands in the queues 124, 126.


The command interface 140 passes 206 the translated WRITE command to the pull engine 120, which executes 208 the command. The pull engine 120 asserts 210 a control signal (wr_to_pull_data) that is sent to the translation unit 30 via a control bus 136. The control signal (wr_to_pull_data) serves to instruct the translation unit 30 to promote 212 the WRITE data onto the Sbus_pull_data bus 34A. Once the pull engine 120 has pulled the WRITE data from the translation unit 30, it promotes 214 the data to the FBUS interface destination indicated by the translated WRITE command.


Referring to FIG. 6, to initiate a WRITE operation from the CPU 20 to a particular register 76b, 78, 80, in one of the micro-engines 22, the CPU sends 220 a WRITE command to the address space of the particular register. The translation unit 30 latches 222 the address and command type from the bus 32 and translates the address and the WRITE command to a corresponding command in a format recognized by the push engine 122. In other words, a push command is simulated with a latched register in the translation unit 30 serving as a register 108 (or scratchpad 110) in the FBUS interface 28. The translation unit 30 uses the sideband command bus 134 to pass 224 the translated command to a command interface 144 for the push engine 122. The command interface 144 includes the multiplexer 132 and an arbiter 146 that determines the priority in which the various commands from the queue 128 and the bus 134 are forwarded to the push engine 122. In general, commands from the translation unit 30 are given priority over commands in the queue 128.


The command interface 144 passes 226 the translated command to the push engine 122 which executes 228 the command. The push engine 122 asserts 230 a control signal (wr_to_push_data) that is sent to the translation unit 30 via the control bus 136 (step 230). The control signal (wr_to_push_data) serves to instruct the translation unit 30 to promote the WRITE data onto the Sbus_push_data bus 34B. At substantially the same time, the push engine 122 asserts 232 address signals on an address bus (Sbus_push_addr) 34C to enable the micro-engine 22 specified by the original WRITE command to accept the data on the Sbus_push_data bus 34B.


Referring to FIG. 7, to initiate a READ operation with respect to a particular destination in the FBUS interface 28, such as a control and status register 108 or the scratchpad 110, the CPU 20 sends 240 a READ command to the address space of the particular FBUS interface destination. The translation unit 30 latches 242 the address and command type from the bus 32 and translates the address and READ command to a corresponding command in a format that simulates the format recognized by the push engine 122. A push command is simulated with a latched register in the translation unit 30 bus 32 serving as the destination input transfer register. The translation unit 30 uses the sideband command bus 134 to pass 244 the translated command to the command interface 144 which passes the translated command to the push engine. As previously mentioned, commands from the translation unit 30 are given priority by the arbiter 146 over commands in the queue 128.


The push engine 122 executes 246 the READ command to place the data from the FBUS interface destination that was specified in the READ command onto the Sbus-Push_data bus 34B. At substantially the same time, the push engine 122 asserts 248 a control signal (rd_from_push_data) on the bus 136. The control signal (rd_from_push_data) serves to instruct the translation unit 30 to promote 250 the data from the bus 34B to the core processor bus 32 so that the data can be received by the CPU 20.


Referring to FIG. 8, to initiate a READ operation with respect to a particular register 76b, 78, 80 in one of the micro-engines 22, the CPU 20 sends 260 a READ command to the address space of the particular register. The translation unit 30 latches 262 the address and command type from the bus 23 and translates the address and the READ command to a corresponding command in a format recognized by the pull engine 120. In other words, a pull command is simulated with a latched register in the translation unit 30 serving as the FBUS interface destination register. The translation unit 30 uses the sideband command bus 134 to pass 264 the translated command to the command interface 140. As previously explained, the arbiter 142 gives priority to commands from the translation unit 30 over commands in the queues 124, 126.


The command interface 140 passes 266 the translated READ command to the pull engine 120 that executes 268 the command so that the data from the micro-engine register specified in the READ command is placed on the Sbus_pull_data bus 34A. At substantially the same time, the pull engine 120 asserts 270 a control signal (rd_from_pull_data) which is sent to the translation unit 30 via the control bus 136. The control signal (rd_from_pull_data) instructs the translation unit 30 to promote 272 the data from the bus 34A to the core processor bus 32 so that the data can be received by the CPU 20.


The address and command conversions performed by the translation unit 30 allow the CPU 20 to transfer data to and from registers in the micro-engines 22 and the FBUS interface 28 using existing data buses (i.e., the bus 34) and existing control logic (i.e., the push and pull engines 120, 122). The complexity of additional control logic as well as additional logic to arbitrate between data requests from the various sources can be avoided.


Other implementations are within the scope of the following claims.

Claims
  • 1. A apparatus comprising: a reduced instruction set computer (RISC) processor coupled to a first bus;a multithreaded processor coupled to a second bus; andtranslation logic coupled to the first bus and the second bus, the translation logic to translate a command of the RISC processor to access memory mapped registers of the multithreaded processor, wherein the translation logic comprises logic to convert a read or write command in a first format to a corresponding read or write command in a second format to enable the RISC processor to transfer data to and from the memory mapped registers of the multithreaded processor.
  • 2. The apparatus of claim 1, further comprising: a synchronous dynamic random access memory (SDRAM) controller to couple to an SDRAM; anda synchronous random access memory (SRAM) controller to couple to an SRAM.
  • 3. The apparatus of claim 1, wherein the multithreaded processor comprises: controller logic including an instruction decoder and program counter units,an arithmetic logic unit, anda general purpose register set.
  • 4. The apparatus of claim 1, wherein the first bus is an internal core processor bus.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No. 14/286,055, entitled “MEMORY MAPPING IN A PROCESSOR HAVING MULTIPLE PROGRAMMABLE UNITS” filed May 23, 2014 which is a continuation of U.S. application Ser. No. 10/780,330, entitled “MEMORY MAPPING IN A PROCESSOR HAVING MULTIPLE PROGRAMMABLE UNITS” filed Feb. 17, 2004 now patented as U.S. Pat. No. 8,738,886 issued on May 27, 2014 which is a continuation of U.S. application Ser. No. 09/743,271, entitled “MAPPING REQUESTS FROM A PROCESSING UNIT THAT USES MEMORY-MAPPED INPUT-OUTPUT SPACE” filed Dec. 27, 1999 now patented as U.S. Pat. No. 6,694,380 issued on Feb. 17, 2004. This application claims the benefit to the Ser. No. 09/743,271 application via the co-pending Ser. No. 10/780,330 application.

US Referenced Citations (417)
Number Name Date Kind
3373408 Ling Mar 1968 A
3478322 Evans Nov 1969 A
3623001 Kleist et al. Nov 1971 A
3678467 Nussbaum Jul 1972 A
3736566 Anderson et al. May 1973 A
3792441 Wymore et al. Feb 1974 A
3889243 Drimak Jun 1975 A
3940745 Sajeva Feb 1976 A
4016548 Law et al. Apr 1977 A
4032899 Jenny et al. Jun 1977 A
4075691 Davis et al. Feb 1978 A
4130890 Adam Dec 1978 A
4400770 Chan et al. Aug 1983 A
4514807 Nogi Apr 1985 A
4523272 Fukunaga et al. Jun 1985 A
4658351 Teng Apr 1987 A
4709347 Kirk Nov 1987 A
4745544 Renner et al. May 1988 A
4788640 Hansen Nov 1988 A
4831358 Ferrio et al. May 1989 A
4858108 Ogawa et al. Aug 1989 A
4866664 Burkhardt, Jr. et al. Sep 1989 A
4890218 Bram Dec 1989 A
4890222 Kirk Dec 1989 A
4991112 Callemyn Feb 1991 A
5115507 Callemyn May 1992 A
5140685 Sipple et al. Aug 1992 A
5142683 Burkhardt, Jr. et al. Aug 1992 A
5155831 Emma et al. Oct 1992 A
5155854 Flynn et al. Oct 1992 A
5168555 Byers et al. Dec 1992 A
5173897 Schrodi et al. Dec 1992 A
5201039 Sakamura Apr 1993 A
5251205 Callon et al. Oct 1993 A
5255239 Taborn et al. Oct 1993 A
5263169 Genusov et al. Nov 1993 A
5313454 Bustini et al. May 1994 A
5347648 Stamm et al. Sep 1994 A
5367678 Lee et al. Nov 1994 A
5379295 Yonehara Jan 1995 A
5379432 Orton et al. Jan 1995 A
5390329 Gaertner et al. Feb 1995 A
5392391 Caulk, Jr. et al. Feb 1995 A
5392411 Ozaki Feb 1995 A
5392412 McKenna Feb 1995 A
5404464 Bennett Apr 1995 A
5404469 Chung et al. Apr 1995 A
5404482 Stamm et al. Apr 1995 A
5432918 Stamm Jul 1995 A
5448702 Garcia, Jr. et al. Sep 1995 A
5450351 Heddes Sep 1995 A
5452437 Richey et al. Sep 1995 A
5452452 Gaetner et al. Sep 1995 A
5459842 Begun et al. Oct 1995 A
5459843 Davis et al. Oct 1995 A
5463625 Yasrebi Oct 1995 A
5467452 Blum et al. Nov 1995 A
5475856 Kogge Dec 1995 A
5485455 Dobbins et al. Jan 1996 A
5515296 Agarwal May 1996 A
5517648 Bertone et al. May 1996 A
5539737 Lo et al. Jul 1996 A
5542070 LeBlanc et al. Jul 1996 A
5542088 Jennings, Jr. et al. Jul 1996 A
5544236 Andruska et al. Aug 1996 A
5550816 Hardwick et al. Aug 1996 A
5557766 Takiguchi et al. Sep 1996 A
5568476 Sherer et al. Oct 1996 A
5568617 Kametani Oct 1996 A
5574922 James Nov 1996 A
5581729 Nistala et al. Dec 1996 A
5592622 Isfeld et al. Jan 1997 A
5598560 Benson Jan 1997 A
5613071 Rankin et al. Mar 1997 A
5613136 Casavant et al. Mar 1997 A
5617327 Duncan Apr 1997 A
5623489 Cotton et al. Apr 1997 A
5627829 Gleeson et al. May 1997 A
5630074 Beltran May 1997 A
5630130 Perotto et al. May 1997 A
5633865 Short May 1997 A
5644623 Gutledge Jul 1997 A
5649110 Ben-Nun et al. Jul 1997 A
5649157 Williams Jul 1997 A
5651002 Van Seters et al. Jul 1997 A
5659687 Kim et al. Aug 1997 A
5680641 Sidman Oct 1997 A
5689566 Nguyen Nov 1997 A
5692126 Templeton et al. Nov 1997 A
5699537 Sharangpani et al. Dec 1997 A
5701434 Nakagawa Dec 1997 A
5717898 Kagan et al. Feb 1998 A
5721870 Matsumoto Feb 1998 A
5724574 Stratigos et al. Mar 1998 A
5740402 Bratt et al. Apr 1998 A
5742587 Zornig et al. Apr 1998 A
5742782 Ito et al. Apr 1998 A
5742822 Motomura Apr 1998 A
5745913 Pattin et al. Apr 1998 A
5751987 Mahant-Shetti et al. May 1998 A
5754764 Davis et al. May 1998 A
5761507 Govett Jun 1998 A
5761522 Hisanga et al. Jun 1998 A
5764915 Heimsoth et al. Jun 1998 A
5768528 Stumm Jun 1998 A
5781551 Born Jul 1998 A
5781774 Krick Jul 1998 A
5784649 Begur et al. Jul 1998 A
5784712 Byers et al. Jul 1998 A
5796413 Shipp et al. Aug 1998 A
5797043 Lewis et al. Aug 1998 A
5805816 Piczo, Jr. et al. Sep 1998 A
5809235 Sharma et al. Sep 1998 A
5809237 Watts et al. Sep 1998 A
5809530 Samra et al. Sep 1998 A
5812868 Moyer et al. Sep 1998 A
5828746 Ardon Oct 1998 A
5828863 Barrett et al. Oct 1998 A
5828881 Wang Oct 1998 A
5828901 O'Toole et al. Oct 1998 A
5832215 Kato et al. Nov 1998 A
5835755 Stellwagen, Jr. Nov 1998 A
5838988 Panwar et al. Nov 1998 A
5850399 Ganmukhi et al. Dec 1998 A
5850530 Chen et al. Dec 1998 A
5854922 Gravenstein et al. Dec 1998 A
5857188 Douglas Jan 1999 A
5860138 Engebretsen et al. Jan 1999 A
5860158 Pai et al. Jan 1999 A
5886992 Raatikaien et al. Mar 1999 A
5887134 Ebrahim Mar 1999 A
5890208 Kwon Mar 1999 A
5892979 Shiraki et al. Apr 1999 A
5898686 Virgile Apr 1999 A
5898701 Johnson Apr 1999 A
5905876 Pawlowski et al. May 1999 A
5905889 Wilhelm, Jr. May 1999 A
5909686 Muller et al. Jun 1999 A
5915123 Mirsky et al. Jun 1999 A
5918235 Kirshenbaum et al. Jun 1999 A
5933627 Parady Aug 1999 A
5937187 Kosche et al. Aug 1999 A
5938736 Muller et al. Aug 1999 A
5940612 Brady et al. Aug 1999 A
5940866 Chisholm et al. Aug 1999 A
5946487 Dangelo Aug 1999 A
5948081 Foster Sep 1999 A
5958031 Kim Sep 1999 A
5961628 Nguyen et al. Oct 1999 A
5968169 Pickett Oct 1999 A
5970013 Fischer et al. Oct 1999 A
5974467 Haddock et al. Oct 1999 A
5974518 Nogradi Oct 1999 A
5978838 Mohammed et al. Nov 1999 A
5983274 Hyder et al. Nov 1999 A
5995513 Harrand et al. Nov 1999 A
6011791 Okada Jan 2000 A
6012151 Mano Jan 2000 A
6014729 Lannan et al. Jan 2000 A
6023742 Ebeling et al. Feb 2000 A
6032190 Bremer et al. Feb 2000 A
6032218 Lewin et al. Feb 2000 A
6047002 Hartmann et al. Apr 2000 A
6049867 Eickemeyer et al. Apr 2000 A
6055605 Sharma et al. Apr 2000 A
6058168 Braband May 2000 A
6061710 Eickemeyer et al. May 2000 A
6067300 Baumert et al. May 2000 A
6067585 Hoang May 2000 A
6070231 Ottinger May 2000 A
6072781 Feeney et al. Jun 2000 A
6073215 Snyder Jun 2000 A
6079008 Clery, III Jun 2000 A
6085215 Ramakrishnan et al. Jul 2000 A
6085248 Sambamurthy et al. Jul 2000 A
6085294 Van Doren et al. Jul 2000 A
6092127 Tausheck Jul 2000 A
6092158 Harriman et al. Jul 2000 A
6104700 Haddock et al. Aug 2000 A
6111886 Stewart Aug 2000 A
6112016 MacWilliams et al. Aug 2000 A
6122251 Shinohara Sep 2000 A
6128669 Moriarty et al. Oct 2000 A
6134665 Klein et al. Oct 2000 A
6138240 Tran et al. Oct 2000 A
6141677 Hanif et al. Oct 2000 A
6141689 Yasrebi Oct 2000 A
6141765 Sherman Oct 2000 A
6144669 Williams et al. Nov 2000 A
6145054 Mehrotra et al. Nov 2000 A
6157955 Narad et al. Dec 2000 A
6160562 Chin et al. Dec 2000 A
6170051 Dowling Jan 2001 B1
6175927 Cromer et al. Jan 2001 B1
6182177 Harriman Jan 2001 B1
6195676 Spix et al. Feb 2001 B1
6199133 Schnell Mar 2001 B1
6201807 Prasanna Mar 2001 B1
6212542 Kahle et al. Apr 2001 B1
6212544 Borkenhagen et al. Apr 2001 B1
6212604 Tremblay Apr 2001 B1
6212611 Nizar et al. Apr 2001 B1
6216220 Hwang Apr 2001 B1
6223207 Lucovsky et al. Apr 2001 B1
6223238 Meyer et al. Apr 2001 B1
6223243 Ueda et al. Apr 2001 B1
6223274 Catthoor et al. Apr 2001 B1
6223279 Nishimura et al. Apr 2001 B1
6247025 Bacon Jun 2001 B1
6256713 Audityan et al. Jul 2001 B1
6256775 Flynn Jul 2001 B1
6269391 Gillespie Jul 2001 B1
6272109 Pei et al. Aug 2001 B1
6272520 Sharangpani et al. Aug 2001 B1
6272616 Fernando et al. Aug 2001 B1
6275505 O'Loughlin et al. Aug 2001 B1
6279113 Vaidya Aug 2001 B1
6282169 Kiremidjian Aug 2001 B1
6286083 Chin et al. Sep 2001 B1
6289011 Seo et al. Sep 2001 B1
6295600 Parady Sep 2001 B1
6298370 Tang et al. Oct 2001 B1
6307789 Wolrich et al. Oct 2001 B1
6311261 Chamdani et al. Oct 2001 B1
6320861 Adam et al. Nov 2001 B1
6324624 Wolrich et al. Nov 2001 B1
6335932 Kadambi et al. Jan 2002 B2
6338078 Chang et al. Jan 2002 B1
6341347 Joy Jan 2002 B1
6345334 Nakagawa et al. Feb 2002 B1
6347344 Baker et al. Feb 2002 B1
6349331 Andra et al. Feb 2002 B1
6356962 Kasper et al. Mar 2002 B1
6359911 Movshovich et al. Mar 2002 B1
6360262 Guenthner et al. Mar 2002 B1
6360277 Rickley et al. Mar 2002 B1
6366998 Mohamed Apr 2002 B1
6373848 Allison et al. Apr 2002 B1
6377998 Noll et al. Apr 2002 B2
6389031 Chao et al. May 2002 B1
6389449 Nermirovsky et al. May 2002 B1
6393026 Irwin May 2002 B1
6393483 Latif et al. May 2002 B1
6404737 Novik et al. Jun 2002 B1
6415338 Habot Jul 2002 B1
6418488 Chilton et al. Jul 2002 B1
6424657 Voit et al. Jul 2002 B1
6424659 Viswanadham et al. Jul 2002 B2
6426940 Seo et al. Jul 2002 B1
6426943 Spinney et al. Jul 2002 B1
6427196 Adiletta et al. Jul 2002 B1
6430626 Witkowski et al. Aug 2002 B1
6434145 Opsanick et al. Aug 2002 B1
6438132 Vincent et al. Aug 2002 B1
6438134 Chow et al. Aug 2002 B1
6448812 Bacigalupo Sep 2002 B1
6453404 Bereznyi et al. Sep 2002 B1
6457015 Eastham Sep 2002 B1
6463035 Moore Oct 2002 B1
6463072 Wolrich et al. Oct 2002 B1
6463480 Kikuchi et al. Oct 2002 B2
6463527 Vishkin Oct 2002 B1
6466898 Chan Oct 2002 B1
6477562 Nemirovsky et al. Nov 2002 B2
6484224 Robins et al. Nov 2002 B1
6490285 Lee et al. Dec 2002 B2
6501731 Chong et al. Dec 2002 B1
6507862 Joy et al. Jan 2003 B1
6513082 Fischer Jan 2003 B1
6522188 Poole Feb 2003 B1
6526451 Kasper Feb 2003 B2
6526452 Petersen et al. Feb 2003 B1
6529983 Marshall Mar 2003 B1
6532509 Wolrich et al. Mar 2003 B1
6535878 Guedalia et al. Mar 2003 B1
6552826 Adler et al. Apr 2003 B2
6553406 Berger et al. Apr 2003 B1
6560667 Wolrich et al. May 2003 B1
6570850 Guiterrez et al. May 2003 B1
6577542 Wolrich et al. Jun 2003 B2
6584522 Wolrich et al. Jun 2003 B1
6587906 Wolrich et al. Jul 2003 B2
6604125 Belkin Aug 2003 B1
6606704 Adiletta et al. Aug 2003 B1
6625654 Wolrich et al. Sep 2003 B1
6628668 Hutzli et al. Sep 2003 B1
6629147 Grow Sep 2003 B1
6629236 Aipperspach et al. Sep 2003 B1
6631422 Althaus et al. Oct 2003 B1
6631430 Wolrich et al. Oct 2003 B1
6631462 Wolrich et al. Oct 2003 B1
6646868 Ho et al. Nov 2003 B2
6657963 Paquette et al. Dec 2003 B1
6658551 Berenbaum et al. Dec 2003 B1
6661794 Wolrich et al. Dec 2003 B1
6665699 Hunter et al. Dec 2003 B1
6665755 Modelski et al. Dec 2003 B2
6667920 Wolrich et al. Dec 2003 B2
6668317 Bernstein Dec 2003 B1
6671827 Guilford et al. Dec 2003 B2
6675190 Schabernack et al. Jan 2004 B1
6675192 Emer et al. Jan 2004 B2
6678746 Russell et al. Jan 2004 B1
6680933 Cheesman et al. Jan 2004 B1
6681300 Wolrich et al. Jan 2004 B2
6684326 Cromer et al. Jan 2004 B1
6694380 Wolrich et al. Feb 2004 B1
6697379 Jacquet et al. Feb 2004 B1
6721325 Duckering et al. Apr 2004 B1
6724767 Chong et al. Apr 2004 B1
6728845 Adiletta Apr 2004 B2
6732187 Lougheed et al. May 2004 B1
6754211 Brown Jun 2004 B1
6754222 Joung et al. Jun 2004 B1
6768717 Reynolds et al. Jul 2004 B1
6775284 Calvignac et al. Aug 2004 B1
6779084 Wolrich et al. Aug 2004 B2
6782447 Ostler et al. Aug 2004 B2
6792488 Wolrich et al. Sep 2004 B2
6798744 Loewen et al. Sep 2004 B1
6826615 Barrall et al. Nov 2004 B2
6834053 Stacey et al. Dec 2004 B1
6850521 Kadambi et al. Feb 2005 B1
6856622 Calamvokis et al. Feb 2005 B1
6873618 Weaver Mar 2005 B1
6876561 Wolrich et al. Apr 2005 B2
6895457 Wolrich et al. May 2005 B2
6925637 Thomas et al. Aug 2005 B2
6931641 Davis et al. Aug 2005 B1
6934780 Modelski et al. Aug 2005 B2
6934951 Wilkinson et al. Aug 2005 B2
6938147 Joy et al. Aug 2005 B1
6940857 Weinman Sep 2005 B2
6944850 Hooper et al. Sep 2005 B2
6947425 Hooper et al. Sep 2005 B1
6952824 Hooper et al. Oct 2005 B1
6959002 Wynne et al. Oct 2005 B2
6967963 Houh et al. Nov 2005 B1
6976095 Wolrich et al. Dec 2005 B1
6981077 Modelski et al. Dec 2005 B2
6983350 Wheeler et al. Jan 2006 B1
7006495 Hooper Feb 2006 B2
7065569 Teraslinna Jun 2006 B2
7069548 Kushlis Jun 2006 B2
7076654 Kawamoto Jul 2006 B2
7096277 Hooper Aug 2006 B2
7100102 Hooper et al. Aug 2006 B2
7107413 Rosenbluth et al. Sep 2006 B2
7111072 Matthews et al. Sep 2006 B1
7111296 Wolrich et al. Sep 2006 B2
7124196 Hooper Oct 2006 B2
7126952 Hooper et al. Oct 2006 B2
7149226 Wolrich et al. Dec 2006 B2
7149786 Bohringer et al. Dec 2006 B1
7158964 Wolrich et al. Jan 2007 B2
7181573 Wolrich et al. Feb 2007 B2
7181742 Hooper Feb 2007 B2
7191321 Bernstein et al. Mar 2007 B2
7191433 Narad et al. Mar 2007 B2
7206858 Hooper et al. Apr 2007 B2
7248584 Hooper Jul 2007 B2
7260102 Mehrvar et al. Aug 2007 B2
7269179 Wolrich et al. Sep 2007 B2
7286534 Kloth Oct 2007 B2
7305500 Adiletta et al. Dec 2007 B2
7328289 Wolrich et al. Feb 2008 B2
7352769 Hooper et al. Apr 2008 B2
7424579 Wheeler et al. Sep 2008 B2
7433307 Hooper et al. Oct 2008 B2
7434221 Hooper et al. Oct 2008 B2
7443836 Hooper et al. Oct 2008 B2
7471688 Kalkunte et al. Dec 2008 B2
7620702 Wolrich et al. Nov 2009 B1
7751402 Wolrich et al. Jul 2010 B2
20010023487 Kawamoto Sep 2001 A1
20010027512 Hagersten Oct 2001 A1
20020027448 Bacigalupo Mar 2002 A1
20020041520 Wolrich et al. Apr 2002 A1
20020075878 Lee et al. Jun 2002 A1
20020118692 Oberman et al. Aug 2002 A1
20020150047 Knight et al. Oct 2002 A1
20020181194 Ho et al. Dec 2002 A1
20030043803 Hooper Mar 2003 A1
20030067934 Hooper et al. Apr 2003 A1
20030086434 Kloth May 2003 A1
20030105901 Wolrich et al. Jun 2003 A1
20030105917 Ostler et al. Jun 2003 A1
20030110166 Wolrich et al. Jun 2003 A1
20030115347 Wolrich et al. Jun 2003 A1
20030115426 Rosenbluth et al. Jun 2003 A1
20030131198 Wolrich et al. Jul 2003 A1
20030140196 Wolrich et al. Jul 2003 A1
20030145159 Adiletta et al. Jul 2003 A1
20030147409 Wolrich et al. Aug 2003 A1
20030161303 Mehvar et al. Aug 2003 A1
20030161337 Weinman Aug 2003 A1
20030196012 Wolrich et al. Oct 2003 A1
20030210574 Wolrich et al. Nov 2003 A1
20030231635 Kalkunte et al. Dec 2003 A1
20040039895 Wolrich et al. Feb 2004 A1
20040052269 Hooper et al. Mar 2004 A1
20040054880 Bernstein et al. Mar 2004 A1
20040059828 Hooper et al. Mar 2004 A1
20040071152 Wolrich et al. Apr 2004 A1
20040073728 Wolrich et al. Apr 2004 A1
20040073778 Adiletta et al. Apr 2004 A1
20040085901 Hooper et al. May 2004 A1
20040098496 Wolrich et al. May 2004 A1
20040109369 Wolrich et al. Jun 2004 A1
20040148382 Narad et al. Jul 2004 A1
20040162933 Adiletta et al. Aug 2004 A1
20040252686 Hooper et al. Dec 2004 A1
20050033884 Wolrich et al. Feb 2005 A1
20050149665 Wolrich et al. Jul 2005 A1
20060007871 Welin Jan 2006 A1
20060069882 Wheeler et al. Mar 2006 A1
20060156303 Hooper et al. Jul 2006 A1
Foreign Referenced Citations (26)
Number Date Country
0379709 Aug 1990 EP
0464715 Jan 1992 EP
0633678 Jan 1995 EP
0745933 Dec 1996 EP
0773648 May 1997 EP
0809180 Nov 1997 EP
0959602 Nov 1999 EP
59111533 Jun 1984 JP
9415287 Jul 1994 WO
9738372 Oct 1997 WO
9820647 May 1998 WO
0038376 Jun 2000 WO
0056024 Sep 2000 WO
0115718 Mar 2001 WO
0116718 Mar 2001 WO
0116769 Mar 2001 WO
0116770 Mar 2001 WO
0116782 Mar 2001 WO
0117179 Mar 2001 WO
0131856 May 2001 WO
0148596 Jul 2001 WO
0148606 Jul 2001 WO
0148619 Jul 2001 WO
0150247 Jul 2001 WO
0150679 Jul 2001 WO
03030461 Apr 2003 WO
Non-Patent Literature Citations (46)
Entry
Byrd et al., “Multithread Processor Architectures,” IEEE Spectrum, vol. 32, No. 8, New York, Aug. 1, 1995, pp. 38-46.
Doyle et al., Microsoft Press Computer Dictionary, 2.sup.nd ed., Microsoft Press, Redmond, Washington, USA, 1994, p. 326.
Fillo et al., “The M-Machine Multicomputer,” IEEE Proceedings of MICRO-28, 1995, pp. 146-156.
Gomez et al., “Efficient Multithreaded User-Space Transport for Network Computing: Design and Test of the TRAP Protocol,” Journal of Parallel and Distributed Computing, Academic Press, Duluth, Minnesota, USA, vol. 40, No. 1, Jan. 10, 1997, pp. 103-117.
Haug et al., “Reconfigurable hardware as shared resource for parallel threads,” IEEE Symposium on FPGAs for Custom Computing Machines, 1998.
Hauser et al., “Garp: a MIPS processor with a reconfigurable coprocessor,” Proceedings of the 5.sup.th Annual IEEE Symposium on Field-Programmable Custom Computing Machines, 1997.
Hyde, R., “Overview of Memory Management,” Byte, vol. 13, No. 4, 1998, pp. 219-225. Litch et al., “StrongARMing Portable Communications,” IEEE Micro, 1998, pp. 48-55.
Schmidt et al., “The Performance of Alternative Threading Architectures for Parallel Communication Subsystems,” Internet Document, Online!, Nov. 13, 1998.
Thistle et al., “A Processor Architecture for Horizon,” IEEE, 1998, pp. 35-41.
Tremblay et al., “A Three Dimensional Register File for Superscalar Processors,” IEEE Proceedings of the 28.sup.th Annual Hawaii International Conference on System Sciences, 1995, pp. 191-201.
Trimberger et al, “A time-multiplexed FPGA,” Proceedings of the 5.sup.th Annual IEEE Symposium on Field-Programmable Custom Computing Machines, 1998.
Turner et al., “Design of a High Performance Active Router,” Internet Document, Online, Mar. 18, 1999.
Vibhatavanijt et al., “Simultaneous Multithreading-Based Routers,” Proceedings of the 2000 International Conference of Parallel Processing, Toronto, Ontario, Canada, Aug. 21-24, 2000, pp. 362-359.
Wazlowski et al., “PRSIM-II computer and architecture,” IEEE Proceedings, Workshop on FPGAs for Custom Computing Machines, 1993.
“10-/100-Mbps Ethernet Media Access Controller (MAC) Core”, NEC, 1998, pp. 1-5.
“Nomadic Threads: A migrating multithread approach to remote memory accesses in multiprocessors”, by Jenks, S.; Gaudiot, J.L. (abstract only) Publication Date: Oct. 20-23, 1996.
“Overview of the Start (*T) multithreaded computer” by Beckeerie, M.J. (abstract only) Publication Date: Feb. 22-26, 1993.
A. Ippoliti, et al., “Parallel Media Access Controller for Packet Communications at Gb/s Rates”, 1990, IEEE, pp. 991-996.
Howard Frazier, “Gigabit Ethernet: From 100 to 1,000 Mbps”, 1999, IEEE Internet Computing, pp. 24-31.
Howard Frazier, “The 802.3z Gigabit Ethernet Standard”, 1998, IEEE Network, pp. 6-7.
“Enterprise Hardware, Intel Expected to Unveil New Networking Chip,” News.Com, Aug. 26, 1999, <http://new.com.com/Intel+expected+to+unveil+new+networking+chip/2100-- 1001.sub.--3-230315.htm1> (accessed on Aug. 23, 2005), pp. 1-5.
“The ATM Forum Technical Committee Traffic Management Specification Version 4.1”, The ATM Forum (Mar. 1999).
Agarwal et al., “April: A Processor Architecture for Multiprocessing,” Proceedings of the 17th Annual International Symposium on Computer Architecutre, IEEE, pp. 104-114, (1990).
Chandranmenon, G.P., et al., “Trading Packet Headers for Packet Processing”, IEEE/ACM Transactions on Networking, 4(2):141-152, Apr. 1996.
Chappell, et al., “Simultaneous Subordinate Microthreading (SSMT)”, IEEE, p. 186-195 (1999).
Dictionary of Computer Words: An A to Z Guide to Today's Computers, Revised Edition, Houghton Mifflin Company: Boston, Massachusetts, pp. 220, (1995).
Digital Semiconductor 21140A PCI Fast Ethernet LAN Controller, Hardware Reference Manual, Digital Equipment Corporation, pp. i-x, 1-1 through 1-5, 2-1 throught 2-12, 3-1 through 3-38, 4-31 through 5-2, 6-1 through 6-24, (Mar. 1998).
Farrens, et al., “Strategies for Achieving Improved Processor Throughput”, ACM, p. 362-369 (1991).
Giroux, N., et al., “Queuing and Scheduling: Quality of Service in ATM Networks, Chapter 5”, Quality of Service in ATM Networks: State-of-the-Art Traffic Management, pp. 96-121 (1998).
Govind, et al., “Performance modeling and architecture exploration of network processors”, Quantitative Evaluation of Systems, abstract only (1 page), Sep. 2005.
Kaiserswerth, M., “The Parallel Protocol Engine”, IEEE/ACM Transactions on Networking, 1(6):650-663, Dec. 1993.
Khailany, B., et al., “Imagine: Media Processing with Streams,” IEEE Micro, Mar.-Apr. 2001, pp. 35-46.
Leon-Garcia, A., Communication Networks: Fundamental Concepts and Key Architectures, McGraw-Hill Higher Education, Copyright 2000, pp. 195-198, 215-219, & 380-385.
Lim, A., et al., “Improving Performance of Adaptive Media Access Control Protocols for High-Density Wireless Networks”, Proceedings of the 1999 International Symposium on Parallel Architectures, Algorithms and Networks (ISPAN '99), pp. 316-321, Jun. 1999.
Mollenauer, J.F., et al., “An Efficient Media Access Control Protocol for Broadband Wireless Access Systems”, IEEE Standard, IEEE 802.16 Broadband Wireless Access Working Group, 19 pages, Oct. 1999.
Ocheltree, K.B., et al., “A comparison of fibre channel and 802 MAC services”, Proceedings of 18th Conference on Local Computer Networks, abstract only, 1 page, Sep. 1993.
Shaw, M.C., et al., UNIX Internals: A Systems Operations Handbook, Windcrest Books, pp. 30-37, 1987.
Todorova, P., et al., “Quality-of-Service-Oriented Media Access Control for Advanced Mobile Multimedia Satellite Systems”, Proceedings of the 36th Annual Hawaii International Conference on System Sciences (HICSS'03), 8 pages, Jan. 2003.
Vuppala, V., et al., “Layer-3 switching using virtual network ports”, IEEE Proc. Computer Communications and Networks, pp. 642-648, 1999.
Wikipedia entry, “Media Access Control”, retrieved from http://en.wikipedia.org/wiki/Media.sub.--access.sub.--control, 2 pages, Jul. 31, 2007.
Non-Final Office Action dated May 9, 2016 issued in U.S. Appl. No. 14/882,824.
Non-Final Office Action dated May 9, 2016 issued in U.S. Appl. No. 14/882,867.
Non-Final Office Action dated May 6, 2016 issued in U.S. Appl. No. 14/882,897.
Final Office Action dated Nov. 18, 2016 issued in U.S. Appl. No. 14/882,824.
Final Office Action dated Oct. 11, 2016 issued in U.S. Appl. No. 14/882,867.
Final Office Action dated Nov. 18, 2016 issued in U.S. Appl. No. 14/882,897.
Related Publications (1)
Number Date Country
20160019178 A1 Jan 2016 US
Continuations (3)
Number Date Country
Parent 14286055 May 2014 US
Child 14809423 US
Parent 10780330 Feb 2004 US
Child 14286055 US
Parent 09473271 Dec 1999 US
Child 10780330 US