Typical computer processing systems have buses that enable various components to communicate with each other. Bus communication between these components allow transfer of data commonly through a data path. Generally, the datapath interconnects a processing agent, e.g., a central processing unit (CPU) or processor, with other components such as hard disk drives, device adapters, and the like.
Architecture:
Referring to
The programming engines 16 each maintain program counters in hardware and states associated with the program counters. Effectively, corresponding sets of context or threads can be simultaneously active on each of the programming engines 16 while only one is actually operating at any one time.
In this example, eight programming engines 16 are illustrated in
Push buses 26a-26b and pull buses 28a-28b are used to transfer data between the programming engines 16 and the DRAM memory 14a and the SRAM memory 14b. In particular, the push buses 26a-26b are unidirectional buses that move the data from the memory resources 14 to the programming engines 16 whereas the pull buses 28a-28b move data from the programming engines 16 to the memory resources 14.
The eight programming engines 16 access either the DRAM memory 14a or SRAM memory 14b based on characteristics of the data. Thus, low latency, low bandwidth data are stored in and fetched from SRAM memory 14b, whereas higher bandwidth data for which latency is not as important, are stored in and fetched from DRAM 14a. The programming engines 16 can execute memory reference instructions to either the DRAM controller 18a or SRAM controller 18b.
The hardware-based multithreaded processor 12 also includes a processor core 20 for loading microcode control for other resources of the hardware-based multithreaded processor 12. In this example, the processor core 20 is an XScale™ based architecture.
The processor core 20 performs general purpose computer type functions such as handling protocols, exceptions, and extra support for packet processing where the programming engines 16 pass the packets off for more detailed processing such as in boundary conditions. The processor core 20 has an operating system (not shown). Through the operating system (OS), the processor core 20 can call functions to operate on programming engines 16. The processor core 20 can use any supported OS, in particular a real time OS. For the core processor 20 implemented as an XScale™ architecture, operating systems such as Microsoft NT real-time, VXWorks and μCOS, or a freeware OS available over the Internet can be used.
Advantages of hardware multithreading can be explained by SRAM or DRAM memory accesses. As an example, an SRAM access requested by a context (e.g., Thread_0), from one of the programming engines 16 will cause the SRAM controller 18b to initiate an access to the SRAM memory 14b. The SRAM controller 18b accesses the SRAM memory 14b, fetches the data from the SRAM memory 14b, and returns data to a requesting programming engine 16.
During an SRAM access, if one of the programming engines 16 had only a single thread that could operate, that programming engine would be dormant until data was returned from the SRAM memory 14b.
By employing hardware context swapping within each of the programming engines 16, the hardware context swapping enables other contexts with unique program counters to execute in that same programming engine. Thus, another thread e.g., Thread_1 can function while the first thread, Thread_0 , is awaiting the read data to return. During execution, Thread_1 may access the DRAM memory 14a. While Thread_1 operates on the DRAM unit, and Thread_0 is operating on the SRAM unit, a new thread, e.g., Thread_2 can now operate in the programming engine 16. Thread—2 can operate for a certain amount of time 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 DRAM operation all being completed or operated upon by one of the programming engines 16 and have one more thread available to process more work.
The hardware context swapping also synchronizes completion of tasks. For example, two threads could hit the shared memory resource, e.g., the SRAM memory 14b. Each one of the separate functional units, e.g., the SRAM controller 18b, and the DRAM controller 18a, when they complete a requested task from one of the programming engine thread or contexts reports back a flag signaling completion of an operation. When the programming engine 16 receives the flag, the programming engine 16 can if determine which thread to turn on.
One example of an application for the hardware-based multithreaded processor 12 is as a network processor. As a network processor, the hardware-based multithreaded processor 12 interfaces to network devices such as a Media Access Controller (MAC) device, e.g., a 10/100BaseT Octal MAC 13a or a Gigabit Ethernet device (not shown). In general, as a network processor, the hardware-based multithreaded processor 12 can interface to any type of communication device or interface that receives or sends large amount of data. The computer processing system 10 functioning in a networking application could receive network packets and process those packets in a parallel manner.
Programming Engine Contexts:
As described above, each of the programming engines 16 supports multi-threaded execution of eight contexts. This allows one thread to start executing just after another thread issues a memory reference and must wait until that reference completes before doing more work. Multi-threaded execution is critical to maintaining efficient hardware execution of the programming engines 16 because memory latency is significant. Multi-threaded execution allows the programming engines 16 to hide memory latency by performing useful independent work across several threads.
Each of the eight contexts of the programming engines 16, to allow for efficient context swapping, has its own register set, program counter, and context specific local registers. Having a copy per context eliminates the need to move context specific information to and from shared memory and programming engine registers for each context swap. Fast context swapping allows a context to perform computations while other contexts wait for input-output (I/O), typically, external memory accesses to complete or for a signal from another context or hardware unit.
For example, the programming engines 16 execute eight contexts by maintaining eight program counters and eight context relative sets of registers. A number of different types of context relative registers, such as general purpose registers (GPRs), inter-programming agent registers, Static Random Access Memory (SRAM) input transfer registers, Dynamic Random Access Memory (DRAM) input transfer registers, SRAM output transfer registers, DRAM output transfer registers. Local memory registers can also be used.
For example, GPRs are used for general programming purposes. GPRs are read and written exclusively under program control. The GPRs, when used as a source in an instruction, supply operands to an execution datapath (not shown). When used as a destination in an instruction, the GPRs are written with the result of the execution box datapath. The programming engines 16 also include IO transfer registers as discussed above. The IO transfer registers are used for transferring data to and from the programming engines 16 and locations external to the programming engines 16, e.g., the DRAM memory 14a and the SRAM memory 14b etc.
Bus Architecture:
Referring to
In particular, the push buses 26a-26b have multiple sources of memory such as memory controller channels and internal read registers (not shown) which arbitrate via the push arbiters 32a-32b to use the push buses 26a-26b. The destination (e.g., programming engine 16) of any push data transfer recognizes when the data is being “pushed” into it by decoding the Push_ID, which is driven or sent with the push data. The pull buses 28a-28b also have multiple destinations (e.g., writing data to different memory controller channels or writeable internal registers) that arbitrate to use the pull buses 28a-28b. The pull buses 28a-28b have a Pull_ID, which is driven or sent, for example, two cycles before the pull data.
Data functions are distributed amongst the programming engines 16. Connectivity to the DRAM memory 14a and the SRAM memory 14b is performed via command requests. A command request can be a memory request. For example, a command request can move data from a register located in the programming engine 16a to a shared resource, e.g., the DRAM memory 14a, SRAM memory 14b. The commands or requests are sent out to each of the functional units and the shared resources. Commands such as I/O commands (e.g., SRAM read, SRAM write, DRAM read, DRAM write, load data from a receive memory buffer, move data to a transmit memory buffer) specify either context relative source or destination registers in the programming engines 16.
In general, the data transfers between programming engines and memory resources designate the memory resource for pushing the data to a processing agent via the push bus having a plurality of sources that arbitrate use of the push bus, and designate the memory resource for receiving the data from the processing agent via the pull bus having a plurality of destinations that arbitrate use of the pull bus.
Read Process:
Referring to
If the request is not required to continue the execution of the context, the programming engine 16 checks (68) if the memory controllers 18a-18b have finished the request. If the memory controllers 18a-18b have not finished the request, a loop back occurs and further checks (58) take place. If the memory controllers 18a-18b have finished the request, when the read data has been acquired from the memory resources, the memory controllers 18a-18b push (70) the data into the context relative input transfer register specified by the read command. The memory controller sets a signal in the programming engine 16 that enables the context that issued the read to become active. The programming engine 16 reads (72) the requested data in the input transfer register and continues (74) the execution of the context.
Write Process:
Referring to
If the write request is not required to continue the program context or thread, the memory controllers 18a-18b extracts or pulls (94) the data from the output transfer registers and signals (96) to the programming engines 16 to unlock the output transfer registers. The programming engine 16 then checks (98) if the context was swapped out. If so, the context is swapped back (100) and if not, the programming engine 16 continues (102) the execution of the context. Thus, the signaled context can reuse the output transfer registers. The signal may also be used to enable the context to go active if it swapped out (100) on the write command.
Data Push Operation:
Referring to
The Push_ID and Push_Data are registered (114) and enqueued (116) into first-in, first-outs (FIFOs) in the push arbiters 32a-32b unless the Target_#_Push_Q_Full signal is asserted. This signal indicates that the Push_ID and Push_Data FIFOs for that specific target are almost full in the push arbiters 32a-32b. In this case, the push arbiters 32a-32b have not registered a Push_ID or Push_Data and the target does not change it. The channel changes the Push_ID and Push_Data that is taken by the push arbiters 32a-32b to those for the next word transfer or to null if it has no other valid transfer. Due to latency in the Push_Q_Full signal, the push arbiters 32a-32b should accommodate the worst case number of in-flight Push_IDs and Push_Data per target.
The push arbiters 32a-32b will arbitrate (118) every cycle between all valid Push_IDs and send intermediate Push_ID. The arbitration policy can be round robin, a priority scheme or even programmable. Multiple pushes of data from the push arbiters 32a-32b to the destination are not guaranteed to be in consecutive cycles. The push arbiters 32a-32b send (12) intermediate Push_Data and Push_ID is forwarded (120) to the destination. It is up to the target to update the destination address of each Push_ID it issues for each word of data it wishes to push. The Push_Data is forwarded (122) to the destination. At the destination, the time from the destination getting the Push_ID to the destination getting Push_Data is fixed by one processing cycle.
Data Pull Operation:
Referring to
The Pull_ID is registered (134) and enqueued (136) into fist-in, first-outs (FIFO) in the pull arbiters 30a-30b, unless the Target_#_Pull_Q_Full signal is asserted. This signal indicates that the Pull_ID queue for that specific target is almost full in the pull arbiters 30a-30b. In this case, the pull arbiters 30a-30b have not registered the Pull_ID and the target does not change it. The target changes a Pull_ID that is taken by the pull arbiters 30a-30b to that for the next burst transfer or to null if it has no other valid Pull_ID. Due to latency in the Pull_Q_Full signal, the pull arbiters 30a-30b should accommodate the worst case number of in-flight Pull_IDs per target.
The pull arbiters 30a-30b arbitrate (138) every cycle among the currently valid Pull_IDs. The arbitration policy can be round robin, a priority scheme or even programmable.
The pull arbiters 30a-30b forwards (140) the selected Pull_ID to the source. The time from the pull arbiters 30a-30b sending the Pull_ID to the source providing data is fixed in three processing cycles. The pull arbiters 30a-30b update the “source address” field of the Pull_ID for each new data item. The Pull_Data is pulled (142) from the source and sent to the targets.
The pull arbiters 30a-30b also assert (146) a Target_#_Take_Data to the selected target. This signal is asserted for each cycle a valid word of data is sent to the target. However, the assertions are not guaranteed to be on consecutive processing cycles. The pull arbiters 30a-30b only assert at most one Target_#_Take_Data signal at a time.
For example, a computer program product residing on a computer readable medium for causing a parallel processor to perform a function includes instructions causing the processor to designate the memory resource for pushing the data to the processing agent using a push bus having a plurality of sources that arbitrate use of the push bus; and designate the memory resource for receiving the data from the processing agent using a pull bus having a plurality of destinations that arbitrate use of the pull bus. The computer program product can include instructions causing the processor to establish a plurality of contexts on the programming agent and maintaining program counters and context relative registers. The programming agent in a read phase can execute a context and issue a read command to a memory controller. The memory controller can process the read command to be sent to the memory resource and the context can be swapped out if the read command is required to continue the execution of the context.
For transfers between targets and masters with different bus widths, the pull arbiters 30a-30b are required to do the adjusting. For example, the DRAM controller 18b may accept eight bytes of data per processing cycle but the programming engine 16 may only deliver four bytes per cycle. In this case, the pull arbiters 30a-30b can be used to accept four bytes per processing cycle, merge and pack them into eight bytes, and send the data to the DRAM controller 18a.
It is to be understood that while the example above has been described in conjunction with the detailed description thereof, the foregoing description is intended to illustrate and not limit the scope of the invention, which is defined by the scope of the At appended claims. Other aspects, advantages, and modifications are within the scope of the following claims.
Number | Name | Date | Kind |
---|---|---|---|
3373408 | Ling | Mar 1968 | A |
3478322 | Evans | Nov 1969 | A |
3792441 | Wymore et al. | Feb 1974 | A |
3881173 | Larsen et al. | Apr 1975 | A |
3913074 | Homberg et al. | Oct 1975 | A |
3940745 | Sajeva | Feb 1976 | A |
4023023 | Bourrez et al. | May 1977 | A |
4045782 | Anderson et al. | Aug 1977 | A |
4130890 | Adam | Dec 1978 | A |
4189767 | Ahuja | Feb 1980 | A |
4392758 | Bowles et al. | Jul 1983 | A |
4400770 | Chan et al. | Aug 1983 | A |
4514807 | Nogi | Apr 1985 | A |
4523272 | Fukunaga et al. | Jun 1985 | A |
4569016 | Hao et al. | Feb 1986 | A |
4724521 | Carron et al. | Feb 1988 | A |
4742451 | Bruckert et al. | May 1988 | A |
4745544 | Renner et al. | May 1988 | A |
4777587 | Case et al. | Oct 1988 | A |
4833657 | Tanaka | May 1989 | A |
4866664 | Burkhardt, Jr. et al. | Sep 1989 | A |
4868735 | Moller et al. | Sep 1989 | A |
4992934 | Portanova et al. | Feb 1991 | A |
5008808 | Fries et al. | Apr 1991 | A |
5073864 | Methvin et al. | Dec 1991 | A |
5113516 | Johnson | May 1992 | A |
5140685 | Sipple et al. | Aug 1992 | A |
5142676 | Fried 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 |
5165025 | Lass | Nov 1992 | A |
5166872 | Weaver et al. | Nov 1992 | A |
5168555 | Byers et al. | Dec 1992 | A |
5173897 | Schrodi et al. | Dec 1992 | A |
5247671 | Adkins et al. | Sep 1993 | A |
5255239 | Taborn et al. | Oct 1993 | A |
5263169 | Genusov et al. | Nov 1993 | A |
5274770 | Yeoh et al. | Dec 1993 | A |
5347648 | Stamm et al. | Sep 1994 | A |
5357617 | Davis et al. | Oct 1994 | A |
5363448 | Koopman, Jr. et al. | Nov 1994 | A |
5367678 | Lee et al. | Nov 1994 | 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 |
5404482 | Stamm et al. | Apr 1995 | A |
5428809 | Coffin et al. | Jun 1995 | A |
5432918 | Stamm | Jul 1995 | A |
5436626 | Fujiwara et al. | Jul 1995 | A |
5442756 | Grochowski et al. | Aug 1995 | A |
5448702 | Garcia, Jr. et al. | Sep 1995 | A |
5450351 | Heddes | Sep 1995 | A |
5450603 | Davies | Sep 1995 | A |
5452437 | Richey et al. | Sep 1995 | A |
5459842 | Begun et al. | Oct 1995 | A |
5463625 | Yasrebi | Oct 1995 | A |
5467452 | Blum et al. | Nov 1995 | A |
5481683 | Karim | Jan 1996 | A |
5487159 | Byers et al. | Jan 1996 | A |
5517628 | Morrison et al. | May 1996 | A |
5517648 | Bertone et al. | May 1996 | A |
5541920 | Angle et al. | Jul 1996 | A |
5542070 | LeBlanc et al. | Jul 1996 | A |
5542088 | Jennings, Jr. et al. | Jul 1996 | A |
5544236 | Adruska et al. | Aug 1996 | A |
5550816 | Hardwick et al. | Aug 1996 | A |
5557766 | Takiguchi et al. | Sep 1996 | A |
5568617 | Kametani | Oct 1996 | A |
5574922 | James | Nov 1996 | A |
5574939 | Keckler et al. | Nov 1996 | A |
5592622 | Isfeld et al. | Jan 1997 | A |
5600812 | Park | Feb 1997 | A |
5606676 | Grochowski et al. | Feb 1997 | A |
5610864 | Manning | Mar 1997 | A |
5613071 | Rankin et al. | Mar 1997 | A |
5613136 | Casavant et al. | Mar 1997 | A |
5623489 | Cotton et al. | Apr 1997 | A |
5627829 | Gleeson et al. | May 1997 | A |
5630130 | Perotto et al. | May 1997 | A |
5640538 | Dyer et al. | Jun 1997 | A |
5644623 | Gulledge | Jul 1997 | A |
5649109 | Griesmer et al. | Jul 1997 | A |
5649157 | Williams | Jul 1997 | A |
5652583 | Kang | Jul 1997 | A |
5659687 | Kim et al. | Aug 1997 | A |
5659722 | Blaner et al. | Aug 1997 | A |
5680641 | Sidman | Oct 1997 | A |
5689566 | Nguyen | Nov 1997 | A |
5692167 | Grochowski et al. | Nov 1997 | A |
5699537 | Sharangpani et al. | Dec 1997 | A |
5701435 | Chi | Dec 1997 | A |
5717760 | Satterfield | Feb 1998 | A |
5717898 | Kagan et al. | Feb 1998 | A |
5721870 | Matsumoto | Feb 1998 | A |
5724563 | Hasegawa | Mar 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 |
5761507 | Govett | Jun 1998 | A |
5761522 | Hisanga et al. | Jun 1998 | A |
5781774 | Krick | Jul 1998 | A |
5784649 | Begur et al. | Jul 1998 | A |
5784712 | Byers et al. | Jul 1998 | A |
5790813 | Whittaker | Aug 1998 | A |
5796413 | Shipp et al. | Aug 1998 | A |
5797043 | Lewis et al. | Aug 1998 | A |
5809235 | Sharma et al. | Sep 1998 | A |
5809530 | Samra et al. | Sep 1998 | A |
5812799 | Zuravleff et al. | Sep 1998 | A |
5812839 | Hoyt et al. | Sep 1998 | A |
5812868 | Moyer et al. | Sep 1998 | A |
5813031 | Chou et al. | Sep 1998 | A |
5815714 | Shridhar et al. | Sep 1998 | A |
5819080 | Dutton et al. | Oct 1998 | A |
5828746 | Ardon | Oct 1998 | A |
5828863 | Barrett et al. | Oct 1998 | A |
5829033 | Hagersten et al. | Oct 1998 | A |
5832215 | Kato et al. | Nov 1998 | A |
5832258 | Kiuchi et al. | Nov 1998 | A |
5835755 | Stellwagen, Jr. | Nov 1998 | A |
5835928 | Auslander et al. | Nov 1998 | A |
5854922 | Gravenstein et al. | Dec 1998 | A |
5860158 | Pai et al. | Jan 1999 | A |
5886992 | Raatikainen et al. | Mar 1999 | A |
5887134 | Ebrahim | Mar 1999 | A |
5890208 | Kwon | Mar 1999 | A |
5892979 | Shiraki et al. | Apr 1999 | A |
5893162 | Lau et al. | Apr 1999 | A |
5905876 | Pawlowski et al. | May 1999 | A |
5905889 | Wilhelm, Jr. et al. | May 1999 | A |
5915123 | Mirsky 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 |
5951679 | Anderson et al. | Sep 1999 | A |
5958031 | Kime | Sep 1999 | A |
5961628 | Nguyen et al. | Oct 1999 | A |
5970013 | Fischer et al. | Oct 1999 | A |
5978838 | Mohammed et al. | Nov 1999 | A |
5978874 | Singhal et al. | Nov 1999 | A |
5983274 | Hyder et al. | Nov 1999 | A |
5996068 | Dwyer, III et al. | Nov 1999 | A |
6002881 | York et al. | Dec 1999 | A |
6009505 | Thayer et al. | Dec 1999 | A |
6009515 | Steele, Jr. | Dec 1999 | A |
6012151 | Mano | Jan 2000 | A |
6014729 | Lannan et al. | Jan 2000 | A |
6023742 | Ebeling et al. | Feb 2000 | A |
6029170 | Garger et al. | Feb 2000 | A |
6029228 | Cai et al. | Feb 2000 | A |
6047334 | Langendorf et al. | Apr 2000 | A |
6058168 | Braband | May 2000 | A |
6058465 | Nguyen | 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 |
6076129 | Fenwick et al. | Jun 2000 | A |
6076158 | Sites et al. | Jun 2000 | A |
6079008 | Clery, III | Jun 2000 | A |
6079014 | Papworth et al. | Jun 2000 | A |
6085215 | Ramakrishnan et al. | Jul 2000 | A |
6085294 | Van Doren et al. | Jul 2000 | A |
6088783 | Morton | Jul 2000 | A |
6092127 | Taushek | Jul 2000 | A |
6092158 | Harriman et al. | Jul 2000 | A |
6092175 | Levy et al. | Jul 2000 | A |
6112016 | MacWilliams et al. | Aug 2000 | A |
6115811 | Steele, Jr. | Sep 2000 | A |
6134665 | Klein et al. | Oct 2000 | A |
6141348 | Muntz | Oct 2000 | A |
6141689 | Yasrebi | Oct 2000 | A |
6141765 | Sherman | Oct 2000 | A |
6144669 | Williams et al. | Nov 2000 | A |
6145054 | Mehotra et al. | Nov 2000 | A |
6145123 | Torrey et al. | Nov 2000 | A |
6157955 | Narad et al. | Dec 2000 | A |
6160562 | Chin et al. | Dec 2000 | A |
6173349 | Qureshi 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 |
6212602 | Wicki 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 |
6223277 | Karguth | Apr 2001 | B1 |
6223279 | Nishimura et al. | Apr 2001 | B1 |
6230119 | Mitchell | May 2001 | B1 |
6230261 | Henry et al. | May 2001 | B1 |
6233599 | Nation et al. | May 2001 | B1 |
6247025 | Bacon | Jun 2001 | B1 |
6247040 | Born et al. | Jun 2001 | B1 |
6247086 | Allingham | Jun 2001 | B1 |
6249829 | Bloks et al. | Jun 2001 | B1 |
6256713 | Audityan et al. | Jul 2001 | B1 |
6272616 | Fernando et al. | Aug 2001 | B1 |
6275505 | O'Laughlin et al. | Aug 2001 | B1 |
6278289 | Guccione et al. | Aug 2001 | B1 |
6279113 | Vaidya | Aug 2001 | B1 |
6289011 | Seo et al. | Sep 2001 | B1 |
6298370 | Tang et al. | Oct 2001 | B1 |
6307789 | Wolrich et al. | Oct 2001 | B1 |
6311256 | Halligan et al. | Oct 2001 | B2 |
6324624 | Wolrich et al. | Nov 2001 | B1 |
6345334 | Nakagawa et al. | Feb 2002 | B1 |
6347344 | Baker et al. | Feb 2002 | B1 |
6351808 | Joy et al. | Feb 2002 | B1 |
6356692 | Ido et al. | Mar 2002 | B1 |
6356962 | Kasper et al. | Mar 2002 | B1 |
6357016 | Rodgers et al. | Mar 2002 | B1 |
6360262 | Guenthner et al. | Mar 2002 | B1 |
6366978 | Middleton et al. | Apr 2002 | B1 |
6373848 | Allison et al. | Apr 2002 | B1 |
6378124 | Bates et al. | Apr 2002 | B1 |
6381668 | Lunteren | Apr 2002 | B1 |
6389449 | Nemirovsky et al. | May 2002 | B1 |
6393483 | Latif et al. | May 2002 | B1 |
6401149 | Dennin et al. | Jun 2002 | B1 |
6408325 | Shaylor | Jun 2002 | B1 |
6415338 | Habot | Jul 2002 | B1 |
6426940 | Seo et al. | Jul 2002 | B1 |
6427196 | Adiletta et al. | Jul 2002 | B1 |
6430626 | Witkowski et al. | Aug 2002 | B1 |
6430646 | Thusoo et al. | Aug 2002 | B1 |
6434145 | Opsasnick et al. | Aug 2002 | B1 |
6449289 | Quicksall | Sep 2002 | B1 |
6457078 | Magro et al. | Sep 2002 | B1 |
6463072 | Wolrich et al. | Oct 2002 | B1 |
6480943 | Douglas et al. | Nov 2002 | B1 |
6490642 | Thekkath et al. | Dec 2002 | B1 |
6496925 | Rodgers et al. | Dec 2002 | B1 |
6505229 | Turner et al. | Jan 2003 | B1 |
6505281 | Sherry | Jan 2003 | B1 |
6513089 | Hofmann et al. | Jan 2003 | B1 |
6523108 | James et al. | Feb 2003 | B1 |
6529999 | Keller et al. | Mar 2003 | B1 |
6532509 | Wolrich et al. | Mar 2003 | B1 |
6539439 | Nguyen et al. | Mar 2003 | B1 |
6552826 | Adler et al. | Apr 2003 | B2 |
6560667 | Wolrich et al. | May 2003 | B1 |
6570877 | Kloth et al. | May 2003 | B1 |
6577542 | Wolrich et al. | Jun 2003 | B2 |
6577625 | Chiou et al. | Jun 2003 | B1 |
6581124 | Anand | Jun 2003 | B1 |
6584522 | Wolrich et al. | Jun 2003 | B1 |
6587905 | Correale et al. | Jul 2003 | B1 |
6587906 | Wolrich et al. | Jul 2003 | B2 |
6606704 | Adiletta et al. | Aug 2003 | B1 |
6625654 | Wolrich et al. | Sep 2003 | B1 |
6628652 | Chrin et al. | Sep 2003 | B1 |
6629237 | Wolrich et al. | Sep 2003 | B2 |
6631430 | Wolrich et al. | Oct 2003 | B1 |
6631462 | Wolrich et al. | Oct 2003 | B1 |
6633938 | Rowlands et al. | Oct 2003 | B1 |
6643726 | Patkar et al. | Nov 2003 | B1 |
6654836 | Misra et al. | Nov 2003 | B1 |
6661794 | Wolrich et al. | Dec 2003 | B1 |
6661795 | Adas et al. | Dec 2003 | B1 |
6667920 | Wolrich et al. | Dec 2003 | B2 |
6668311 | Hooper et al. | Dec 2003 | B2 |
6668317 | Bernstein et al. | Dec 2003 | B1 |
6671761 | Kim | Dec 2003 | B2 |
6671827 | Guilford et al. | Dec 2003 | B2 |
6678248 | Haddock et al. | Jan 2004 | B1 |
6681300 | Wolrich et al. | Jan 2004 | B2 |
6684361 | Tong et al. | Jan 2004 | B2 |
6694380 | Wolrich et al. | Feb 2004 | B1 |
6697923 | Chen et al. | Feb 2004 | B2 |
6724767 | Chong et al. | Apr 2004 | B1 |
6725313 | Wingard et al. | Apr 2004 | B1 |
6728845 | Adiletta et al. | Apr 2004 | B2 |
6738831 | Wolrich et al. | May 2004 | B2 |
6754662 | Li | Jun 2004 | B1 |
6754795 | Chen et al. | Jun 2004 | B2 |
6781992 | Rana et al. | Aug 2004 | B1 |
6785843 | McRae et al. | Aug 2004 | B1 |
6823399 | Horiguchi et al. | Nov 2004 | B2 |
6826180 | Bergantino et al. | Nov 2004 | B1 |
6847645 | Potter et al. | Jan 2005 | B1 |
6868476 | Rosenbluth et al. | Mar 2005 | B2 |
6889319 | Rodgers et al. | May 2005 | B1 |
6941438 | Wolrich et al. | Sep 2005 | B2 |
6958973 | Chen et al. | Oct 2005 | B1 |
7028118 | Smith et al. | Apr 2006 | B2 |
7051329 | Boggs et al. | May 2006 | B1 |
7089379 | Sharma et al. | Aug 2006 | B1 |
7216204 | Rosenbluth et al. | May 2007 | B2 |
7225281 | Rosenbluth et al. | May 2007 | B2 |
7337275 | Wolrich et al. | Feb 2008 | B2 |
20010043614 | Viswanadham et al. | Nov 2001 | A1 |
20020053017 | Adiletta et al. | May 2002 | A1 |
20020056037 | Wolrich et al. | May 2002 | A1 |
20030012198 | Kaganoi et al. | Jan 2003 | A1 |
20030041216 | Rosenbluth et al. | Feb 2003 | A1 |
20030041228 | Rosenbluth et al. | Feb 2003 | A1 |
20030046488 | Rosenbluth et al. | Mar 2003 | A1 |
20030065862 | Wyland | Apr 2003 | A1 |
20030078950 | Abernathy et al. | Apr 2003 | A1 |
20030105899 | Rosenbluth et al. | Jun 2003 | A1 |
20030145155 | Wolrich et al. | Jul 2003 | A1 |
20030145159 | Adiletta et al. | Jul 2003 | A1 |
20030191866 | Wolrich et al. | Oct 2003 | A1 |
20040034743 | Wolrich et al. | Feb 2004 | A1 |
20040039895 | Wolrich et al. | Feb 2004 | A1 |
20040054880 | Bernstein 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 |
20040098496 | Wolrich et al. | May 2004 | A1 |
20040109369 | Wolrich et al. | Jun 2004 | A1 |
20040139290 | Wolrich et al. | Jul 2004 | A1 |
20040205747 | Bernstein et al. | Oct 2004 | A1 |
20050132132 | Rosenbluth et al. | Jun 2005 | A1 |
20050185437 | Wolrich et al. | Aug 2005 | A1 |
Number | Date | Country |
---|---|---|
0 379 709 | Aug 1990 | EP |
0 464 715 | Jan 1992 | EP |
0 633 678 | Jan 1995 | EP |
0 745 933 | Dec 1996 | EP |
0 809 180 | Nov 1997 | EP |
0 953 897 | Nov 1999 | EP |
1 191 445 | Mar 2002 | EP |
2 344 665 | Jun 2000 | GB |
59-111533 | Jun 1984 | JP |
00374967 | Nov 1999 | TW |
WO 9415287 | Jul 1994 | WO |
WO 9738372 | Oct 1997 | WO |
WO 0033195 | Jun 2000 | WO |
WO 0101614 | Jan 2001 | WO |
0116782 | Mar 2001 | WO |
WO 0115718 | Mar 2001 | WO |
WO 0116697 | Mar 2001 | WO |
WO 0116698 | Mar 2001 | WO |
WO 0116702 | Mar 2001 | WO |
WO 0116703 | Mar 2001 | WO |
WO 0116713 | Mar 2001 | WO |
WO 0116714 | Mar 2001 | WO |
WO 0116715 | Mar 2001 | WO |
WO 0116716 | Mar 2001 | WO |
WO 0116718 | Mar 2001 | WO |
WO 0116722 | Mar 2001 | WO |
WO 0116758 | Mar 2001 | WO |
WO 0116769 | Mar 2001 | WO |
WO 0116770 | Mar 2001 | WO |
WO 0116782 | Mar 2001 | WO |
WO 0118646 | Mar 2001 | WO |
WO 0141530 | Jun 2001 | WO |
WO 0148596 | Jul 2001 | WO |
WO 0148599 | Jul 2001 | WO |
WO 0148606 | Jul 2001 | WO |
WO 0148619 | Jul 2001 | WO |
WO 0150247 | Jul 2001 | WO |
WO 0150679 | Jul 2001 | WO |
Number | Date | Country | |
---|---|---|---|
20030145155 A1 | Jul 2003 | US |