US20030105799A1 - Distributed processing architecture with scalable processing layers - Google Patents

Distributed processing architecture with scalable processing layers Download PDF

Info

Publication number
US20030105799A1
US20030105799A1 US10/004,753 US475301A US2003105799A1 US 20030105799 A1 US20030105799 A1 US 20030105799A1 US 475301 A US475301 A US 475301A US 2003105799 A1 US2003105799 A1 US 2003105799A1
Authority
US
United States
Prior art keywords
processing
data
media
memory
communication
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.)
Abandoned
Application number
US10/004,753
Inventor
Shoab Khan
Muhammad Rahmatullah
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.)
Avaz Networks Inc
Quartics Inc
Original Assignee
Avaz Networks Inc
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
Priority to US10/004,753 priority Critical patent/US20030105799A1/en
Application filed by Avaz Networks Inc filed Critical Avaz Networks Inc
Priority to US10/084,559 priority patent/US20030112758A1/en
Assigned to AVAZ NETWORKS, INC. reassignment AVAZ NETWORKS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: KHAN, SHOAB AHMAD, RAHMATULLAH, MUHAMMAD MOHSIN
Publication of US20030105799A1 publication Critical patent/US20030105799A1/en
Assigned to QUARTICS, INC. reassignment QUARTICS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CMA BUSINESS CREDIT SERVICES ON BEHALF OF AVAZ NETWORKS, INC.
Priority to US11/390,558 priority patent/US7516320B2/en
Assigned to HERCULES TECHNOLOGY GROWTH CAPITAL, INC., COMERICA BANK reassignment HERCULES TECHNOLOGY GROWTH CAPITAL, INC. SECURITY AGREEMENT Assignors: QUARTICS, INC.
Assigned to FV INVESTORS III, L.P., FOUNDATION CAPITAL IV, L.P., FOCUS VENTURES III, L.P., THE SAFI QURESHEY FAMILY TRUST DATED MAY 21, 1984 reassignment FV INVESTORS III, L.P. SECURITY AGREEMENT Assignors: QUARTICS, INC.
Priority to US12/335,644 priority patent/US20090328048A1/en
Priority to US12/350,682 priority patent/US7835280B2/en
Priority to US12/901,479 priority patent/US20110141889A1/en
Assigned to GIRISH PATEL AND PRAGATI PATEL, TRUSTEE OF THE GIRISH PATEL AND PRAGATI PATEL FAMILY TRUST DATED MAY 29, 1991 reassignment GIRISH PATEL AND PRAGATI PATEL, TRUSTEE OF THE GIRISH PATEL AND PRAGATI PATEL FAMILY TRUST DATED MAY 29, 1991 SECURITY AGREEMENT Assignors: QUARTICS, INC.
Assigned to GREEN SEQUOIA LP, MEYYAPPAN-KANNAPPAN FAMILY TRUST reassignment GREEN SEQUOIA LP SECURITY AGREEMENT Assignors: QUARTICS, INC.
Assigned to SEVEN HILLS GROUP USA, LLC, HERIOT HOLDINGS LIMITED, AUGUSTUS VENTURES LIMITED, CASTLE HILL INVESTMENT HOLDINGS LIMITED, SIENA HOLDINGS LIMITED reassignment SEVEN HILLS GROUP USA, LLC INTELLECTUAL PROPERTY SECURITY AGREEMENT Assignors: QUARTICS, INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)

Definitions

  • the present invention relates generally to a system on chip architecture and, more specifically, to a scalable system on chip architecture having distributed processing units and memory banks in a plurality of processing layers.
  • Media communication devices comprise hardware and software systems that utilize interdependent processes to enable the processing and transmission of analog and digital signals substantially seamlessly across and between circuit switched and packet switched networks.
  • a voice over packet gateway enables the transmission of human voice from a conventional public switched network to a packet switched network, possibly traveling simultaneously over a single packet network line with both fax information and modem data, and back again.
  • Benefits of unifying communication of different media across different networks include cost savings and the delivery of new and/or improved communication services such as web-enabled call centers for improved customer support and more efficient personal productivity tools.
  • Such media over packet communication devices require substantial, scalable processing power with sophisticated software controls and applications to enable the effective transmission of data from circuit switched to packet switched networks and back again.
  • Exemplary products utilize at least one communication processor, such as Texas Instrument's 48-channel digital signal processor (DSP) chip, to deploy a software architecture, such as the system provided by Telogy Networks, which, in combination, offer features such as adaptive voice activity detection, adaptive comfort noise generation, adaptive jitter buffer, industry standard codecs, echo cancellation, tone detection and generation, network management support, and packetization.
  • DSP digital signal processor
  • One form of a media communication device uses multiple DSPs to perform the conversion between voice data signals and packet-based digital data.
  • Each of the general-purpose DSPs performs tasks such as encoding, decoding, echo cancellation, and so forth; however, the use of general-purpose DSPs has several disadvantages.
  • a general-purpose DSP is not optimized for performing any particular function. Therefore, a DSP typically includes a large number of functional units.
  • Exemplary processors are disclosed in U.S. Pat. Nos. 6,226,735, 6,122,719, 6,108,760, 5,956,518, and 5,915,123.
  • the patents are directed to a hybrid digital signal processor (DSP)/RISC chip that has an adaptive instruction set, making it possible to reconfigure the interconnect and the function of a series of basic building blocks, like multipliers and arithmetic logic units (ALUs), on a cycle-by-cycle basis.
  • DSP digital signal processor
  • ALUs arithmetic logic units
  • a distributed processing layer processor comprises a plurality of processing layers each in communication with a processing layer controller and central direct memory access controller via communication data buses and processing layer interfaces.
  • a plurality of pipelined processing units are in communication with a plurality of program memories and data memories.
  • each PU should be capable of accessing at least one program memory and one data memory.
  • the processing layer controller manages the scheduling of tasks and distribution of processing tasks to each processing layer.
  • the DMA controller is a multi-channel DMA unit for handling the data transfers between the local memory buffer PUs and external memories, such as the SDRAM.
  • each processing layer there are a plurality of pipelined PUs specially designed for conducting a defined set of processing tasks.
  • the PUs are not general-purpose processors and can not be used to conduct any processing task.
  • a set of distributed memory banks that enable the local storage of instruction sets, processed information and other data required to conduct an assigned processing task.
  • One application of the present invention is in a media gateway that is designed to enable the communication of media across circuit switched and packet switched networks.
  • the hardware system architecture of the gateway is comprised of a plurality of DPLPs, referred to as Media Engines, that are interconnected with a Host Processor and Packet Engine which, in turn, is in communication with interfaces to networks, preferably as asynchronous transfer mode (ATM) physical device or gigabit media independent interface (GMII) physical device.
  • ATM synchronous transfer mode
  • GMII gigabit media independent interface
  • FIG. 1 is a block diagram of an embodiment of the distributed processing layer processor
  • FIG. 2 a is a block diagram of a first embodiment of a hardware system architecture for a media gateway
  • FIG. 2 b is a block diagram of a second embodiment of a hardware system architecture for a media gateway
  • FIG. 3 is a diagram of a packet having a header and user data
  • FIG. 4 is a block diagram of a third embodiment of a hardware system architecture for a media gateway
  • FIG. 5 is a block diagram of one logical division of the software system of the present invention.
  • FIG. 6 is a block diagram of a first physical implementation of the software system of FIG. 5;
  • FIG. 7 is a block diagram of a second physical implementation of the software system of FIG. 5;
  • FIG. 8 is a block diagram of a third physical implementation of the software system of FIG. 5;
  • FIG. 9 is a block diagram of a first embodiment of the media engine component of the hardware system of the present invention.
  • FIG. 10 is a block diagram of a preferred embodiment of the media engine component of the hardware system of the present invention.
  • FIG. 10 a is a block diagram representation of a preferred architecture for the media layer component of the media engine of FIG. 10;
  • FIG. 11 is a block diagram representation of a first preferred processing unit
  • FIG. 12 is a time-based schematic of the pipeline processing conducted by the first preferred processing unit
  • FIG. 13 is a block diagram representation of a second preferred processing unit
  • FIG. 13 a is a time-based schematic of the pipeline processing conducted by the second preferred processing unit
  • FIG. 14 is a block diagram representation of a preferred embodiment of the packet processor component of the hardware system of the present invention.
  • FIG. 15 is a schematic representation of one embodiment of the plurality of network interfaces in the packet processor component of the hardware system of the present invention.
  • FIG. 16 is a block diagram of a plurality of PCI interfaces used to facilitate control and signaling functions for the packet processor component of the hardware system of the present invention
  • FIG. 17 is a first exemplary flow diagram of data communicated between components of the software system of the present invention.
  • FIG. 17 a is a second exemplary flow diagram of data communicated between components of the software system of the present invention.
  • FIG. 18 is a schematic diagram of logical division of the software system of the present invention.
  • FIG. 19 is a schematic diagram of preferred components comprising the media processing subsystem of the software system of the present invention.
  • FIG. 20 is a schematic diagram of preferred components comprising the packetization processing subsystem of the software system of the present invention.
  • FIG. 21 is a schematic diagram of preferred components comprising the signaling subsystem of the software system of the present invention.
  • FIG. 22 is a block diagram of a host application operative on a physical DSP.
  • FIG. 23 is a block diagram of a host application operative on a virtual DSP.
  • the present invention is a system on chip architecture having scalable, distributed processing and memory capabilities through a plurality of processing layers.
  • One embodiment of the present invention is a novel media gateway, designed to enable the communication of media across circuit switched and packet switched networks, and encompasses novel hardware and software methods and systems.
  • the present invention will presently be described with reference to the aforementioned drawings. Headers will be used for purposes of clarity and are not meant to limit or otherwise restrict the disclosures made herein. It will further be appreciated, by those skilled in the art, that use of the term “media” is meant to broadly encompass substantially all types of data that could be sent across a packet switched or circuit switched network, including, but not limited to, voice, video, data, and fax traffic. Where arrows are utilized in the drawings, it would be appreciated by one of ordinary skill in the art that the arrows represent the interconnection of elements and/or components via buses or any other type of communication channel.
  • the DPLP 100 comprises a plurality of processing layers 105 each in communication with a processing layer controller 107 and central direct memory access (DMA) controller 110 via communication data buses and processing layer interfaces 115 .
  • Each processing layer 105 is in communication with a CPU interface 106 , which, in turn, is in communication with a CPU 104 .
  • a plurality of pipelined processing units (PUs) 130 are in communication with a plurality of program memories 135 and data memories 140 , via communication data buses.
  • each program memory 135 and data memory 140 can be accessed by at least one PU 130 via data buses.
  • Each of the PUs 130 , program memories 135 , and data memories 140 is in communication with an external memory 147 via communication data buses.
  • the processing layer controller 107 manages the scheduling of tasks and distribution of processing tasks to each processing layer 105 .
  • the processing layer controller 107 arbitrates data and program code transfer requests to and from the program memories 135 and data memories 140 in a round robin fashion. On the basis of this arbitration, the processing layer controller 107 fills the data pathways that define how units directly access memory, namely the DMA channels [not shown].
  • the processing layer controller 107 is capable of performing instruction decoding to route an instruction according to its dataflow and keep track of the request states for all PUs 130 , such as the state of a read-in request, a write-back request and an instruction forwarding.
  • the processing layer controller 107 is further capable of conducting interface related functions, such as programming DMA channels, starting signal generation, maintaining page states for PUs 130 in each processing layer 105 , decoding of scheduler instructions, and managing the movement of data from and into the task queues of each PU 130 .
  • interface related functions such as programming DMA channels, starting signal generation, maintaining page states for PUs 130 in each processing layer 105 , decoding of scheduler instructions, and managing the movement of data from and into the task queues of each PU 130 .
  • the DMA controller 110 is a multi-channel DMA unit for handling the data transfers between the local memory buffer PUs and external memories, such as the SDRAM.
  • Each processing layer 105 has independent DMA channels allocated for transferring data to and from the PU local memory buffers.
  • there is an arbitration process such as a single level of round robin arbitration, between the channels within the DMA to access the external memory.
  • the DMA controller 110 provides hardware support for round robin request arbitration across the PUs 130 and processing layers 105 . Each DMA channel functions independently of each other.
  • the DMA controller 110 is preferably further capable of arbitrating priority for program code fetch requests, conducting link list traversal and DMA channel information generation, and performing DMA channel prefetch and done signal generation.
  • the processing layer controller 107 and DMA controller 110 are in communication with a plurality of communication interfaces 160 , 190 through which control information and data transmission occurs.
  • the DPLP 100 includes an external memory interface (such as a SDRAM interface) 170 that is in communication with the processing layer controller 107 and DMA controller 110 and is in communication with an external memory 147 .
  • each processing layer 105 there are a plurality of pipelined PUs 130 specially designed for conducting a defined set of processing tasks.
  • the PUs are not general-purpose processors and can not be used to conduct any processing task.
  • a survey and analysis of specific processing tasks yielded certain functional unit commonalities that, when combined, yield a specialized PU capable of optimally processing the universe of those specialized processing tasks.
  • the instruction set architecture of each PU yields compact code. Increased code density results in a decrease in required memory and, consequently, a decrease in required area, power, and memory traffic.
  • each processing layer it is preferred that, within each processing layer, the PUs 130 operate on tasks scheduled by the processing layer controller 107 through a first-in, first-out (FIFO) task queue [not shown].
  • FIFO first-in, first-out
  • the pipeline architecture improves performance. Pipelining is an implementation technique whereby multiple instructions are overlapped in execution. In a computer pipeline, each step in the pipeline completes a part of an instruction. Like an assembly line, different steps are completing different parts of different instructions in parallel. Each of these steps is called a pipe stage or a data segment. The stages are connected on to the next one to form a pipe. Within a processor, instructions enter the pipe at one end, progress through the stages, and exit at the other end. The throughput of an instruction pipeline is determined by how often an instruction exits the pipeline.
  • each processing layer 105 is a set of distributed memory banks 140 that enable the local storage of instruction sets, processed information and other data required to conduct an assigned processing task.
  • the DPLP 100 remains flexible and, in production, delivers high yields.
  • certain DSP chips are not produced with more than 9 megabytes of memory on a single chip because as memory blocks increase, the probability of bad wafers (due to corrupted memory blocks) also increases.
  • the DPLP 100 can be produced with 12 megabytes or more of memory by incorporating redundant processing layers 105 .
  • the ability to incorporate redundant processing layers 105 enables the production of chips with larger amounts of memory because, if a set of memory blocks are bad, rather than throw the entire chip away, the discrete processing layers within which the corrupted memory units are found can be set aside and the other processing layers may be used instead.
  • the scalable nature of the multiple processing layers allows for redundancy and, consequently, higher production yields.
  • the layered architecture of the present invention is not limited to a specific number of processing layers, certain practical limitations may restrict the number of processing layers that can be incorporated into a single DPLP.
  • One of ordinary skill in the art would appreciate how to determine the processing limitations imposed by external conditions, such as traffic and bandwidth constraints on the system, that restrict the feasible number of processing layers.
  • the present invention can be used to enable the operation of a novel media gateway.
  • the hardware system architecture of the gateway is comprised of a plurality of DPLPs, referred to as Media Engines, that are in communication with a data bus and interconnected with a Host Processor or a Packet Engine which, in turn, is in communication with interfaces to networks, preferably an asynchronous transfer mode (ATM) physical device or gigabit media independent interface (GMII) physical device.
  • ATM asynchronous transfer mode
  • GMII gigabit media independent interface
  • a data bus 205 a is connected to interfaces 210 a existent on a first novel Media Engine Type I 215 a and on a second novel Media Engine Type I 220 a.
  • the first novel Media Engine Type I 215 a and second novel Media Engine Type I 220 a are connected through a second set of communication buses 225 a to a novel Packet Engine 230 a which, in turn, is connected through interfaces 235 a to outputs 240 a, 245 a .
  • each of the Media Engines Type I 215 a, 220 a is in communication with a SRAM 246 a and SDRAM 247 a.
  • the data bus 205 a be a time-division multiplex (TDM) bus.
  • TDM bus is a pathway for the transmission of a number of separate voice, fax, modem, video, and/or other data signals simultaneously over a single communication medium.
  • the separate signals are transmitted by interleaving a portion of each signal with each other, thereby enabling one communications channel to handle multiple separate transmissions and avoiding having to dedicate a separate communication channel to each transmission.
  • Existing networks use TDM to transmit data from one communication device to another.
  • the interfaces 210 a existent on the first novel Media Engine Type I 215 a and second novel Media Engine Type I 220 a comply with H.100, a hardware specification that details the necessary information to implement a CT bus interface at the physical layer for the PCI computer chassis card slot, independent of software specifications.
  • the CT bus defines a single isochronous communications bus across certain PC chassis card slots and allows for the relatively fluid inter-operation of components. It is appreciated that interfaces abiding by different hardware specifications could be used to receive signals from the data bus 205 a.
  • each of the two novel Media Engines Type I 215 a, 220 a can support a plurality of channels for processing media, such as voice.
  • the specific number of channels supported is dependent upon the features required, such as the extent of echo cancellation, and type of codec supported.
  • each Media Engine Type I 215 a, 220 a can support the processing of around 256 voice channels or more.
  • Each Media Engine Type I 215 a , 220 a is in communication with the Packet Engine 230 a through a communication bus 225 a, preferably a peripheral component interconnect (PCI) communication bus.
  • PCI peripheral component interconnect
  • a PCI communication bus serves to deliver control information and data transfers between the Media Engine Type I chip 215 a, 220 a and the Packet Engine chip 230 a. Because Media Engine Type I 215 a, 220 a was designed to support the processing of lower data volumes, relative to Media Engine Type II described below, a single PCI communication bus can effectively support the transfer of both control and data between the designated chips. It is appreciated, however, that where data traffic becomes too great, the PCI communication bus must be supplemented with a second inter-chip communication bus.
  • the Packet Engine 230 a receives processed data from each of the two Media Engines Type I 215 a, 220 a via the communication bus 225 a. While theoretically able to connect to a plurality of Media Engines Type I, it is preferred that, for this embodiment, the Packet Engine 230 a be in communication with up to two Media Engines Type I 215 a , 220 a. As will be further described below, the Packet Engine 230 a provides cell and packet encapsulation for data channels, at or around 2016 channels in a preferred embodiment, quality of service functions for traffic management, tagging for differentiated services and multi-protocol label switching, and the ability to bridge cell and packet networks. While it is preferred to use the Packet Engine 230 a, it can be replaced with a different host processor, provided that the host processor is capable of performing the above-described functions of the Packet Engine 230 a.
  • the Packet Engine 230 a is in communication with an ATM physical device 240 a and GMII physical device 245 a.
  • the ATM physical device 240 a is capable of receiving processed and packetized data, as passed from the Media Engines Type I 215 a, 220 a through the Packet Engine 230 a, and transmitting it through a network operating on an asynchronous transfer mode (an ATM network).
  • an ATM network automatically adjusts the network capacity to meet the system needs and can handle voice, modem, fax, video and other data signals.
  • Each ATM data cell, or packet consists of five octets of header field plus 48 octets for user data.
  • the header contains data that identifies the related cell, a logical address that identifies the routing, header error correction bits, plus bits for priority handling and network management functions.
  • An ATM network is a wideband, low delay, connection-oriented, packet-like switching and multiplexing network that allows for relatively flexible use of the transmission bandwidth.
  • the GMII physical device 245 a operates under a standard for the receipt and transmission of a certain amount of data, irrespective of the media types involved.
  • OC-1 Optical Carrier Level 1
  • STS-1 synchronous transport signal
  • STS-1 synchronous transport signal
  • Higher optical carrier levels are direct multiples of OC-1, namely OC-3 is three times the rate of OC-1.
  • other configurations of the present invention could be used to support voice processing at OC-12.
  • FIG. 2 b an embodiment supporting data rates up to OC-3 is shown, referred to herein as an OC-3 Tile 200 b.
  • a data bus 205 b is connected to interfaces 210 b existent on a first novel Media Engine Type II 215 b and on a second novel Media Engine Type II 220 b.
  • the first novel Media Engine Type II 215 b and second novel Media Engine Type II 220 b are connected through a second set of communication buses 225 b, 227 b to a novel Packet Engine 230 b which, in turn, is connected through interfaces 260 b, 265 b to outputs 240 b, 245 b and through interface 250 b to a Host Processor 255 b.
  • the data bus 205 b be a time-division multiplex (TDM) bus and that the interfaces 210 b existent on the first novel Media Engine Type II 215 b and second novel Media Engine Type II 220 b comply with the H.100 a hardware specification. It is again appreciated that interfaces abiding by different hardware specifications could be used to receive signals from the data bus 205 b.
  • TDM time-division multiplex
  • Each of the two novel Media Engines Type II 215 b, 220 b can support a plurality of channels for processing media, such as voice.
  • the specific number of channels supported is dependent upon the features required, such as the extent of echo cancellation, and type of codec implemented.
  • codecs having relatively low processing power requirements, such as G.711, and where the extent of echo cancellation required is 128 milliseconds each Media Engine Type II can support the processing of approximately 2016 channels of voice. With two Media Engines Type II providing the processing power, this configuration is capable of supporting data rates of OC-3.
  • the Media Engines Type II 215 b, 220 b are implementing a codec requiring higher processing power, such as G.729A, the number of supported channels decreases.
  • the number of supported channels decreases from 2016 per Media Engine Type II when supporting G.711 to approximately 672 to 1024 channels when supporting G.729A.
  • an additional Media Engine Type II can be connected to the Packet Engine 230 b via the common communication buses 225 b, 227 b.
  • Each Media Engine Type II 215 b, 220 b is in communication with the Packet Engine 230 b through communication buses 225 b, 227 b, preferably a peripheral component interconnect (PCI) communication bus 225 b and a UTOPIA II/POS II communication bus 227 b.
  • PCI peripheral component interconnect
  • the PCI communication bus 225 b must be supplemented with a second communication bus 227 b.
  • the second communication bus 227 b is a UTOPIA II/POS-II bus and serves as the data path between Media Engines Type II 215 b, 220 b and the Packet Engine 230 b.
  • a POS (Packet over SONET) bus represents a high-speed means for transmitting data through a direct connection, allowing the passing of data in its native format without the addition of any significant level of overhead in the form of signaling and control information.
  • UTOPIA Universal Test and Operations Interface for ATM refers to an electrical interface between the transmission convergence and physical medium dependent sublayers of the physical layer and acts as the interface for devices connecting to an ATM network.
  • the physical interface is configured to operate in POS-II mode, which allows for variable size data frame transfers.
  • Each packet is transferred using POS-II control signals to explicitly define the start and end of a packet.
  • each packet 300 contains a header 305 with a plurality of information fields and user data 310 .
  • each header 305 contains information fields including packet type 315 (e.g., RTP, raw encoded voice, AAL2), packet length 320 (total length of the packet including information fields), and channel identification 325 (identifies the physical channel, namely the TDM slot for which the packet is intended or from which the packet came).
  • packet type 315 e.g., RTP, raw encoded voice, AAL2
  • packet length 320 total length of the packet including information fields
  • channel identification 325 identifies the physical channel, namely the TDM slot for which the packet is intended or from which the packet came).
  • coder/decoder type 330 When dealing with encoded data transfers between a Media Engine Type II 215 b, 220 b and Packet Engine 230 b, it is further preferred to include coder/decoder type 330 , sequence number 335 , and voice activity detection decision 340 in the header 305 .
  • the Packet Engine 230 b is in communication with the Host Processor 255 b through a PCI target interface 250 b.
  • the Packet Engine 230 b preferably includes a PCI to PCI bridge [not shown] between the PCI interface 226 b to the PCI communication bus 225 b and the PCI target interface 250 b.
  • the PCI to PCI bridge serves as a link for communicating messages between the Host Processor 255 b and two Media Engines Type II 215 b, 220 b.
  • the novel Packet Engine 230 b receives processed data from each of the two Media Engines Type II 215 b, 220 b via the communication buses 225 b, 227 b. While theoretically able to connect to a plurality of Media Engines Type II, it is preferred that the Packet Engine 230 b be in communication with no more than three Media Engines Type II 215 b, 220 b [only two are shown in FIG. 2 b].
  • Packet Engine 230 b provides cell and packet encapsulation for data channels, up to 2048 channels when implementing a G.711 codec, quality of service functions for traffic management, tagging for differentiated services and multi-protocol label switching, and the ability to bridge cell and packet networks.
  • the Packet Engine 230 b is in communication with an ATM physical device 240 b and GMII physical device 245 b through a UTOPIA II/POS II compatible interface 260 b and GMII compatible interface respectively 265 b.
  • the Packet Engine 230 b also preferably has another GMII interface [not shown] in the MAC layer of the network, referred to herein as the MAC GMII interface.
  • MAC is a media specific access control protocol defining the lower half of the data link layer that defines topology dependent access control protocols for industry standard local area network specifications.
  • the Packet Engine 230 b is designed to enable ATM-IP internetworking. Telecommunication service providers have built independent networks operating on an ATM or IP protocol basis. Enabling ATM-IP internetworking permits service providers to support the delivery of substantially all digital services across a single networking infrastructure, thereby reducing the complexities introduced by having multiple technologies/protocols operative throughout a service provider's entire network.
  • the Packet Engine 230 b is therefore designed to enable a common network infrastructure by providing for the internetworking between ATM modes and IP modes.
  • the novel Packet Engine 230 b supports the internetworking of ATM AALs (ATM Adaptation Layers) to specific IP protocols.
  • AAL accomplishes conversion from the higher layer, native data format and service specifications into the ATM layer.
  • the process includes segmentation of the original and larger set of data into the size and format of an ATM cell, which comprises 48 octets of data payload and 5 octets of overhead.
  • the AAL accomplishes reassembly of the data.
  • AAL-1 functions in support of Class A traffic that is connection-oriented Constant Bit Rate (CBR), time-dependent traffic, such as uncompressed, digitized voice and video, and which is stream-oriented and relatively intolerant of delay.
  • AAL-2 functions in support of Class B traffic that is connection-oriented Variable Bit Rate (VBR) isochronous traffic requiring relatively precise timing between source and sink, such as compressed voice and video.
  • AAL-5 functions in support of Class C traffic which is Variable Bit Rate (VBR) delay-tolerant connection-oriented data traffic requiring relatively minimal sequencing or error detection support, such as signaling and control data.
  • VBR Variable Bit Rate
  • IP Internet Protocol
  • RTP Realtime Transport Protocol
  • TCP Transmission Control Protocol
  • TCP is a transport layer, connection oriented, end-to-end protocol that provides relatively reliable, sequenced, and unduplicated delivery of bytes to a remote or a local user.
  • UDP User Datagram Protocol
  • FIG. 2 b it is preferred that ATM AAL-1 be internetworked with RTP, UDP, and IP protocols, AAL-2 be internetworked with UDP and IP protocols, and AAL-5 be internetworked with UDP and IP protocols or TCP and IP protocols.
  • OC-3 tiles as presented in FIG. 2 b, can be interconnected to form a tile supporting higher data rates.
  • four OC-3 tiles 405 can be interconnected, or “daisy chained”, together to form an OC-12 tile 400 .
  • Daisy chaining is a method of connecting devices in a series such that signals are passed through the chain from one device to the next. By enabling daisy chaining, the present invention provides for currently unavailable levels of scalability in data volume support and hardware implementation.
  • a Host Processor 455 is connected via communication buses 425 , preferably PCI communication buses, to the PCI interface 435 on each of the OC-3 tiles 405 .
  • Each OC-3 tile 405 has a TDM interface 460 that operates via a TDM communication bus 465 to receive TDM signals via a TDM interface [not shown]. Each OC-3 tile 405 is further in communication with an ATM physical device 490 through a communication bus 495 connected to the OC-3 tile 405 through a UTOPIA II/POS II interface 470 . Data received by an OC-3 tile 405 and not processed, because, for example, the data packet is directed toward a specific packet engine address that was not found in that specific OC-3 tile 405 , is sent to the next OC-3 tile 405 in the series via the PHY GMII interface 410 and received by the next OC-3 tile via the MAC GMII interface 413 .
  • Enabling daisy chaining eliminates the need for an external aggregator to interface the GMII interfaces on each of the OC-3 tiles in order to enable integration.
  • the final OC-3 tile 405 is in communication with a GMII physical device 417 via the PHY GMII interface 410 .
  • FIG. 5 a logical division of the software system 500 is shown.
  • the software system 500 is divided into three subsystems, a Media Processing Subsystem 505 , a Packetization Subsystem 540 , and a Signaling/Management Subsystem 570 .
  • Each subsystem 505 , 540 , 570 further comprises a series of modules 520 designed to perform different tasks in order to effectuate the processing and transmission of media. It is preferred that the modules 520 be designed in order to encompass a single core task that is substantially non-divisible.
  • exemplary modules include echo cancellation, codec implementation, scheduling, IP-based packetization, and ATM-based packetization, among others. The nature and functionality of the modules 520 deployed in the present invention will be further described below.
  • the logical system of FIG. 5 can be physically deployed in a number of ways, depending on processing needs, due, in part, to the novel software architecture, to be described below.
  • one physical embodiment of the software system described in FIG. 5 is to be on a single chip 600 , where the media processing block 610 , packetization block 620 , and management block 630 are all operative on the same chip. If processing needs increase, thereby requiring more chip power be dedicated to media processing, the software system can be physically implemented such that the media processing block 710 and packetization block 720 operate on a DSP 715 that is in communication via a data bus 770 with the management block 730 that operates on a separate host processor 735 , as depicted in FIG. 7.
  • the media processing block 810 and packetization block 820 can be implemented on separate DSPs 860 , 865 and communicate via data buses 870 with each other and with the management block 830 that operates on a separate host processor 835 , as depicted in FIG. 8.
  • the modules can be physically separated onto different processors to enable for a high degree of system scalability.
  • each OC-3 tile is configured to perform media processing and packetization tasks.
  • the IC card has four OC-3 tiles in communication via data buses.
  • the OC-3 tiles each have three Media Engine II processors in communication via interchip communication buses with a Packet Engine processor.
  • the Packet Engine processor has a MAC and PHY interface by which communications external to the OC-3 tiles are performed.
  • the PHY interface of the first OC-3 tile is in communication with the MAC interface of the second OC-3 tile.
  • each Media Engine II processor implements the Media Processing Subsystem of the present invention, shown in FIG. 5 as 505 .
  • Each Packet Engine processor implements the Packetization Subsystem of the present invention, shown in FIG. 5 as 540 .
  • the host processor implements the Management Subsystem, shown in FIG. 5 as 570 .
  • Both Media Engine I and Media Engine II are types of DPLPs and therefore comprise a layered architecture wherein each layer encodes and decodes up to N channels of voice, fax, modem, or other data depending on the layer configuration.
  • Each layer implements a set of pipelined processing units specially designed through substantially optimal hardware and software partitioning to perform specific media processing functions.
  • the processing units are special-purpose digital signal processors that are each optimized to perform a particular signal processing function or a class of functions.
  • Media Engine I 900 comprises a plurality of Media Layers 905 each in communication with a central direct memory access (DMA) controller 910 via communication data buses 920 .
  • DMA direct memory access
  • Each Media Layer 905 further comprises an interface to the DMA 925 interconnected with the communication data buses 920 .
  • the DMA interface 925 is in communication with each of a plurality of pipelined processing units (PUs) 930 via communication data buses 920 and a plurality of program and data memories 940 , via communication data buses 920 , that are situated between the DMA interface 925 and each of the PUs 930 .
  • the program and data memories 940 are also in communication with each of the PUs 930 via data buses 920 .
  • each PU 930 can access at least one program memory and at least one data memory unit 940 .
  • FIFO first-in, first-out
  • the layered architecture of the present invention is not limited to a specific number of Media Layers, certain practical limitations may restrict the number of Media Layers that can be stacked into a single Media Engine I. As the number of Media Layers increase, the memory and device input/output bandwidth may increase to such an extent that the memory requirements, pin count, density, and power consumption are adversely affected and become incompatible with application or economic requirements. Those practical limitations, however, do not represent restrictions on the scope and substance of the present invention.
  • Media Layers 905 are in communication with an interface to the central processing unit 950 (CPU IF) through communication buses 920 .
  • the CPU IF 950 transmits and receives control signals and data from an external scheduler 955 , the DMA controller 910 , a PCI interface (PCI IF) 960 , a SRAM interface (SRAM IF) 975 , and an interface to an external memory, such as an SDRAM interface (SDRAM IF) 970 through communication buses 920 .
  • the PCI IF 960 is preferably used for control signals.
  • the SDRAM IF 970 connects to a synchronized dynamic random access memory module whereby the memory access cycles are synchronized with the CPU clock in order to eliminate wait time associated with memory fetching between random access memory (RAM) and the CPU.
  • the SDRAM IF 970 that connects the processor with the SDRAM supports 133 MHz synchronous DRAM and asynchronous memory. It supports one bank of SDRAM (64 Mbit/256 Mbit to 256 MB maximum) and 4 asynchronous devices (8/16/32 bit) with a data path of 32 bits and fixed length as well as undefined length block transfers and accommodates back-to-back transfers. Eight transactions may be queued for operation.
  • the SDRAM [not shown] contains the states of the PUs 930 .
  • One of ordinary skill in the art would appreciate that, although not preferred, other external memory configurations and types could be selected in place of the SDRAM and, therefore, that another type of memory interface could be used in place of the SDRAM IF 970 .
  • the SDRAM IF 970 is further in communication with the PCI IF 960 , DMA controller 910 , the CPU IF 950 , and, preferably, the SRAM interface (SRAM IF) 975 through communication buses 920 .
  • the SRAM [not shown] is a static random access memory that is a form of random access memory that retains data without constant refreshing, offering relatively fast memory access.
  • the SRAM IF 975 is also in communication with a TDM interface (TDM IF) 980 , the CPU IF 950 , the DMA controller 910 , and the PCI IF 960 via data buses 920 .
  • TDM IF TDM interface
  • the TDM IF 980 for the trunk side is preferably H.100/H.110 compatible and the TDM bus 981 operates at 8.192 MHz. Enabling the Media Engine I 900 to provide 8 data signals, therefore delivering a capacity up to 512 full duplex channels, the TDM IF 980 has the following preferred features: a H.100/H.110 compatible slave, frame size can be set to 16 or 20 samples and the scheduler can program the TDM IF 980 to store a specific buffer or frame size, programmable staggering points for the maximum number of channels.
  • the TDM IF interrupts the scheduler after every N samples of 8,000 Hz clock with the number N being programmable with possible values of 2, 4, 6, and 8.
  • the TDM IF 980 preferably does not transfer the pulse code modulation (PCM) data to memory on a sample-by-sample basis, but rather buffers 16 or 20 samples, depending on the frame size that the encoders and decoders are using, of a channel and then transfers the voice data for that channel to memory.
  • PCM pulse code modulation
  • the PCI IF 960 is also in communication with the DMA controller 910 via communication buses 920 .
  • External connections comprise connections between the TDM IF 980 and a TDM bus 981 , between the SRAM IF 975 and a SRAM bus 976 , between the SDRAM IF 970 and a SDRAM bus 971 , preferably operating at 32 bit @ 133 MHz, and between the PCI IF 960 and a PCI 2 .
  • 1 Bus 961 also preferably operating at 32 bit @ 133 MHz.
  • the scheduler 955 maps the channels to the Media Layers 905 for processing. When the scheduler 955 is processing a new channel, it assigns the channel to one of the layers, depending upon processing resources available per layer 905 . Each layer 905 handles the processing of a plurality of channels such that the processing is performed in parallel and is divided into fixed frames, or portions of data.
  • the scheduler 955 communicates with each Media Layer 905 through the transmission of data, in the form of tasks, to the FIFO task queues wherein each task is a request to the Media Layer 905 to process a plurality of data portions for a particular channel.
  • the scheduler 955 it is therefore preferred for the scheduler 955 to initiate the processing of data from a channel by putting a task in a task queue, rather than programming each PU 930 individually. More specifically, it is preferred to have the scheduler 955 initiate the processing of data from a channel by putting a task in the task queue of a particular PU 930 and having the Media Layer's 905 pipeline architecture manage the data flow to subsequent PUs 930 .
  • the scheduler 955 should manage the rate by which each of the channels is processed. In an embodiment where the Media Layer 905 is required to accept the processing of data from M channels and each of the channels uses a frame size of T msec, then it is preferred that the scheduler 955 processes one frame of each of the M channels within each T msec interval. Further, in a preferred embodiment, the scheduling is based upon periodic interrupts, in the form of units of samples, from the TDM IF 980 . As an example, if the interrupt period is two samples then it is preferred that the TDM IF 980 interrupts the scheduler every time it gathers two new samples of all channels.
  • the scheduler preferably maintains a “tick-count”, which is incremented on every interrupt and reset to zero when time equal to a frame size has passed.
  • the mapping of channels to time slots is preferably not fixed. For example, in voice applications, whenever a call starts on a channel, the scheduler dynamically assigns a layer to a provisioned time slot channel. It is further preferred that the data transfer from a TDM buffer to the memory is aligned with the time slot in which this data is processed, thereby staggering the data transfer for different channels from TDM to memory, and vice-versa, in a manner that is equivalent to the staggering of the processing of different channels.
  • the TDM IF 980 maintains a tick count variable wherein there is some synchronization between the tick counts of TDM and scheduler 955 .
  • the tick count variable is set to zero on every 2 ms or 2.5 ms depending on the buffer size.
  • Media Engine II 1000 comprises a plurality of Media Layers 1005 each in communication with processing layer controller 1007 , referred to herein as a Media Layer Controller 1007 , and central direct memory access (DMA) controller 1010 via communication data buses and an interface 1015 .
  • Each Media Layer 1005 is in communication with a CPU interface 1006 that, in turn, is in communication with a CPU 1004 .
  • a plurality of pipelined processing units (PUs) 1030 are in communication with a plurality of program memories 1035 and data memories 1040 , via communication data buses.
  • each PU 1030 can access at least one program memory 1035 and one data memory 1040 .
  • each of the PUs 1030 , program memories 1035 , and data memories 1040 is in communication with an external memory 1047 via the Media Layer Controller 1007 and DMA 1010 .
  • each Media Layer 1005 comprises four PUs 1030 , each of which is in communication with a single program memory 1035 and data memory 1040 , wherein the each of the PUs 1031 , 1032 , 1033 , 1034 is in communication with each of the other PUs 1031 , 1032 , 1033 , 1034 in the Media Layer 1005 .
  • a program memory 1005 a operates in conjunction with a controller 1010 a and data memory 1015 a to deliver data and instructions to a data register file 1017 a, preferably 16 ⁇ 32, and address register file 1020 a, preferably 4 ⁇ 12.
  • the data register file 1017 a and address register file 1020 a are in communication with functional units such as an adder/MAC 1025 a, logical unit 1027 a , and barrel shifter 1030 a and with units such as a request arbitration logic unit 1033 a and DMA channel bank 1035 a.
  • the MLC 1007 arbitrates data and program code transfer requests to and from the program memories 1035 and data memories 1040 in a round robin fashion. On the basis of this arbitration the MLC 1007 fills the data pathways that define how units directly access memory, namely the DMA channels [not shown].
  • the MLC 1007 is capable of performing instruction decoding to route an instruction according to its dataflow and keep track of the request states for all PUs 1030 , such as the state of a read-in request, a write-back request and an instruction forwarding.
  • the MLC 1007 is further capable of conducting interface related functions, such as programming DMA channels, starting signal generation, maintaining page states for PUs 1030 in each Media Layer 1005 , decoding of scheduler instructions, and managing the movement of data from and into the task queues of each PU 1030 .
  • interface related functions such as programming DMA channels, starting signal generation, maintaining page states for PUs 1030 in each Media Layer 1005 , decoding of scheduler instructions, and managing the movement of data from and into the task queues of each PU 1030 .
  • the DMA controller 1010 is a multi-channel DMA unit for handling the data transfers between the local memory buffer PUs and external memories, such as the SDRAM.
  • DMA channels are programmed dynamically.
  • PUs 1030 generate independent requests, each having an associated priority level, and send them to the MLC 1007 for reading or writing. Based upon the priority request delivered by a particular PU 1030 , the MLC 1007 programs the DMA channel accordingly.
  • there is also an arbitration process such as a single level of round robin arbitration, between the channels within the DMA to access the external memory.
  • the DMA Controller 1010 provides hardware support for round robin request arbitration across the PUs 1030 and Media Layers 1005 .
  • a DMA channel is generated and receives this information from two 32-bit registers residing in the DMA.
  • a third register exchanges control information between the DMA and each PU that contains the current status of the DMA transfer.
  • arbitration is performed among the following requests: 1 structure read, 4 data read and 4 data write requests from each Media Layer, approximately 90 data requests in total, and 4 program code fetch requests from each Media Layer, approximately 40 program code fetch requests in total.
  • the DMA Controller 1010 is preferably further capable of arbitrating priority for program code fetch requests, conducting link list traversal and DMA channel information generation, and performing DMA channel prefetch and done signal generation.
  • the MLC 1007 and DMA Controller 1010 are in communication with a CPU IF 1006 through communication buses.
  • the PCI IF 1060 is in communication with an external memory interface (such as a SDRAM IF) 1070 and with the CPU IF 1006 via communication buses.
  • the external memory interface 1070 is further in communication with the MLC 1007 and DMA Controller 1010 and a TDM IF 1080 through communication buses.
  • the SDRAM IF 1070 is in communication with a packet processor interface, such as a UTOPIA II/POS compatible interface (U2/POS IF), 1090 via communication data buses.
  • U2/POS IF 1090 is also preferably in communication with the CPU IF 1006 .
  • the TDM IF 1080 have all 32 serial data signals implemented, thereby supporting at least 2048 full duplex channels.
  • External connections comprise connections between the TDM IF 1080 and a TDM bus 1081 , between the external memory 1070 and a memory bus 1071 , preferably operating at 64 bit at 133 MHz, between the PCI IF 1060 and a PCI 2.1 Bus 1061 also preferably operating at 32 bit at 133 MHz, and between the U2/POS IF 1090 and a UTOPIA II/POS connection 1091 preferably operative at 622 megabits per second.
  • the TDM IF 1080 for the trunk side is preferably H.100/H.110 compatible and the TDM bus 1081 operates at 8.192 MHz, as previously discussed in relation to the Media Engine I.
  • the present invention utilizes a plurality of pipelined PUs specially designed for conducting a defined set of processing tasks.
  • the PUs are not general-purpose processors and cannot be used to conduct any processing task.
  • a survey and analysis of specific processing tasks yielded certain functional unit commonalities that, when combined, yield a specialized PU capable of optimally processing the universe of those specialized processing tasks.
  • the instruction set architecture of each PU yields compact code. Increased code density results in a decrease in required memory and, consequently, a decrease in required area, power, and memory traffic.
  • the pipeline architecture also improves performance.
  • Pipelining is an implementation technique whereby multiple instructions are overlapped in execution.
  • each step in the pipeline completes a part of an instruction.
  • different steps are completing different parts of different instructions in parallel.
  • Each of these steps is called a pipe stage or a data segment.
  • the stages are connected on to the next to form a pipe.
  • instructions enter the pipe at one end, progress through the stages, and exit at the other end.
  • the throughput of an instruction pipeline is determined by how often an instruction exits the pipeline.
  • EC PU one type of PU
  • EC PU has been specially designed to perform, in a pipeline architecture, a plurality of media processing functions, such as echo cancellation (EC), voice activity detection (VAD), and tone signaling (TS) functions.
  • Echo cancellation removes from a signal echoes that may arise as a result of the reflection and/or retransmission of modified input signals back to the originator of the input signals.
  • echoes occur when signals that were emitted from a loudspeaker are then received and retransmitted through a microphone (acoustic echo) or when reflections of a far end signal are generated in the course of transmission along hybrids wires (line echo).
  • Tone signaling comprises the processing of supervisory, address, and alerting signals over a circuit or network by means of tones.
  • Supervising signals monitor the status of a line or circuit to determine if it is busy, idle, or requesting service.
  • Alerting signals indicate the arrival of an incoming call.
  • Addressing signals comprise routing and destination information.
  • the LEC, VAD, and TS functions can be efficiently executed using a PU having several single-cycle multiply and accumulate (MAC) units operating with an Address Generation Unit and an Instruction Decoder.
  • Each MAC unit includes a compressor, sum and carry registers, an adder, and a saturation and rounding logic unit.
  • this PU 1100 comprises a load store architecture with a single Address Generation Unit (AGU) 1105 , supporting zero over-head looping and branching with delay slots, and an Instruction Decoder 1106 .
  • AGU Address Generation Unit
  • the plurality of MAC units 1110 operate in parallel on two 16-bit operands and perform the following function:
  • Guard bits are appended with sum and carry registers to facilitate repeated MAC operations.
  • a scale unit prevents accumulator overflow.
  • Each MAC unit 1110 may be programmed to perform round operations automatically. Additionally, it is preferred to have an addition/subtraction unit [not shown] as a conditional sum adder with both the input operands being 20 bit values and the output operand being a 16-bit value.
  • the EC PU performs tasks in a pipeline fashion.
  • a first pipeline stage comprises an instruction fetch wherein instructions are fetched into an instruction register from program memory.
  • a second pipeline stage comprises an instruction decode and operand fetch wherein an instruction is decoded and stored in a decode register.
  • the hardware loop machine is initialized in this cycle. Operands from the data register files are stored in operand registers.
  • the AGU operates during this cycle. The address is placed on data memory address bus. In the case of a store operation, data is also placed on the data memory data bus. For post increment or decrement instructions, the address is incremented or decremented after being placed on the address bus. The result is written back to address register file.
  • the third pipeline stage comprises the operation on the fetched operands by the Addition/Subtraction Unit and MAC units.
  • the status register is updated and the computed result or data loaded from memory is stored in the data/address register files.
  • the states and history information required for the EC PU operations are fetched through a multi-channel DMA interface, as previously shown in each Media Layer.
  • the EC PU configures the DMA controller registers directly.
  • the EC PU loads the DMA chain pointer with the memory location of the head of the chain link.
  • the EC PU reduces wait time for processing incoming media, such as voice.
  • an instruction fetch task (IF) is performed for processing data from channel 1 1250 .
  • the IF task is performed for processing data from channel 2 1255 while, concurrently, an instruction decode and operand fetch (IDOF) is performed for processing data from channel 1 1250 .
  • IDOF instruction decode and operand fetch
  • an IF task is performed for processing data from channel 3 1260 while, concurrently, an instruction decode and operand fetch (IDOF) is performed for processing data from channel 2 1255 and an Execute (EX) task is performed for processing data from channel 1 1250 .
  • IDOF instruction decode and operand fetch
  • EX Execute
  • channels are dynamically generated, the channel numbering may not reflect the actual location and assignment of a task. Channel numbering here is used to simply indicate the concept of pipelining across multiple channels and not to represent actual task locations.
  • a second type of PU (referred to herein as CODEC PU) has been specially designed to perform, in a pipeline architecture, a plurality of media processing functions, such as encoding and decoding signals in accordance with certain standards and protocols, including standards promoted by the International Telecommunication Union (ITU) such as voice standards, including G.711, G.723.1, G.726, G.728, G.729A/B/E, and data modem standards, including V.17, V.34, and V.90, among others (referred to herein as Codecs), and performing comfort noise generation (CNG) and discontinuous transmission (DTX) functions.
  • ITU International Telecommunication Union
  • voice standards including G.711, G.723.1, G.726, G.728, G.729A/B/E
  • data modem standards including V.17, V.34, and V.90, among others (referred to herein as Codecs)
  • CNG comfort noise generation
  • DTX discontinuous transmission
  • the various Codecs are used to encode and de
  • the Codecs, CNG, and DTX functions can be efficiently executed using a PU having an Arithmetic and Logic Unit (ALU), MAC unit, Barrel Shifter, and Normalization Unit.
  • ALU Arithmetic and Logic Unit
  • MAC unit MAC unit
  • Barrel Shifter MAC unit
  • Normalization Unit a unit having an Arithmetic and Logic Unit (ALU), MAC unit, Barrel Shifter, and Normalization Unit.
  • ALU Arithmetic and Logic Unit
  • MAC unit MAC unit
  • Barrel Shifter Barrel Shifter
  • Normalization Unit a preferred embodiment, shown in FIG. 13, the CODEC PU 1300 comprises a load store architecture with a single Address Generation Unit (AGU) 1305 , supporting zero over-head looping and zero overhead branching with delay slots, and an Instruction Decoder 1306 .
  • AGU Address Generation Unit
  • each MAC unit 1310 includes a compressor, sum and carry registers, an adder, and a saturation and rounding logic unit.
  • the MAC unit 1310 is implemented as a compressor with feedback into the compression tree for accumulation.
  • One preferred embodiment of a MAC 1310 has a latency of approximately 2 cycles with a throughput of 1 cycle.
  • the MAC 1310 operates on two 17-bit operands, signed or unsigned. The intermediate results are kept in sum and carry registers. Guard bits are appended to the sum and carry registers for repeated MAC operations.
  • the saturation logic converts the Sum and Carry results to 32 bit values.
  • the rounding logic rounds a 32 bit to a 16-bit number. Division logic is also implemented in the MAC unit 1310 .
  • the ALU 1320 includes a 32 bit adder and a 32 bit logic circuit capable of performing a plurality of operations, including add, add with carry, subtract, subtract with borrow, negate, AND, OR, XOR, and NOT.
  • One of the inputs to the ALU 1320 has an XOR array, which operates on 32-bit operands.
  • the ALU's 1320 absolute unit drives this array.
  • the input operand is either XORed with one or zero to perform negation on the input operands.
  • the Barrel Shifter 1330 is placed in series with the ALU 1320 and acts as a pre-shifter to operands requiring a shift operation followed by any ALU operations.
  • One type of preferred Barrel Shifter can perform a maximum of 9-bit left or 26-bit right arithmetic shifts on 16-bit or 32-bit operands.
  • the output of the Barrel Shifter is a 32-bit value, which is accessible to both the inputs of the ALU 1320 .
  • the Normalization unit 1340 counts the redundant sign bits in the number. It operates on 2's complement 16-bit numbers. Negative numbers are inverted to compute the redundant sign bits. The number to be normalized is fed into the XOR array. The other input comes from the sign bit of the number. Where the media being processed is voice, it is preferred to have an interface to the EC PU.
  • the EC PU uses VAD to determine whether a frame being received comprises silence or speech. The VAD decision is preferably communicated to the CODEC PU so that it may determine whether to implement a Codec or DTX function.
  • the CODEC PU performs tasks in a pipeline fashion.
  • a first pipeline stage comprises an instruction fetch wherein instructions are fetched into an instruction register from program memory. At the same time, the next program counter value is computed and stored in the program counter. In addition, loop and branch decisions are taken in the same cycle.
  • a second pipeline stage comprises an instruction decode and operand fetch wherein an instruction is decoded and stored in a decode register. The instruction decode, register read and branch decisions happen in the instruction decode stage.
  • the Execute 1 stage, the Barrel Shifter and the MAC compressor tree complete their computation. Addresses to data memory are also applied in this stage.
  • the Execute 2 stage, the ALU, normalization unit, and the MAC adder complete their computation.
  • Register write-back and address registers are updated at the end of the Execute-2 stage.
  • the states and history information required for the CODEC PU operations are fetched through a multi-channel DMA interface, as previously shown in each Media Layer.
  • the CODEC PU reduces wait time for processing incoming media, such as voice.
  • an instruction fetch task IF
  • IDOF instruction decode and operand fetch
  • an IF task is performed for processing data from channel 3 1360 a while, concurrently, an instruction decode and operand fetch (IDOF) is performed for processing data from channel 2 1355 a and an Execute 1 (EX1) task is performed for processing data from channel 1 1350 a.
  • an IF task is performed for processing data from channel 4 1370 a while, concurrently, an instruction decode and operand fetch (IDOF) is performed for processing data from channel 3 1360 a
  • an Execute 1 (EX1) task is performed for processing data from channel 2 1355 a
  • an Execute 2 (EX2) task is performed for processing data from channel 1 1350 a.
  • the pipeline architecture of the present invention is not limited to instruction processing within PUs, but also exists on a PU-to-PU architecture level. As shown in FIG. 13 b, multiple PUs may operate on a data set N in a pipeline fashion to complete the processing of a plurality of tasks where each task comprises a plurality of steps.
  • a first PU 1305 b may be capable of performing echo cancellation functions, labeled task A.
  • a second PU 1310 b may be capable of performing tone signaling functions, labeled task B.
  • a third PU 1315 b may be capable of performing a first set of encoding functions, labeled task C.
  • a fourth PU 1320 b may be capable of performing a second set of encoding functions, labeled task D.
  • time slot 1 1350 b the first PU 1305 b performs task A 1 1380 b on data set N.
  • time slot 2 1355 b the first PU 1305 b performs task A 2 1381 b on data set N and the second PU 1310 b performs task B 1 1387 b on data set N.
  • time slot 3 1360 b the first PU 1305 b performs task A 3 1382 b on data set N, the second PU 1310 b performs task B 2 1388 b on data set N, and the third PU 1315 b performs task C 1 1394 b on data set N.
  • the first PU 1305 b performs task A 4 1383 b on data set N
  • the second PU 1310 b performs task B 3 1389 b on data set N
  • the third PU 1315 b performs task C 2 1395 b on data set N
  • the fourth PU 1320 b performs task D 1 1330 on data set N.
  • the first PU 1305 b performs task A 5 1384 b on data set N
  • the second PU 1310 b performs task B 4 1390 b on data set N
  • the third PU 1315 b performs task C 3 1396 b on data set N
  • the fourth PU 1320 b performs task D 2 1331 on data set N.
  • the first PU 1305 b performs task A 5 1385 b on data set N
  • the second PU 1310 b performs task B 4 1391 b on data set N
  • the third PU 1315 b performs task C 3 1397 b on data set N
  • the fourth PU 1320 b performs task D 2 1332 on data set N.
  • One of ordinary skill in the art would appreciate how the pipeline processing would further progress.
  • the combination of specialized PUs with a pipeline architecture enables the processing of greater channels on a single media layer.
  • each channel implements a G.711 codec and 128 ms of echo tail cancellation with DTMF detection/generation, voice activity detection (VAD), comfort noise generation (CNG), and call discrimination
  • VAD voice activity detection
  • CNG comfort noise generation
  • call discrimination the media engine layer operates at 1.95 MHz per channel.
  • the resulting channel power consumption is at or about 6 mW per channel using 0.13 ⁇ standard cell technology.
  • the Packet Engine of the present invention is a communications processor that, in a preferred embodiment, supports the plurality of interfaces and protocols used in media gateway processing systems between circuit-switched networks, packet-based IP networks, and cell-based ATM networks.
  • the Packet Engine comprises a unique architecture capable of providing a plurality of functions for enabling media processing, including, but not limited to, cell and packet encapsulation, quality of service functions for traffic management and tagging for the delivery of other services and multi-protocol label switching, and the ability to bridge cell and packet networks.
  • the Packet Engine 1400 is configured to handle data rate up to and around OC-12. It is appreciated by one of ordinary skill in the art that certain modifications can be made to the fundamental architecture to increase the data handling rates beyond OC-12.
  • the Packet Engine 1400 comprises a plurality of processors 1405 , a host processor 1430 , an ATM engine 1440 , in-bound DMA channel 1450 , out-bound DMA channel 1455 , a plurality of network interfaces 1460 , a plurality of registers 1470 , memory 1480 , an interface to external memory 1490 , and a means to receive control and signaling information 1495 .
  • the processors 1405 comprise an internal cache 1407 , central processing unit interface 1409 , and data memory 1411 .
  • the processors 1405 comprise 32-bit reduced instruction set computing (RISC) processors with a 16 Kb instruction cache and a 12 Kb local memory.
  • the central processing unit interface 1409 permits the processor 1405 to communicate with other memories internal to, and external to, the Packet Engine 1400 .
  • the processors 1405 are preferably capable of handling both in-bound and out-bound communication traffic. In a preferred implementation, generally half of the processors handle in-bound traffic while the other half handle out-bound traffic.
  • the memory 1411 in the processor 1405 is preferably divided into a plurality of banks such that distinct elements of the Packet Engine 1400 can access the memory 1411 independently and without contention, thereby increasing overall throughput.
  • the memory is divided into three banks, such that the in-bound DMA channel can write to memory bank one, while the processor is processing data from memory bank two, while the out-bound DMA channel is transferring processed packets from memory bank three.
  • the ATM engine 1440 comprises two primary subcomponents, referred to herein as the ATMRx Engine and the ATMTx Engine.
  • the ATMRx Engine processes an incoming ATM cell header and transfers the cell for corresponding AAL protocol, namely AAL1, AAL2, AAL5, processing in the internal memory or to another cell manager, if external to the system.
  • the ATMTx Engine processes outgoing ATM cells and requests the outbound DMA channel to transfer data to a particular interface, such as the UTOPIAII/POSII interface. Preferably, it has separate blocks of local memory for data exchange.
  • the ATM engine 1440 operates in combination with data memory 1483 to map an AAL channel, namely AAL2, to a corresponding channel on the TDM bus (where the Packet Engine 1400 is connected to a Media Engine) or to a corresponding IP channel identifier where internetworking between IP and ATM systems is required.
  • the internal memory 1480 utilizes an independent block to maintain a plurality of tables for comparing and/or relating channel identifiers with virtual path identifiers (VPI), virtual channel identifiers (VCI), and compatibility identifiers (CID).
  • VPI is an eight-bit field in the ATM cell header that indicates the virtual path over which the cell should be routed.
  • a VCI is the address or label of a virtual channel comprised of a unique numerical tag, defined by a 16-bit field in the ATM cell header, which identifies a virtual channel over which a stream of cells is to travel during the course of a session between devices.
  • the plurality of tables are preferably updated by the host processor 1430 and are shared by the ATMRx and ATMTx engines.
  • the host processor 1430 is preferably a RISC processor with an instruction cache 1431 .
  • the host processor 1430 communicates with other hardware blocks through a CPU interface 1432 that is capable of managing communications with Media Engines over a bus, such as a PCI bus, and with a host, such as a signaling host through a PCI-PCI bridge.
  • the host processor 1430 is capable of being interrupted by other processors 1405 through their transmission of interrupts which are handled by an interrupt handler 1433 in the CPU interface.
  • the host processor 1430 be capable of performing the following functions: 1) boot-up processing, including loading code from a flash memory to an external memory and starting execution, initializing interfaces and internal registers, acting as a PCI host, and appropriately configuring them, and setting up inter-processor communications between a signaling host, the packet engine itself, and media engines, 2) DMA configuration, 3) certain network management functions, 4) handling exceptions, such as the resolution of unknown addresses, fragmented packets, or packets with invalid headers, 4) providing intermediate storage of tables during system shutdown, 5) IP stack implementation, and 6) providing a message-based interface for users external to the packet engine and for communicating with the packet engine through the control and signaling means, among others.
  • boot-up processing including loading code from a flash memory to an external memory and starting execution, initializing interfaces and internal registers, acting as a PCI host, and appropriately configuring them, and setting up inter-processor communications between a signaling host, the packet engine itself, and media engines, 2) DMA configuration, 3) certain network management functions
  • two DMA channels are provided for data exchange between different memory blocks via data buses.
  • the in-bound DMA channel 1450 is utilized to handle incoming traffic to the Packet Engine 1400 data processing elements and the out-bound DMA channel 1455 is utilized to handle outgoing traffic to the plurality of network interfaces 1460 .
  • the in-bound DMA channel 1450 handles all of the data coming into the Packet Engine 1400 .
  • the Packet Engine 1400 has a plurality of network interfaces 1460 that permit the Packet Engine to compatibly communicate over networks.
  • the network interfaces comprise a GMII PHY interface 1562 , a GMII MAC interface 1564 , and two UTOPIAII/POSII interfaces 1566 in communication with 622 Mbps ATM/SONET connections 1568 to receive and transmit data.
  • the Packet Engine [not shown] supports MAC and emulates PHY layers of the Ethernet interface as specified in IEEE 802.3.
  • the gigabit Ethernet MAC 1570 comprises FIFOs 1503 and a control state machine 1525 .
  • the transmit and receive FIFOs 1503 are provided for data exchange between the gigabit Ethernet MAC 1570 and bus channel interface 1505 .
  • the bus channel interface 1505 is in communication with the outbound DMA channel 1515 and in-bound DMA channel 1520 through bus channel.
  • the MAC 1570 preferably sends a request to the DMA 1520 for data movement.
  • the DMA 1520 preferably checks the task queue [not shown] in the MAC interface 1564 and transfers the queued packets.
  • the task queue in the MAC interface is a set of 64 bit registers containing a data structure comprising: length of data, source address, and destination address.
  • the destination address will not be used.
  • the DMA 1520 will move the data over the bus channel to memories located within the processors and will write the number of tasks at a predefined memory location. After completing writing of all tasks, the DMA 1520 will write the total number of tasks transferred to the memory page.
  • the processor will process the received data and will write a task queue for an outbound channel of the DMA.
  • the outbound DMA channel 1515 will check the number of frames present in the memory locations and, after reading the task queue, will move the data either to a POSII interface of the Media Engine Type I or II or to an external memory location where IP to ATM bridging is being performed.
  • the Packet Engine supports two configurable UTOPIAII/POSII interfaces 1566 which provides an interface between the PHY and upper layer for IP/ATM traffic.
  • the UTOPIAII/POSII 1580 comprises FIFOs 1504 and a control state machine 1526 .
  • the transmit and receive FIFOs 1504 are provided for data exchange between the UTOPIAII/POSII 1580 and bus channel interface 1506 .
  • the bus channel interface 1506 is in communication with the outbound DMA channel 1515 and in-bound DMA channel 1520 through bus channel.
  • the UTOPIA II/POS II interfaces 1566 may be configured in either UTOPIA level II or POS level II modes.
  • the UTOPIAII/POSII interface 1566 When data is received on the UTOPIAII/POSII interface 1566 , data will push existing tasks in the task queue forward and request the DMA 1520 to move the data.
  • the DMA 1520 will read the task queue from the UTOPIAII/POSII interface 1566 which contains a data structure comprising: length of data, source address, and type of interface.
  • the in-bound DMA channel 1520 will send the data either to the plurality of processors [not shown] or to the ATMRx engine [not shown]. After data is written into the ATMRx memory, it is processed by the ATM engine and passed to the corresponding AAL layer.
  • the ATMTx engine inserts the desired ATM header at the beginning of the cell and will request the outbound DMA channel 1515 to move the data to the UTOPIAII/POSII interface 1566 having a task queue with the following data structure: length of data and source address.
  • the Packet Engine 1600 has a plurality of PCI interfaces 1605 , 1606 , referred to in FIG. 14 as 1495 .
  • a signaling host 1610 through an initiator 1612 , sends messages to be received by the Packet Engine 1600 to a PCI target 1605 via a communication bus 1617 .
  • the PCI target further communicates these messages through a PCI to PCI bridge 1620 to a PCI initiator 1606 .
  • the PCI initiator 1606 sends messages through a communication bus 1618 to a plurality of Media Engines 1650 , each having a memory 1660 with a memory queue 1665 .
  • novel software architecture enables the logical system, presented in FIG. 5, to be physically deployed in a number of ways, depending on processing needs.
  • APIs application program interfaces
  • a first component 1705 operates in conjunction with a second component 1710 and a third component 1715 through a first interface 1720 and second interface 1725 , respectively. Because all three components 1705 , 1710 , 1715 are executing on the same physical processor 1700 , the first interface 1720 and second interface 1725 perform interfacing tasks through function mapping conducted via the APIs of each of the three components 1705 , 1710 , 1715 . Referring to FIG. 17,
  • the first 1705 a, second 1710 a, and third 1715 a components reside on separate hardware elements 1700 a, 1701 a, 1702 a, respectively, e.g., separate processors or processing elements
  • the first interface 1720 a and second interface 1725 a implement interfacing tasks through queues 1721 a, 1726 a in shared memory. While the interfaces 1720 a, 1725 a are no longer limited to function mapping and messaging, the components 1705 a, 1710 a, 1715 a continue to use the same APIs to conduct inter-component communication.
  • the consistent use of a standard API enables the porting of various components to different hardware architectures in a distributed processing environment by relying on modified interfaces or drivers where necessary and without modifications in the components themselves.
  • the software system 1800 is divided into three subsystems, a Media Processing Subsystem 1805 , a Packetization Subsystem 1840 , and a Signaling/Management Subsystem (hereinafter referred to as the Signaling Subsystem) 1870 .
  • the Media Processing Subsystem 1805 sends encoded data to the Packetization Subsystem 1840 for encapsulation and transmission over the network and receives network data from the Packetization Subsystem 1840 to be decoded and played out.
  • the Signaling Subsystem 1870 communicates with the Packetization Subsystem 1840 to get status information such as the number of packets transferred, to monitor the quality of service, control the mode of particular channels, among other functions.
  • the Signaling Subsystem 1870 also communicates with the Packetization Subsystem 1840 to control establishment and destruction of packetization sessions for the origination and termination of calls.
  • Each subsystem 1805 , 1840 , and 1870 further comprises a series of components 1820 designed to perform different tasks in order to effectuate the processing and transmission of media.
  • Each of the components 1820 conducts communications with any other module, subsystem, or system through APIs that remain substantially constant and consistent irrespective of whether the components reside on a hardware element or across multiple hardware elements, as previously discussed.
  • the Media Processing Subsystem 1905 comprises a system API component 1907 , media API component 1909 , real-time media kernel 1910 , and voice processing components, including line echo cancellation component 1911 , components dedicated to performing voice activity detection 1913 , comfort noise generation 1915 , and discontinuous transmission management 1917 , a component 1919 dedicated to handling tone signaling functions, such as dual tone (DTMF/MF), call progress, call waiting, and caller identification, and components for media encoding and decoding functions for voice 1927 , fax 1929 , and other data 1931 .
  • tone signaling functions such as dual tone (DTMF/MF)
  • DTMF/MF dual tone
  • call progress call waiting
  • caller identification components for media encoding and decoding functions for voice 1927 , fax 1929 , and other data 1931 .
  • the system API component 1907 should be capable of providing a system wide management and enabling the cohesive interaction of individual components, including establishing communications between external applications and individual components, managing run-time component addition and removal, downloading code from central servers, and accessing the MIBs of components upon request from other components.
  • the media API component 1909 interacts with the real time media kernel 1910 and individual voice processing components.
  • the real time media kernel 1910 allocates media processing resources, monitors resource utilization on each media-processing element, and performs load balancing to substantially maximize density and efficiency.
  • the voice processing components can be distributed across multiple processing elements.
  • the line echo cancellation component 1911 deploys adaptive filter algorithms to remove from a signal echoes that may arise as a result of the reflection and/or retransmission of modified input signals back to the originator of the input signals.
  • the line echo cancellation component 1911 has been programmed to implement the following filtration approach: An adaptive finite impulse response (FIR) filter of length N is converged using a convergence process, such as a least means square approach.
  • the adaptive filter generates a filtered output by obtaining individual samples of the far-end signal on a receive path, convolving the samples with the calculated filter coefficients, and then subtracting, at the appropriate time, the resulting echo estimate from the received signal on the transmit channel.
  • FIR finite impulse response
  • the filter is then converted to an infinite impulse response (IIR) filter using a generalization of the ARMA-Levinson approach.
  • IIR infinite impulse response
  • data is received from an input source and used to adapt the zeroes of the IIR filter using the LMS approach, keeping the poles fixed.
  • the adaptation process generates a set of converged filter coefficients that are then continually applied to the input signal to create a modified signal used to filter the data.
  • the error between the modified signal and actual signal received is monitored and used to further adapt the zeroes of the IIR filter. If the measured error is greater than a pre-determined threshold, convergence is re-initiated by reverting back to the FIR convergence step.
  • the voice activity detection component 1913 receives incoming data and determines whether voice or another type of signal, i.e., noise, is present in the received data, based upon an analysis of certain data parameters.
  • the comfort noise generation component 1915 operates to send a Silence Insertion Descriptor (SID) containing information that enables a decoder to generate noise corresponding to the background noise received from the transmission.
  • SID Silence Insertion Descriptor
  • An overlay of audible but non-obtrusive noise has been found to be valuable in helping users discern whether a connection is live or dead.
  • the SID frame is typically small, i.e. approximately 15 bits under the G.729 B codec specification.
  • updated SID frames are sent to the decoder whenever there has been sufficient change in the background noise.
  • the tone signaling component 1919 including recognition of DTMF/MF, call progress, call waiting, and caller identification, operates to intercept tones meant to signal a particular activity or event, such as the conducting of two-stage dialing (in the case of DTMF tones), the retrieval of voice-mail, and the reception of an incoming call (in the case of call waiting), and communicate the nature of that activity or event in an intelligent manner to a receiving device, thereby avoiding the encoding of that tone signal as another element in a voice stream.
  • a particular activity or event such as the conducting of two-stage dialing (in the case of DTMF tones), the retrieval of voice-mail, and the reception of an incoming call (in the case of call waiting), and communicate the nature of that activity or event in an intelligent manner to a receiving device, thereby avoiding the encoding of that tone signal as another element in a voice stream.
  • the tone-signaling component 1919 is capable of recognizing a plurality of tones and, therefore, when one tone is received, send a plurality of RTP packets that identify the tone, together with other indicators, such as length of the tone. By carrying the occurrence of an identified tone, the RTP packets convey the event associated with the tone to a receiving unit.
  • the tone-signaling component 1919 is capable of generating a dynamic RTP profile wherein the RTP profile carries information detailing the nature of the tone, such as the frequency, volume, and duration. By carrying the nature of the tone, the RTP packets convey the tone to the receiving unit and permit the receiving unit to interpret the tone and, consequently, the event or activity associated with it.
  • codecs Components for the media encoding and decoding functions for voice 1927 , fax 1929 , and other data 1931 , referred to as codecs, are devised in accordance with International Telecommunications Union (ITU) standard specifications, such as G.711 for the encoding and decoding of voice, fax, and other data.
  • ITU International Telecommunications Union
  • G.711 An exemplary codec for voice, data, and fax communications is ITU standard G.711, often referred to as pulse code modulation.
  • G.711 is a waveform codec with a sampling rate of 8,000 Hz. Under uniform quantization, signal levels would typically require at least 12 bits per sample, resulting in a bit rate of 96 kbps.
  • ITU standards G.723.1, G.726, and G.729 A/B/E all of which would be known and appreciated by one of ordinary skill in the art.
  • ITU standards supported by the fax media processing component 1929 preferably include T.38 and standards falling within V.xx, such as V.17, V.90, and V.34.
  • Exemplary codecs for fax include ITU standard T.4 and T.30.
  • T.4 addresses the formatting of fax images and their transmission from sender to receiver by specifying how the fax machine scans documents, the coding of scanned lines, the modulation scheme used, and the transmission scheme used.
  • Other codecs include ITU standards T.38.
  • the Packetization Subsystem 2040 comprises a system API component 2043 , packetization API component 2045 , POSIX API 2047 , real-time operating system (RTOS) 2049 , components dedicated to performing such quality of service functions as buffering and traffic management 2050 , a component for enabling IP communications 2051 , a component for enabling ATM communications 2053 , a component for resource-reservation protocol (RSVP) 2055 , and a component for multi-protocol label switching (MPLS) 2057 .
  • RTOS real-time operating system
  • the Packetization Subsystem 2040 facilitates the encapsulation of encoded voice/data into packets for transmission over ATM and IP networks, manages certain quality of service elements, including packet delay, packet loss, and jitter management, and implements traffic shaping to control network traffic.
  • the packetization API component 2045 provides external applications facilitated access to the Packetization Subsystem 2040 by communicating with the Media Processing Subsystem [not shown] and Signaling Subsystem [not shown].
  • the POSIX API 2047 layer isolated the operating system (OS) from the components and provides the components with a consistent OS API, thereby insuring that components above this layer do not have to be modified if the software is ported to another OS platform.
  • the RTOS 2049 acts as the OS facilitating the implementation of software code into hardware instructions.
  • the IP communications component 2051 supports packetization for TCP/IP, UDP/IP, and RTP/RTCP protocols.
  • the ATM communications component 2053 supports packetization for AAL1, AAL2, and AAL5 protocols. It is preferred that the RTP/UDP/IP stack be implemented on the RISC processors of the Packet Engine. A portion of the ATM stack is also preferably implemented on the RISC processors with more computationally intensive parts of the ATM stack implemented on the ATM engine.
  • the component for RSVP 2055 specifies resource-reservation techniques for IP networks.
  • the RSVP protocol enables resources to be reserved for a certain session (or a plurality of sessions) prior to any attempt to exchange media between the participants.
  • Two levels of service are generally enabled, including a guaranteed level that emulates the quality achieved in conventional circuit switched networks, and controlled load that is substantially equal to the level of service achieved in a network under best-effort and no-load conditions.
  • a sending unit issues a PATH message to a receiving unit via a plurality of routers.
  • the PATH message contains a traffic specification (Tspec) that provides details about the data that the sender expects to send, including bandwidth requirement and packet size.
  • Tspec traffic specification
  • Each RSVP-enabled router along the transmission path establishes a path state that includes the previous source address of the PATH message (the prior router).
  • the receiving unit responds with a reservation request (RESV) that includes a flow specification having the Tspec and information regarding the type of reservation service requested, such as controlled-load or guaranteed service.
  • RESV reservation request
  • the RESV message travels back, in reverse fashion, to the sending unit along the same router pathway.
  • the requested resources are allocated, provided such resources are available and the receiver has authority to make the request.
  • the RESV eventually reaches the sending unit with a confirmation that the requisite resources have been reserved.
  • the component for MPLS 2057 operates to mark traffic at the entrance to a network for the purpose of determining the next router in the path from source to destination. More specifically, the MPLS 2057 component attaches a label containing all of the information a router needs to forward a packet to the packet in front of the IP header. The value of the label is used to look up the next hop in the path and the basis for the forwarding of the packet to the next router.
  • Conventional IP routing operates similarly, except the MPLS process searches for an exact match, not the longest match as in conventional IP routing.
  • the Signaling Subsystem 2170 comprises a user application API component 2173 , system API component 2175 ; POSIX API 2177 , real-time operating system (RTOS) 2179 , a signaling API 2181 , components dedicated to performing such signaling functions as signaling stacks for ATM networks 2183 and signaling stacks for IP networks 2185 , and a network management component 2187 .
  • the signaling API 2181 provides facilitated access to the signaling stacks for ATM networks 2183 and signaling stacks for IP networks 2185 .
  • the signaling API 2181 comprises a master gateway and sub-gateways of N number. A single master gateway can have N sub-gateways associated with it.
  • the master gateway performs the demultiplexing of incoming calls arriving from an ATM or IP network and routes the calls to the sub-gateway that has resources available.
  • the sub-gateways maintain the state machines for all active terminations.
  • the sub-gateways can be replicated to handle many terminations. Using this design, the master gateway and sub-gateways can reside on a single processor or across multiple processors, thereby enabling the simultaneous processing of signaling for a large number of terminations and the provision of substantial scalability.
  • the user application API component 2173 provides a way for external applications to interface with the entire software system, comprising each of the Media Processing Subsystem, Packetization Subsystem, and Signaling Subsystem.
  • the network management component 2187 supports local and remote configuration and network management through the support of simple network management protocol (SNMP).
  • SNMP simple network management protocol
  • the configuration portion of the network management component 2187 is capable of communicating with any of the other components to conduct configuration and network management tasks and can route remote requests for tasks, such as the addition or removal of specific components.
  • the signaling stacks for ATM networks 2183 include support for User Network Interface (UNI) for the communication of data using AAL1, AAL2, and AAL5 protocols.
  • User Network Interface comprises specifications for the procedures and protocols between the gateway system, comprising the software system and hardware system, and an ATM network.
  • the signaling stacks for IP networks 2185 include support for a plurality of accepted standards, including media gateway control protocol (MGCP), H.323, session initiation protocol (SIP), H.248, and network-based call signaling (NCS).
  • MGCP specifies a protocol converter, the components of which may be distributed across multiple distinct devices.
  • MGCP enables external control and management of data communications equipment, such as media gateways, operating at the edge of multi-service packet networks.
  • H.323 standards define a set of call control, channel set up, and codec specifications for transmitting real time voice and video over networks that do not necessarily provide a guaranteed level of service, such as packet networks.
  • SIP is an application layer protocol for the establishment, modification, and termination of conferencing and telephony sessions over an IP-based network and has the capability of negotiating features and capabilities of the session at the time the session is established.
  • H.248 provides recommendations underlying the implementation of MGCP.
  • a host application 2205 interacts with a DSP 2210 via an interrupt capability 2220 and shared memory 2230 .
  • the same functionality can be achieved by a simulation execution through the operation of a virtual DSP program 2310 as a separate independent thread on the same processor 2315 as the application code 2320 .
  • This simulation run is enabled by a task queue mutex 2330 and a condition variable 2340 .
  • the task queue mutex 2330 protects the data shared between the virtual DSP program 2310 and a resource manager [not shown].
  • the condition variable 2340 allows the application to synchronize with the virtual DSP 2310 in a manner similar to the function of the interrupt 2220 in FIG. 22.
  • the present methods and systems provide for a system on chip architecture having scalable, distributed processing and memory capabilities through a plurality of processing layers and the application of that chip architecture in a media gateway that is designed to enable the communication of media across circuit switched and packet switched networks. While various embodiments of the present invention have been shown and described, it would be apparent to those skilled in the art that many modifications are possible without departing from the inventive concept disclosed herein. For example, it would be apparent that the system chip architecture can be used to process other forms of data and for purposes other than telecommunications. It would further be apparent that, depending on the functionality desired, the PUs could be designed to perform application specific tasks other than line echo cancellation or encoding or decoding.

Abstract

The present invention is a system on chip architecture having scalable, distributed processing and memory capabilities through a plurality of processing layers. In a preferred embodiment, a distributed processing layer processor comprises a plurality of processing layers, a processing layer controller, and a central direct memory access controller. The processing layer controller manages the scheduling of tasks and distribution of processing tasks to each processing layer. Within each processing layer, a plurality of pipelined processing units (PUs), specially designed for conducting a defined set of processing tasks, are in communication with a plurality of program memories and data memories. One application of the present invention is in a media gateway that is designed to enable the communication of media across circuit switched and packet switched networks. The hardware system architecture of the said novel gateway is comprised of a plurality of DPLPs, referred to as Media Engines that are interconnected with a Host Processor or Packet Engine, which, in turn, is in communication with interfaces to networks. Each of the PUs within the processing layers of the Media Engines are specially designed to perform a class of media processing specific tasks, such as line echo cancellation, encoding or decoding data, or tone signaling.

Description

    FIELD OF THE INVENTION
  • The present invention relates generally to a system on chip architecture and, more specifically, to a scalable system on chip architecture having distributed processing units and memory banks in a plurality of processing layers. [0001]
  • BACKGROUND OF THE INVENTION
  • Media communication devices comprise hardware and software systems that utilize interdependent processes to enable the processing and transmission of analog and digital signals substantially seamlessly across and between circuit switched and packet switched networks. As an example, a voice over packet gateway enables the transmission of human voice from a conventional public switched network to a packet switched network, possibly traveling simultaneously over a single packet network line with both fax information and modem data, and back again. Benefits of unifying communication of different media across different networks include cost savings and the delivery of new and/or improved communication services such as web-enabled call centers for improved customer support and more efficient personal productivity tools. [0002]
  • Such media over packet communication devices (e.g., Media Gateways) require substantial, scalable processing power with sophisticated software controls and applications to enable the effective transmission of data from circuit switched to packet switched networks and back again. Exemplary products utilize at least one communication processor, such as Texas Instrument's 48-channel digital signal processor (DSP) chip, to deploy a software architecture, such as the system provided by Telogy Networks, which, in combination, offer features such as adaptive voice activity detection, adaptive comfort noise generation, adaptive jitter buffer, industry standard codecs, echo cancellation, tone detection and generation, network management support, and packetization. [0003]
  • One form of a media communication device, a voice over packet processing system, uses multiple DSPs to perform the conversion between voice data signals and packet-based digital data. Each of the general-purpose DSPs performs tasks such as encoding, decoding, echo cancellation, and so forth; however, the use of general-purpose DSPs has several disadvantages. First, a general-purpose DSP is not optimized for performing any particular function. Therefore, a DSP typically includes a large number of functional units. Second, because each DSP typically completes processing of one unit of incoming data before it starts processing the next unit of incoming data, units of incoming data may have to wait for a DSP to become available. For example, assume that it takes one second for a DSP to process one unit of incoming data, then the DSP can accept new incoming data approximately once per second on average. [0004]
  • Exemplary processors are disclosed in U.S. Pat. Nos. 6,226,735, 6,122,719, 6,108,760, 5,956,518, and 5,915,123. The patents are directed to a hybrid digital signal processor (DSP)/RISC chip that has an adaptive instruction set, making it possible to reconfigure the interconnect and the function of a series of basic building blocks, like multipliers and arithmetic logic units (ALUs), on a cycle-by-cycle basis. This provides an instruction set architecture that can be dynamically customized to match the particular requirements of the running applications and, therefore, create a custom path for that particular instruction for that particular cycle. According to the patents, rather than separate the resources for instruction storage and distribution from the resources for data storage and computation, and dedicate silicon resources to each of these resources at fabrication time, these resources can be unified. Once unified, traditional instruction and control resources can be decomposed along with computing resources and can be deployed in an application specific manner. Chip capacity can be selectively deployed to dynamically support active computation or control reuse of computational resources depending on the needs of the application and the available hardware resources. This, theoretically, results in improved performance. [0005]
  • While existing solutions are capable of generally enabling the processing and transmission of certain media types across circuit and packet switched networks, they suffer from certain disadvantages. As designed, they are not able to support a sufficiently high density of channels per chip while still providing the features required by carrier-class telecommunication companies. Furthermore, expanding the number of channels served and/or features provided to meet new or different data volumes by adding new hardware or software components is challenging and requires substantial redesign. Moreover, existing architectures do not enable the scalable addition of processing power or modification of processing tasks without substantial redesigns. [0006]
  • Despite the aforementioned prior art, an improved method and system for enabling the communication of media across different networks is needed. More specifically, a system on chip architecture is needed that can be efficiently scaled to meet new processing requirements and is sufficiently distributed to enable high processing throughputs and increased production yields. [0007]
  • SUMMARY OF THE INVENTION
  • The present invention is directed toward a system on chip architecture having scalable, distributed processing and memory capabilities through a plurality of processing layers. In a preferred embodiment, a distributed processing layer processor (DPLP) comprises a plurality of processing layers each in communication with a processing layer controller and central direct memory access controller via communication data buses and processing layer interfaces. Within each processing layer, a plurality of pipelined processing units (PUs) are in communication with a plurality of program memories and data memories. Preferably, each PU should be capable of accessing at least one program memory and one data memory. The processing layer controller manages the scheduling of tasks and distribution of processing tasks to each processing layer. The DMA controller is a multi-channel DMA unit for handling the data transfers between the local memory buffer PUs and external memories, such as the SDRAM. Within each processing layer, there are a plurality of pipelined PUs specially designed for conducting a defined set of processing tasks. In that regard, the PUs are not general-purpose processors and can not be used to conduct any processing task. Additionally, within each processing layer is a set of distributed memory banks that enable the local storage of instruction sets, processed information and other data required to conduct an assigned processing task. [0008]
  • One application of the present invention is in a media gateway that is designed to enable the communication of media across circuit switched and packet switched networks. The hardware system architecture of the gateway is comprised of a plurality of DPLPs, referred to as Media Engines, that are interconnected with a Host Processor and Packet Engine which, in turn, is in communication with interfaces to networks, preferably as asynchronous transfer mode (ATM) physical device or gigabit media independent interface (GMII) physical device. Each of the PUs within the processing layers of the Media Engines are specially designed to perform a class of media processing specific tasks, such as line echo cancellation, encoding or decoding data, or tone signaling.[0009]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • These and other features and advantages of the present invention will be appreciated as they become better understood by reference to the following Detailed Description when considered in connection with the accompanying drawings, wherein: [0010]
  • FIG. 1 is a block diagram of an embodiment of the distributed processing layer processor; [0011]
  • FIG. 2[0012] a is a block diagram of a first embodiment of a hardware system architecture for a media gateway;
  • FIG. 2[0013] b is a block diagram of a second embodiment of a hardware system architecture for a media gateway;
  • FIG. 3 is a diagram of a packet having a header and user data; [0014]
  • FIG. 4 is a block diagram of a third embodiment of a hardware system architecture for a media gateway; [0015]
  • FIG. 5 is a block diagram of one logical division of the software system of the present invention; [0016]
  • FIG. 6 is a block diagram of a first physical implementation of the software system of FIG. 5; [0017]
  • FIG. 7 is a block diagram of a second physical implementation of the software system of FIG. 5; [0018]
  • FIG. 8 is a block diagram of a third physical implementation of the software system of FIG. 5; [0019]
  • FIG. 9 is a block diagram of a first embodiment of the media engine component of the hardware system of the present invention; [0020]
  • FIG. 10 is a block diagram of a preferred embodiment of the media engine component of the hardware system of the present invention; [0021]
  • FIG. 10[0022] a is a block diagram representation of a preferred architecture for the media layer component of the media engine of FIG. 10;
  • FIG. 11 is a block diagram representation of a first preferred processing unit; [0023]
  • FIG. 12 is a time-based schematic of the pipeline processing conducted by the first preferred processing unit; [0024]
  • FIG. 13 is a block diagram representation of a second preferred processing unit; [0025]
  • FIG. 13[0026] a is a time-based schematic of the pipeline processing conducted by the second preferred processing unit;
  • FIG. 14 is a block diagram representation of a preferred embodiment of the packet processor component of the hardware system of the present invention; [0027]
  • FIG. 15 is a schematic representation of one embodiment of the plurality of network interfaces in the packet processor component of the hardware system of the present invention; [0028]
  • FIG. 16 is a block diagram of a plurality of PCI interfaces used to facilitate control and signaling functions for the packet processor component of the hardware system of the present invention; [0029]
  • FIG. 17 is a first exemplary flow diagram of data communicated between components of the software system of the present invention; [0030]
  • FIG. 17[0031] a is a second exemplary flow diagram of data communicated between components of the software system of the present invention;
  • FIG. 18 is a schematic diagram of logical division of the software system of the present invention; [0032]
  • FIG. 19 is a schematic diagram of preferred components comprising the media processing subsystem of the software system of the present invention; [0033]
  • FIG. 20 is a schematic diagram of preferred components comprising the packetization processing subsystem of the software system of the present invention; [0034]
  • FIG. 21 is a schematic diagram of preferred components comprising the signaling subsystem of the software system of the present invention; [0035]
  • FIG. 22 is a block diagram of a host application operative on a physical DSP; and [0036]
  • FIG. 23 is a block diagram of a host application operative on a virtual DSP.[0037]
  • DETAILED DESCRIPTION OF THE INVENTION
  • The present invention is a system on chip architecture having scalable, distributed processing and memory capabilities through a plurality of processing layers. One embodiment of the present invention is a novel media gateway, designed to enable the communication of media across circuit switched and packet switched networks, and encompasses novel hardware and software methods and systems. The present invention will presently be described with reference to the aforementioned drawings. Headers will be used for purposes of clarity and are not meant to limit or otherwise restrict the disclosures made herein. It will further be appreciated, by those skilled in the art, that use of the term “media” is meant to broadly encompass substantially all types of data that could be sent across a packet switched or circuit switched network, including, but not limited to, voice, video, data, and fax traffic. Where arrows are utilized in the drawings, it would be appreciated by one of ordinary skill in the art that the arrows represent the interconnection of elements and/or components via buses or any other type of communication channel. [0038]
  • Referring to FIG. 1, a block diagram of an exemplary distributed processing layer processor (DPLP) [0039] 100 is shown. The DPLP 100 comprises a plurality of processing layers 105 each in communication with a processing layer controller 107 and central direct memory access (DMA) controller 110 via communication data buses and processing layer interfaces 115. Each processing layer 105 is in communication with a CPU interface 106, which, in turn, is in communication with a CPU 104. Within each processing layer 105, a plurality of pipelined processing units (PUs) 130 are in communication with a plurality of program memories 135 and data memories 140, via communication data buses. Preferably, each program memory 135 and data memory 140 can be accessed by at least one PU 130 via data buses. Each of the PUs 130, program memories 135, and data memories 140 is in communication with an external memory 147 via communication data buses.
  • In a preferred embodiment, the [0040] processing layer controller 107 manages the scheduling of tasks and distribution of processing tasks to each processing layer 105. The processing layer controller 107 arbitrates data and program code transfer requests to and from the program memories 135 and data memories 140 in a round robin fashion. On the basis of this arbitration, the processing layer controller 107 fills the data pathways that define how units directly access memory, namely the DMA channels [not shown]. The processing layer controller 107 is capable of performing instruction decoding to route an instruction according to its dataflow and keep track of the request states for all PUs 130, such as the state of a read-in request, a write-back request and an instruction forwarding. The processing layer controller 107 is further capable of conducting interface related functions, such as programming DMA channels, starting signal generation, maintaining page states for PUs 130 in each processing layer 105, decoding of scheduler instructions, and managing the movement of data from and into the task queues of each PU 130. By performing the aforementioned functions, the processing layer controller 107 substantially eliminates the need for associating complex state machines with the PUs 130 present in each processing layer 105.
  • The [0041] DMA controller 110 is a multi-channel DMA unit for handling the data transfers between the local memory buffer PUs and external memories, such as the SDRAM. Each processing layer 105 has independent DMA channels allocated for transferring data to and from the PU local memory buffers. Preferably, there is an arbitration process, such as a single level of round robin arbitration, between the channels within the DMA to access the external memory. The DMA controller 110 provides hardware support for round robin request arbitration across the PUs 130 and processing layers 105. Each DMA channel functions independently of each other. In an exemplary operation, it is preferred to conduct transfers between local PU memories and external memories by utilizing the address of the local memory, address of the external memory, size of the transfer, direction of the transfer, namely whether the DMA channel is transferring data to the local memory from the external memory or vice-versa, and how many transfers are required for each PU 130. The DMA controller 110 is preferably further capable of arbitrating priority for program code fetch requests, conducting link list traversal and DMA channel information generation, and performing DMA channel prefetch and done signal generation.
  • The [0042] processing layer controller 107 and DMA controller 110 are in communication with a plurality of communication interfaces 160, 190 through which control information and data transmission occurs. Preferably the DPLP 100 includes an external memory interface (such as a SDRAM interface) 170 that is in communication with the processing layer controller 107 and DMA controller 110 and is in communication with an external memory 147.
  • Within each [0043] processing layer 105, there are a plurality of pipelined PUs 130 specially designed for conducting a defined set of processing tasks. In that regard, the PUs are not general-purpose processors and can not be used to conduct any processing task. A survey and analysis of specific processing tasks yielded certain functional unit commonalities that, when combined, yield a specialized PU capable of optimally processing the universe of those specialized processing tasks. The instruction set architecture of each PU yields compact code. Increased code density results in a decrease in required memory and, consequently, a decrease in required area, power, and memory traffic.
  • It is preferred that, within each processing layer, the [0044] PUs 130 operate on tasks scheduled by the processing layer controller 107 through a first-in, first-out (FIFO) task queue [not shown]. The pipeline architecture improves performance. Pipelining is an implementation technique whereby multiple instructions are overlapped in execution. In a computer pipeline, each step in the pipeline completes a part of an instruction. Like an assembly line, different steps are completing different parts of different instructions in parallel. Each of these steps is called a pipe stage or a data segment. The stages are connected on to the next one to form a pipe. Within a processor, instructions enter the pipe at one end, progress through the stages, and exit at the other end. The throughput of an instruction pipeline is determined by how often an instruction exits the pipeline.
  • Additionally, within each [0045] processing layer 105 is a set of distributed memory banks 140 that enable the local storage of instruction sets, processed information and other data required to conduct an assigned processing task. By having memories 140 distributed within discrete processing layers 105, the DPLP 100 remains flexible and, in production, delivers high yields. Conventionally, certain DSP chips are not produced with more than 9 megabytes of memory on a single chip because as memory blocks increase, the probability of bad wafers (due to corrupted memory blocks) also increases. In the present invention, the DPLP 100 can be produced with 12 megabytes or more of memory by incorporating redundant processing layers 105. The ability to incorporate redundant processing layers 105 enables the production of chips with larger amounts of memory because, if a set of memory blocks are bad, rather than throw the entire chip away, the discrete processing layers within which the corrupted memory units are found can be set aside and the other processing layers may be used instead. The scalable nature of the multiple processing layers allows for redundancy and, consequently, higher production yields.
  • While the layered architecture of the present invention is not limited to a specific number of processing layers, certain practical limitations may restrict the number of processing layers that can be incorporated into a single DPLP. One of ordinary skill in the art would appreciate how to determine the processing limitations imposed by external conditions, such as traffic and bandwidth constraints on the system, that restrict the feasible number of processing layers. [0046]
  • Exemplary Application [0047]
  • The present invention can be used to enable the operation of a novel media gateway. The hardware system architecture of the gateway is comprised of a plurality of DPLPs, referred to as Media Engines, that are in communication with a data bus and interconnected with a Host Processor or a Packet Engine which, in turn, is in communication with interfaces to networks, preferably an asynchronous transfer mode (ATM) physical device or gigabit media independent interface (GMII) physical device. [0048]
  • Referring to FIG. 2[0049] a, a first embodiment of the top-level hardware system architecture is shown. A data bus 205 a is connected to interfaces 210 a existent on a first novel Media Engine Type I 215 a and on a second novel Media Engine Type I 220 a. The first novel Media Engine Type I 215 a and second novel Media Engine Type I 220 a are connected through a second set of communication buses 225 a to a novel Packet Engine 230 a which, in turn, is connected through interfaces 235 a to outputs 240 a, 245 a. Preferably, each of the Media Engines Type I 215 a, 220 a is in communication with a SRAM 246 a and SDRAM 247 a.
  • It is preferred that the [0050] data bus 205 a be a time-division multiplex (TDM) bus. A TDM bus is a pathway for the transmission of a number of separate voice, fax, modem, video, and/or other data signals simultaneously over a single communication medium. The separate signals are transmitted by interleaving a portion of each signal with each other, thereby enabling one communications channel to handle multiple separate transmissions and avoiding having to dedicate a separate communication channel to each transmission. Existing networks use TDM to transmit data from one communication device to another. It is further preferred that the interfaces 210 a existent on the first novel Media Engine Type I 215 a and second novel Media Engine Type I 220 a comply with H.100, a hardware specification that details the necessary information to implement a CT bus interface at the physical layer for the PCI computer chassis card slot, independent of software specifications. The CT bus defines a single isochronous communications bus across certain PC chassis card slots and allows for the relatively fluid inter-operation of components. It is appreciated that interfaces abiding by different hardware specifications could be used to receive signals from the data bus 205 a.
  • As described below, each of the two novel Media Engines Type I [0051] 215 a, 220 a can support a plurality of channels for processing media, such as voice. The specific number of channels supported is dependent upon the features required, such as the extent of echo cancellation, and type of codec supported. For codecs having relatively low processing power requirements, such as G.711, each Media Engine Type I 215 a, 220 a can support the processing of around 256 voice channels or more. Each Media Engine Type I 215 a, 220 a is in communication with the Packet Engine 230 a through a communication bus 225 a, preferably a peripheral component interconnect (PCI) communication bus. A PCI communication bus serves to deliver control information and data transfers between the Media Engine Type I chip 215 a, 220 a and the Packet Engine chip 230 a. Because Media Engine Type I 215 a, 220 a was designed to support the processing of lower data volumes, relative to Media Engine Type II described below, a single PCI communication bus can effectively support the transfer of both control and data between the designated chips. It is appreciated, however, that where data traffic becomes too great, the PCI communication bus must be supplemented with a second inter-chip communication bus.
  • The [0052] Packet Engine 230 a receives processed data from each of the two Media Engines Type I 215 a, 220 a via the communication bus 225 a. While theoretically able to connect to a plurality of Media Engines Type I, it is preferred that, for this embodiment, the Packet Engine 230 a be in communication with up to two Media Engines Type I 215 a, 220 a. As will be further described below, the Packet Engine 230 a provides cell and packet encapsulation for data channels, at or around 2016 channels in a preferred embodiment, quality of service functions for traffic management, tagging for differentiated services and multi-protocol label switching, and the ability to bridge cell and packet networks. While it is preferred to use the Packet Engine 230 a, it can be replaced with a different host processor, provided that the host processor is capable of performing the above-described functions of the Packet Engine 230 a.
  • The [0053] Packet Engine 230 a is in communication with an ATM physical device 240 a and GMII physical device 245 a. The ATM physical device 240 a is capable of receiving processed and packetized data, as passed from the Media Engines Type I 215 a, 220 a through the Packet Engine 230 a, and transmitting it through a network operating on an asynchronous transfer mode (an ATM network). As would be appreciated by one of ordinary skill in the art, an ATM network automatically adjusts the network capacity to meet the system needs and can handle voice, modem, fax, video and other data signals. Each ATM data cell, or packet, consists of five octets of header field plus 48 octets for user data. The header contains data that identifies the related cell, a logical address that identifies the routing, header error correction bits, plus bits for priority handling and network management functions. An ATM network is a wideband, low delay, connection-oriented, packet-like switching and multiplexing network that allows for relatively flexible use of the transmission bandwidth. The GMII physical device 245 a operates under a standard for the receipt and transmission of a certain amount of data, irrespective of the media types involved.
  • The embodiment shown in FIG. 2[0054] a can deliver voice processing up to Optical Carrier Level 1 (OC-1). OC-1 is designated at 51.840 million bits per second and provides for the direct electrical-to-optical mapping of the synchronous transport signal (STS-1) with frame synchronous scrambling. Higher optical carrier levels are direct multiples of OC-1, namely OC-3 is three times the rate of OC-1. As shown below, other configurations of the present invention could be used to support voice processing at OC-12.
  • Referring now to FIG. 2[0055] b, an embodiment supporting data rates up to OC-3 is shown, referred to herein as an OC-3 Tile 200 b. A data bus 205 b is connected to interfaces 210 b existent on a first novel Media Engine Type II 215 b and on a second novel Media Engine Type II 220 b. The first novel Media Engine Type II 215 b and second novel Media Engine Type II 220 b are connected through a second set of communication buses 225 b, 227 b to a novel Packet Engine 230 b which, in turn, is connected through interfaces 260 b, 265 b to outputs 240 b, 245 b and through interface 250 b to a Host Processor 255 b.
  • As previously discussed, it is preferred that the [0056] data bus 205 b be a time-division multiplex (TDM) bus and that the interfaces 210 b existent on the first novel Media Engine Type II 215 b and second novel Media Engine Type II 220 b comply with the H.100 a hardware specification. It is again appreciated that interfaces abiding by different hardware specifications could be used to receive signals from the data bus 205 b.
  • Each of the two novel Media Engines Type II [0057] 215 b, 220 b can support a plurality of channels for processing media, such as voice. The specific number of channels supported is dependent upon the features required, such as the extent of echo cancellation, and type of codec implemented. For codecs having relatively low processing power requirements, such as G.711, and where the extent of echo cancellation required is 128 milliseconds, each Media Engine Type II can support the processing of approximately 2016 channels of voice. With two Media Engines Type II providing the processing power, this configuration is capable of supporting data rates of OC-3. Where the Media Engines Type II 215 b, 220 b are implementing a codec requiring higher processing power, such as G.729A, the number of supported channels decreases. As an example, the number of supported channels decreases from 2016 per Media Engine Type II when supporting G.711 to approximately 672 to 1024 channels when supporting G.729A. To match OC-3, an additional Media Engine Type II can be connected to the Packet Engine 230 b via the common communication buses 225 b, 227 b.
  • Each Media Engine Type II [0058] 215 b, 220 b is in communication with the Packet Engine 230 b through communication buses 225 b, 227 b, preferably a peripheral component interconnect (PCI) communication bus 225 b and a UTOPIA II/POS II communication bus 227 b. As previously mentioned, where data traffic volumes exceed a certain threshold, the PCI communication bus 225 b must be supplemented with a second communication bus 227 b. Preferably, the second communication bus 227 b is a UTOPIA II/POS-II bus and serves as the data path between Media Engines Type II 215 b, 220 b and the Packet Engine 230 b. A POS (Packet over SONET) bus represents a high-speed means for transmitting data through a direct connection, allowing the passing of data in its native format without the addition of any significant level of overhead in the form of signaling and control information. UTOPIA (Universal Test and Operations Interface for ATM) refers to an electrical interface between the transmission convergence and physical medium dependent sublayers of the physical layer and acts as the interface for devices connecting to an ATM network.
  • The physical interface is configured to operate in POS-II mode, which allows for variable size data frame transfers. Each packet is transferred using POS-II control signals to explicitly define the start and end of a packet. As shown in FIG. 3, each [0059] packet 300 contains a header 305 with a plurality of information fields and user data 310. Preferably, each header 305 contains information fields including packet type 315 (e.g., RTP, raw encoded voice, AAL2), packet length 320 (total length of the packet including information fields), and channel identification 325 (identifies the physical channel, namely the TDM slot for which the packet is intended or from which the packet came). When dealing with encoded data transfers between a Media Engine Type II 215 b, 220 b and Packet Engine 230 b, it is further preferred to include coder/decoder type 330, sequence number 335, and voice activity detection decision 340 in the header 305.
  • The [0060] Packet Engine 230 b is in communication with the Host Processor 255 b through a PCI target interface 250 b. The Packet Engine 230 b preferably includes a PCI to PCI bridge [not shown] between the PCI interface 226 b to the PCI communication bus 225 b and the PCI target interface 250 b. The PCI to PCI bridge serves as a link for communicating messages between the Host Processor 255 b and two Media Engines Type II 215 b, 220 b.
  • The [0061] novel Packet Engine 230 b receives processed data from each of the two Media Engines Type II 215 b, 220 b via the communication buses 225 b, 227 b. While theoretically able to connect to a plurality of Media Engines Type II, it is preferred that the Packet Engine 230 b be in communication with no more than three Media Engines Type II 215 b, 220 b [only two are shown in FIG. 2b]. As with the previously described embodiment, Packet Engine 230 b provides cell and packet encapsulation for data channels, up to 2048 channels when implementing a G.711 codec, quality of service functions for traffic management, tagging for differentiated services and multi-protocol label switching, and the ability to bridge cell and packet networks. The Packet Engine 230 b is in communication with an ATM physical device 240 b and GMII physical device 245 b through a UTOPIA II/POS II compatible interface 260 b and GMII compatible interface respectively 265 b. In addition to the GMII interface 265 b in the physical layer, referred to herein as the PHY GMII interface, the Packet Engine 230 b also preferably has another GMII interface [not shown] in the MAC layer of the network, referred to herein as the MAC GMII interface. MAC is a media specific access control protocol defining the lower half of the data link layer that defines topology dependent access control protocols for industry standard local area network specifications.
  • As will be further discussed, the [0062] Packet Engine 230 b is designed to enable ATM-IP internetworking. Telecommunication service providers have built independent networks operating on an ATM or IP protocol basis. Enabling ATM-IP internetworking permits service providers to support the delivery of substantially all digital services across a single networking infrastructure, thereby reducing the complexities introduced by having multiple technologies/protocols operative throughout a service provider's entire network. The Packet Engine 230 b is therefore designed to enable a common network infrastructure by providing for the internetworking between ATM modes and IP modes.
  • More specifically, the [0063] novel Packet Engine 230 b supports the internetworking of ATM AALs (ATM Adaptation Layers) to specific IP protocols. Divided into a convergence sublayer and segmentation/reassembly sublayer, AAL accomplishes conversion from the higher layer, native data format and service specifications into the ATM layer. From the data originating source, the process includes segmentation of the original and larger set of data into the size and format of an ATM cell, which comprises 48 octets of data payload and 5 octets of overhead. On the receiving side, the AAL accomplishes reassembly of the data. AAL-1 functions in support of Class A traffic that is connection-oriented Constant Bit Rate (CBR), time-dependent traffic, such as uncompressed, digitized voice and video, and which is stream-oriented and relatively intolerant of delay. AAL-2 functions in support of Class B traffic that is connection-oriented Variable Bit Rate (VBR) isochronous traffic requiring relatively precise timing between source and sink, such as compressed voice and video. AAL-5 functions in support of Class C traffic which is Variable Bit Rate (VBR) delay-tolerant connection-oriented data traffic requiring relatively minimal sequencing or error detection support, such as signaling and control data.
  • These ATM AALs are internetworked with protocols operative in an IP network, such as RTP, UDP, TCP and IP. Internet Protocol (IP) describes software that tracks the Internet's addresses for different nodes, routes outgoing messages, and recognizes incoming messages while allowing a data packet to traverse multiple networks from source to destination. Realtime Transport Protocol (RTP) is a standard for streaming realtime multimedia over IP in packets and supports transport of real-time data, such as interactive video and video over packet switched networks. Transmission Control Protocol (TCP) is a transport layer, connection oriented, end-to-end protocol that provides relatively reliable, sequenced, and unduplicated delivery of bytes to a remote or a local user. User Datagram Protocol (UDP) provides for the exchange of datagrams without acknowledgements or guaranteed delivery and is a transport layer, connectionless mode protocol. In the preferred embodiment represented in FIG. 2[0064] b it is preferred that ATM AAL-1 be internetworked with RTP, UDP, and IP protocols, AAL-2 be internetworked with UDP and IP protocols, and AAL-5 be internetworked with UDP and IP protocols or TCP and IP protocols.
  • Multiple OC-3 tiles, as presented in FIG. 2[0065] b, can be interconnected to form a tile supporting higher data rates. As shown in FIG. 4, four OC-3 tiles 405 can be interconnected, or “daisy chained”, together to form an OC-12 tile 400. Daisy chaining is a method of connecting devices in a series such that signals are passed through the chain from one device to the next. By enabling daisy chaining, the present invention provides for currently unavailable levels of scalability in data volume support and hardware implementation. A Host Processor 455 is connected via communication buses 425, preferably PCI communication buses, to the PCI interface 435 on each of the OC-3 tiles 405. Each OC-3 tile 405 has a TDM interface 460 that operates via a TDM communication bus 465 to receive TDM signals via a TDM interface [not shown]. Each OC-3 tile 405 is further in communication with an ATM physical device 490 through a communication bus 495 connected to the OC-3 tile 405 through a UTOPIA II/POS II interface 470. Data received by an OC-3 tile 405 and not processed, because, for example, the data packet is directed toward a specific packet engine address that was not found in that specific OC-3 tile 405, is sent to the next OC-3 tile 405 in the series via the PHY GMII interface 410 and received by the next OC-3 tile via the MAC GMII interface 413. Enabling daisy chaining eliminates the need for an external aggregator to interface the GMII interfaces on each of the OC-3 tiles in order to enable integration. The final OC-3 tile 405 is in communication with a GMII physical device 417 via the PHY GMII interface 410.
  • Operating on the above-described hardware architecture embodiments is a plurality of novel, integrated software systems designed to enable media processing, signaling, and packet processing. Referring now to FIG. 5, a logical division of the [0066] software system 500 is shown. The software system 500 is divided into three subsystems, a Media Processing Subsystem 505, a Packetization Subsystem 540, and a Signaling/Management Subsystem 570. Each subsystem 505, 540, 570 further comprises a series of modules 520 designed to perform different tasks in order to effectuate the processing and transmission of media. It is preferred that the modules 520 be designed in order to encompass a single core task that is substantially non-divisible. For example, exemplary modules include echo cancellation, codec implementation, scheduling, IP-based packetization, and ATM-based packetization, among others. The nature and functionality of the modules 520 deployed in the present invention will be further described below.
  • The logical system of FIG. 5 can be physically deployed in a number of ways, depending on processing needs, due, in part, to the novel software architecture, to be described below. As shown in FIG. 6, one physical embodiment of the software system described in FIG. 5 is to be on a [0067] single chip 600, where the media processing block 610, packetization block 620, and management block 630 are all operative on the same chip. If processing needs increase, thereby requiring more chip power be dedicated to media processing, the software system can be physically implemented such that the media processing block 710 and packetization block 720 operate on a DSP 715 that is in communication via a data bus 770 with the management block 730 that operates on a separate host processor 735, as depicted in FIG. 7. Similarly, if processing needs further increase, the media processing block 810 and packetization block 820 can be implemented on separate DSPs 860, 865 and communicate via data buses 870 with each other and with the management block 830 that operates on a separate host processor 835, as depicted in FIG. 8. Within each block, the modules can be physically separated onto different processors to enable for a high degree of system scalability.
  • In a preferred embodiment, four OC-3 tiles are combined onto a single integrated circuit (IC) card wherein each OC-3 tile is configured to perform media processing and packetization tasks. The IC card has four OC-3 tiles in communication via data buses. As previously described, the OC-3 tiles each have three Media Engine II processors in communication via interchip communication buses with a Packet Engine processor. The Packet Engine processor has a MAC and PHY interface by which communications external to the OC-3 tiles are performed. The PHY interface of the first OC-3 tile is in communication with the MAC interface of the second OC-3 tile. Similarly, the PHY interface of the second OC-3 tile is in communication with the MAC interface of the third OC-3 tile and the PHY interface of the third OC-3 tile is in communication with the MAC interface of the fourth OC-3 tile. The MAC interface of the first OC-3 tile is in communication with the PHY interface of a host processor. Operationally, each Media Engine II processor implements the Media Processing Subsystem of the present invention, shown in FIG. 5 as [0068] 505. Each Packet Engine processor implements the Packetization Subsystem of the present invention, shown in FIG. 5 as 540. The host processor implements the Management Subsystem, shown in FIG. 5 as 570.
  • The primary components of the top-level hardware system architecture will now be described in further detail, including Media Engine Type I, Media Engine Type II, and Packet Engine. Additionally, the software architecture, along with specific features, will be further described in detail. [0069]
  • Media Engines [0070]
  • Both Media Engine I and Media Engine II are types of DPLPs and therefore comprise a layered architecture wherein each layer encodes and decodes up to N channels of voice, fax, modem, or other data depending on the layer configuration. Each layer implements a set of pipelined processing units specially designed through substantially optimal hardware and software partitioning to perform specific media processing functions. The processing units are special-purpose digital signal processors that are each optimized to perform a particular signal processing function or a class of functions. By creating processing units that are capable of performing a well-defined class of functions, such as echo cancellation or codec implementation, and placing them in a pipeline structure, the present invention provides a media processing system and method with substantially greater performance than conventional approaches. [0071]
  • Referring to FIG. 9, a diagram of [0072] Media Engine I 900 is shown. Media Engine I 900 comprises a plurality of Media Layers 905 each in communication with a central direct memory access (DMA) controller 910 via communication data buses 920. Using a DMA approach enables the bypassing of a system processing unit to handle the transfer of data between itself and system memory directly. Each Media Layer 905 further comprises an interface to the DMA 925 interconnected with the communication data buses 920. In turn, the DMA interface 925 is in communication with each of a plurality of pipelined processing units (PUs) 930 via communication data buses 920 and a plurality of program and data memories 940, via communication data buses 920, that are situated between the DMA interface 925 and each of the PUs 930. The program and data memories 940 are also in communication with each of the PUs 930 via data buses 920. Preferably, each PU 930 can access at least one program memory and at least one data memory unit 940. Further, it is also preferred to have at least one first-in, first-out (FIFO) task queue [not shown] to receive scheduled tasks and queue them for operation by the PUs 930.
  • While the layered architecture of the present invention is not limited to a specific number of Media Layers, certain practical limitations may restrict the number of Media Layers that can be stacked into a single Media Engine I. As the number of Media Layers increase, the memory and device input/output bandwidth may increase to such an extent that the memory requirements, pin count, density, and power consumption are adversely affected and become incompatible with application or economic requirements. Those practical limitations, however, do not represent restrictions on the scope and substance of the present invention. [0073]
  • [0074] Media Layers 905 are in communication with an interface to the central processing unit 950 (CPU IF) through communication buses 920. The CPU IF 950 transmits and receives control signals and data from an external scheduler 955, the DMA controller 910, a PCI interface (PCI IF) 960, a SRAM interface (SRAM IF) 975, and an interface to an external memory, such as an SDRAM interface (SDRAM IF) 970 through communication buses 920. The PCI IF 960 is preferably used for control signals. The SDRAM IF 970 connects to a synchronized dynamic random access memory module whereby the memory access cycles are synchronized with the CPU clock in order to eliminate wait time associated with memory fetching between random access memory (RAM) and the CPU. In a preferred embodiment, the SDRAM IF 970 that connects the processor with the SDRAM supports 133 MHz synchronous DRAM and asynchronous memory. It supports one bank of SDRAM (64 Mbit/256 Mbit to 256 MB maximum) and 4 asynchronous devices (8/16/32 bit) with a data path of 32 bits and fixed length as well as undefined length block transfers and accommodates back-to-back transfers. Eight transactions may be queued for operation. The SDRAM [not shown] contains the states of the PUs 930. One of ordinary skill in the art would appreciate that, although not preferred, other external memory configurations and types could be selected in place of the SDRAM and, therefore, that another type of memory interface could be used in place of the SDRAM IF 970.
  • The SDRAM IF [0075] 970 is further in communication with the PCI IF 960, DMA controller 910, the CPU IF 950, and, preferably, the SRAM interface (SRAM IF) 975 through communication buses 920. The SRAM [not shown] is a static random access memory that is a form of random access memory that retains data without constant refreshing, offering relatively fast memory access. The SRAM IF 975 is also in communication with a TDM interface (TDM IF) 980, the CPU IF 950, the DMA controller 910, and the PCI IF 960 via data buses 920.
  • In a preferred embodiment, the TDM IF [0076] 980 for the trunk side is preferably H.100/H.110 compatible and the TDM bus 981 operates at 8.192 MHz. Enabling the Media Engine I 900 to provide 8 data signals, therefore delivering a capacity up to 512 full duplex channels, the TDM IF 980 has the following preferred features: a H.100/H.110 compatible slave, frame size can be set to 16 or 20 samples and the scheduler can program the TDM IF 980 to store a specific buffer or frame size, programmable staggering points for the maximum number of channels. Preferably, the TDM IF interrupts the scheduler after every N samples of 8,000 Hz clock with the number N being programmable with possible values of 2, 4, 6, and 8. In a voice application, the TDM IF 980 preferably does not transfer the pulse code modulation (PCM) data to memory on a sample-by-sample basis, but rather buffers 16 or 20 samples, depending on the frame size that the encoders and decoders are using, of a channel and then transfers the voice data for that channel to memory.
  • The [0077] PCI IF 960 is also in communication with the DMA controller 910 via communication buses 920. External connections comprise connections between the TDM IF 980 and a TDM bus 981, between the SRAM IF 975 and a SRAM bus 976, between the SDRAM IF 970 and a SDRAM bus 971, preferably operating at 32 bit @ 133 MHz, and between the PCI IF 960 and a PCI 2.1 Bus 961 also preferably operating at 32 bit @ 133 MHz.
  • External to Media Engine I, the [0078] scheduler 955 maps the channels to the Media Layers 905 for processing. When the scheduler 955 is processing a new channel, it assigns the channel to one of the layers, depending upon processing resources available per layer 905. Each layer 905 handles the processing of a plurality of channels such that the processing is performed in parallel and is divided into fixed frames, or portions of data. The scheduler 955 communicates with each Media Layer 905 through the transmission of data, in the form of tasks, to the FIFO task queues wherein each task is a request to the Media Layer 905 to process a plurality of data portions for a particular channel. It is therefore preferred for the scheduler 955 to initiate the processing of data from a channel by putting a task in a task queue, rather than programming each PU 930 individually. More specifically, it is preferred to have the scheduler 955 initiate the processing of data from a channel by putting a task in the task queue of a particular PU 930 and having the Media Layer's 905 pipeline architecture manage the data flow to subsequent PUs 930.
  • The [0079] scheduler 955 should manage the rate by which each of the channels is processed. In an embodiment where the Media Layer 905 is required to accept the processing of data from M channels and each of the channels uses a frame size of T msec, then it is preferred that the scheduler 955 processes one frame of each of the M channels within each T msec interval. Further, in a preferred embodiment, the scheduling is based upon periodic interrupts, in the form of units of samples, from the TDM IF 980. As an example, if the interrupt period is two samples then it is preferred that the TDM IF 980 interrupts the scheduler every time it gathers two new samples of all channels. The scheduler preferably maintains a “tick-count”, which is incremented on every interrupt and reset to zero when time equal to a frame size has passed. The mapping of channels to time slots is preferably not fixed. For example, in voice applications, whenever a call starts on a channel, the scheduler dynamically assigns a layer to a provisioned time slot channel. It is further preferred that the data transfer from a TDM buffer to the memory is aligned with the time slot in which this data is processed, thereby staggering the data transfer for different channels from TDM to memory, and vice-versa, in a manner that is equivalent to the staggering of the processing of different channels. Consequently, it is further preferred that the TDM IF 980 maintains a tick count variable wherein there is some synchronization between the tick counts of TDM and scheduler 955. In the exemplary embodiment described above, the tick count variable is set to zero on every 2 ms or 2.5 ms depending on the buffer size.
  • Referring to FIG. 10, a block diagram of [0080] Media Engine II 1000 is shown. Media Engine II 1000 comprises a plurality of Media Layers 1005 each in communication with processing layer controller 1007, referred to herein as a Media Layer Controller 1007, and central direct memory access (DMA) controller 1010 via communication data buses and an interface 1015. Each Media Layer 1005 is in communication with a CPU interface 1006 that, in turn, is in communication with a CPU 1004. Within each Media Layer 1005, a plurality of pipelined processing units (PUs) 1030 are in communication with a plurality of program memories 1035 and data memories 1040, via communication data buses. Preferably, each PU 1030 can access at least one program memory 1035 and one data memory 1040. Each of the PUs 1030, program memories 1035, and data memories 1040 is in communication with an external memory 1047 via the Media Layer Controller 1007 and DMA 1010. In a preferred embodiment, each Media Layer 1005 comprises four PUs 1030, each of which is in communication with a single program memory 1035 and data memory 1040, wherein the each of the PUs 1031, 1032, 1033, 1034 is in communication with each of the other PUs 1031, 1032, 1033, 1034 in the Media Layer 1005.
  • Shown in FIG. 10[0081] a, a preferred embodiment of the architecture of the Media Layer Controller, or MLC, is provided. A program memory 1005 a, preferably 512×64, operates in conjunction with a controller 1010 a and data memory 1015 a to deliver data and instructions to a data register file 1017 a, preferably 16×32, and address register file 1020 a, preferably 4×12. The data register file 1017 a and address register file 1020 a are in communication with functional units such as an adder/MAC 1025 a, logical unit 1027 a, and barrel shifter 1030 a and with units such as a request arbitration logic unit 1033 a and DMA channel bank 1035 a.
  • Referring back to FIG. 10, the [0082] MLC 1007 arbitrates data and program code transfer requests to and from the program memories 1035 and data memories 1040 in a round robin fashion. On the basis of this arbitration the MLC 1007 fills the data pathways that define how units directly access memory, namely the DMA channels [not shown]. The MLC 1007 is capable of performing instruction decoding to route an instruction according to its dataflow and keep track of the request states for all PUs 1030, such as the state of a read-in request, a write-back request and an instruction forwarding. The MLC 1007 is further capable of conducting interface related functions, such as programming DMA channels, starting signal generation, maintaining page states for PUs 1030 in each Media Layer 1005, decoding of scheduler instructions, and managing the movement of data from and into the task queues of each PU 1030. By performing the aforementioned functions, the Media Layer Controller 1007 substantially eliminates the need for associating complex state machines with the PUs 1030 present in each Media Layer 1005.
  • The [0083] DMA controller 1010 is a multi-channel DMA unit for handling the data transfers between the local memory buffer PUs and external memories, such as the SDRAM. Preferably, DMA channels are programmed dynamically. More specifically, PUs 1030 generate independent requests, each having an associated priority level, and send them to the MLC 1007 for reading or writing. Based upon the priority request delivered by a particular PU 1030, the MLC 1007 programs the DMA channel accordingly. Preferably, there is also an arbitration process, such as a single level of round robin arbitration, between the channels within the DMA to access the external memory. The DMA Controller 1010 provides hardware support for round robin request arbitration across the PUs 1030 and Media Layers 1005.
  • In an exemplary operation, it is preferred to conduct transfers between local PU memories and external memories by utilizing the address of the local memory, address of the external memory, size of the transfer, direction of the transfer, namely whether the DMA channel is transferring data to the local memory from the external memory or vice-versa, and how many transfers are required for each PU. In this preferred embodiment, a DMA channel is generated and receives this information from two 32-bit registers residing in the DMA. A third register exchanges control information between the DMA and each PU that contains the current status of the DMA transfer. In a preferred embodiment, arbitration is performed among the following requests: 1 structure read, 4 data read and 4 data write requests from each Media Layer, approximately 90 data requests in total, and 4 program code fetch requests from each Media Layer, approximately 40 program code fetch requests in total. The [0084] DMA Controller 1010 is preferably further capable of arbitrating priority for program code fetch requests, conducting link list traversal and DMA channel information generation, and performing DMA channel prefetch and done signal generation.
  • The [0085] MLC 1007 and DMA Controller 1010 are in communication with a CPU IF 1006 through communication buses. The PCI IF 1060 is in communication with an external memory interface (such as a SDRAM IF) 1070 and with the CPU IF 1006 via communication buses. The external memory interface 1070 is further in communication with the MLC 1007 and DMA Controller 1010 and a TDM IF 1080 through communication buses. The SDRAM IF 1070 is in communication with a packet processor interface, such as a UTOPIA II/POS compatible interface (U2/POS IF), 1090 via communication data buses. The U2/POS IF 1090 is also preferably in communication with the CPU IF 1006. Although the preferred embodiments of the PCI IF and SDRAM IF are similar to Media Engine I, it is preferred that the TDM IF 1080 have all 32 serial data signals implemented, thereby supporting at least 2048 full duplex channels. External connections comprise connections between the TDM IF 1080 and a TDM bus 1081, between the external memory 1070 and a memory bus 1071, preferably operating at 64 bit at 133 MHz, between the PCI IF 1060 and a PCI 2.1 Bus 1061 also preferably operating at 32 bit at 133 MHz, and between the U2/POS IF 1090 and a UTOPIA II/POS connection 1091 preferably operative at 622 megabits per second. In a preferred embodiment, the TDM IF 1080 for the trunk side is preferably H.100/H.110 compatible and the TDM bus 1081 operates at 8.192 MHz, as previously discussed in relation to the Media Engine I.
  • For both Media Engine I and Media Engine II, within each media layer, the present invention utilizes a plurality of pipelined PUs specially designed for conducting a defined set of processing tasks. In that regard, the PUs are not general-purpose processors and cannot be used to conduct any processing task. A survey and analysis of specific processing tasks yielded certain functional unit commonalities that, when combined, yield a specialized PU capable of optimally processing the universe of those specialized processing tasks. The instruction set architecture of each PU yields compact code. Increased code density results in a decrease in required memory and, consequently, a decrease in required area, power, and memory traffic. [0086]
  • The pipeline architecture also improves performance. Pipelining is an implementation technique whereby multiple instructions are overlapped in execution. In a computer pipeline, each step in the pipeline completes a part of an instruction. Like an assembly line, different steps are completing different parts of different instructions in parallel. Each of these steps is called a pipe stage or a data segment. The stages are connected on to the next to form a pipe. Within a processor, instructions enter the pipe at one end, progress through the stages, and exit at the other end. The throughput of an instruction pipeline is determined by how often an instruction exits the pipeline. [0087]
  • More specifically, one type of PU (referred to herein as EC PU) has been specially designed to perform, in a pipeline architecture, a plurality of media processing functions, such as echo cancellation (EC), voice activity detection (VAD), and tone signaling (TS) functions. Echo cancellation removes from a signal echoes that may arise as a result of the reflection and/or retransmission of modified input signals back to the originator of the input signals. Commonly, echoes occur when signals that were emitted from a loudspeaker are then received and retransmitted through a microphone (acoustic echo) or when reflections of a far end signal are generated in the course of transmission along hybrids wires (line echo). Although undesirable, echo is tolerable in a telephone system, provided that the time delay in the echo path is relatively short; however, longer echo delays can be distracting or confusing to a far end speaker. Voice activity detection determines whether a meaningful signal or noise is present at the input. Tone signaling comprises the processing of supervisory, address, and alerting signals over a circuit or network by means of tones. Supervising signals monitor the status of a line or circuit to determine if it is busy, idle, or requesting service. Alerting signals indicate the arrival of an incoming call. Addressing signals comprise routing and destination information. [0088]
  • The LEC, VAD, and TS functions can be efficiently executed using a PU having several single-cycle multiply and accumulate (MAC) units operating with an Address Generation Unit and an Instruction Decoder. Each MAC unit includes a compressor, sum and carry registers, an adder, and a saturation and rounding logic unit. In a preferred embodiment, shown in FIG. 11, this [0089] PU 1100 comprises a load store architecture with a single Address Generation Unit (AGU) 1105, supporting zero over-head looping and branching with delay slots, and an Instruction Decoder 1106. The plurality of MAC units 1110 operate in parallel on two 16-bit operands and perform the following function:
  • Acc+=a*b
  • Guard bits are appended with sum and carry registers to facilitate repeated MAC operations. A scale unit prevents accumulator overflow. Each [0090] MAC unit 1110 may be programmed to perform round operations automatically. Additionally, it is preferred to have an addition/subtraction unit [not shown] as a conditional sum adder with both the input operands being 20 bit values and the output operand being a 16-bit value.
  • Operationally, the EC PU performs tasks in a pipeline fashion. A first pipeline stage comprises an instruction fetch wherein instructions are fetched into an instruction register from program memory. A second pipeline stage comprises an instruction decode and operand fetch wherein an instruction is decoded and stored in a decode register. The hardware loop machine is initialized in this cycle. Operands from the data register files are stored in operand registers. The AGU operates during this cycle. The address is placed on data memory address bus. In the case of a store operation, data is also placed on the data memory data bus. For post increment or decrement instructions, the address is incremented or decremented after being placed on the address bus. The result is written back to address register file. The third pipeline stage, the Execute stage, comprises the operation on the fetched operands by the Addition/Subtraction Unit and MAC units. The status register is updated and the computed result or data loaded from memory is stored in the data/address register files. The states and history information required for the EC PU operations are fetched through a multi-channel DMA interface, as previously shown in each Media Layer. The EC PU configures the DMA controller registers directly. The EC PU loads the DMA chain pointer with the memory location of the head of the chain link. [0091]
  • By enabling different data streams to move through the pipelined stages concurrently, the EC PU reduces wait time for processing incoming media, such as voice. Referring to FIG. 12, in [0092] time slot 1 1205, an instruction fetch task (IF) is performed for processing data from channel 1 1250. In time slot 2 1206, the IF task is performed for processing data from channel 2 1255 while, concurrently, an instruction decode and operand fetch (IDOF) is performed for processing data from channel 1 1250. In time slot 3 1207, an IF task is performed for processing data from channel 3 1260 while, concurrently, an instruction decode and operand fetch (IDOF) is performed for processing data from channel 2 1255 and an Execute (EX) task is performed for processing data from channel 1 1250. One of ordinary skill in the art would appreciate that, because channels are dynamically generated, the channel numbering may not reflect the actual location and assignment of a task. Channel numbering here is used to simply indicate the concept of pipelining across multiple channels and not to represent actual task locations.
  • A second type of PU (referred to herein as CODEC PU) has been specially designed to perform, in a pipeline architecture, a plurality of media processing functions, such as encoding and decoding signals in accordance with certain standards and protocols, including standards promoted by the International Telecommunication Union (ITU) such as voice standards, including G.711, G.723.1, G.726, G.728, G.729A/B/E, and data modem standards, including V.17, V.34, and V.90, among others (referred to herein as Codecs), and performing comfort noise generation (CNG) and discontinuous transmission (DTX) functions. The various Codecs are used to encode and decode voice signals with differing degrees of complexity and resulting quality. CNG is the generation of background noise that gives users a sense that the connection is live and not broken. A DTX function is implemented when the frame being received comprises silence, rather than a voice transmission. [0093]
  • The Codecs, CNG, and DTX functions can be efficiently executed using a PU having an Arithmetic and Logic Unit (ALU), MAC unit, Barrel Shifter, and Normalization Unit. In a preferred embodiment, shown in FIG. 13, the [0094] CODEC PU 1300 comprises a load store architecture with a single Address Generation Unit (AGU) 1305, supporting zero over-head looping and zero overhead branching with delay slots, and an Instruction Decoder 1306.
  • In an exemplary embodiment, each [0095] MAC unit 1310 includes a compressor, sum and carry registers, an adder, and a saturation and rounding logic unit. The MAC unit 1310 is implemented as a compressor with feedback into the compression tree for accumulation. One preferred embodiment of a MAC 1310 has a latency of approximately 2 cycles with a throughput of 1 cycle. The MAC 1310 operates on two 17-bit operands, signed or unsigned. The intermediate results are kept in sum and carry registers. Guard bits are appended to the sum and carry registers for repeated MAC operations. The saturation logic converts the Sum and Carry results to 32 bit values. The rounding logic rounds a 32 bit to a 16-bit number. Division logic is also implemented in the MAC unit 1310.
  • In an exemplary embodiment, the [0096] ALU 1320 includes a 32 bit adder and a 32 bit logic circuit capable of performing a plurality of operations, including add, add with carry, subtract, subtract with borrow, negate, AND, OR, XOR, and NOT. One of the inputs to the ALU 1320 has an XOR array, which operates on 32-bit operands. Comprising an absolute unit, a logic unit, and an addition/subtraction unit, the ALU's 1320 absolute unit drives this array. Depending on the output of the absolute unit, the input operand is either XORed with one or zero to perform negation on the input operands.
  • In an exemplary embodiment, the [0097] Barrel Shifter 1330 is placed in series with the ALU 1320 and acts as a pre-shifter to operands requiring a shift operation followed by any ALU operations. One type of preferred Barrel Shifter can perform a maximum of 9-bit left or 26-bit right arithmetic shifts on 16-bit or 32-bit operands. The output of the Barrel Shifter is a 32-bit value, which is accessible to both the inputs of the ALU 1320.
  • In an exemplary embodiment, the [0098] Normalization unit 1340 counts the redundant sign bits in the number. It operates on 2's complement 16-bit numbers. Negative numbers are inverted to compute the redundant sign bits. The number to be normalized is fed into the XOR array. The other input comes from the sign bit of the number. Where the media being processed is voice, it is preferred to have an interface to the EC PU. The EC PU uses VAD to determine whether a frame being received comprises silence or speech. The VAD decision is preferably communicated to the CODEC PU so that it may determine whether to implement a Codec or DTX function.
  • Operationally, the CODEC PU performs tasks in a pipeline fashion. A first pipeline stage comprises an instruction fetch wherein instructions are fetched into an instruction register from program memory. At the same time, the next program counter value is computed and stored in the program counter. In addition, loop and branch decisions are taken in the same cycle. A second pipeline stage comprises an instruction decode and operand fetch wherein an instruction is decoded and stored in a decode register. The instruction decode, register read and branch decisions happen in the instruction decode stage. In the third pipeline stage, the Execute [0099] 1 stage, the Barrel Shifter and the MAC compressor tree complete their computation. Addresses to data memory are also applied in this stage. In the fourth pipeline stage, the Execute 2 stage, the ALU, normalization unit, and the MAC adder complete their computation. Register write-back and address registers are updated at the end of the Execute-2 stage. The states and history information required for the CODEC PU operations are fetched through a multi-channel DMA interface, as previously shown in each Media Layer.
  • By enabling different data streams to move through the pipelined stages concurrently, the CODEC PU reduces wait time for processing incoming media, such as voice. Referring to FIG. 13[0100] a, in time slot 1 1305 a, an instruction fetch task (IF) is performed for processing data from channel 1 1350 a. In time slot 2 1306 a, the IF task is performed for processing data from channel 2 1355 a while, concurrently, an instruction decode and operand fetch (IDOF) is performed for processing data from channel 1 1350 a. In time slot 3 1307 a, an IF task is performed for processing data from channel 3 1360 a while, concurrently, an instruction decode and operand fetch (IDOF) is performed for processing data from channel 2 1355 a and an Execute 1 (EX1) task is performed for processing data from channel 1 1350 a. In time slot 4 1308 a, an IF task is performed for processing data from channel 4 1370 a while, concurrently, an instruction decode and operand fetch (IDOF) is performed for processing data from channel 3 1360 a, an Execute 1 (EX1) task is performed for processing data from channel 2 1355 a, and an Execute 2 (EX2) task is performed for processing data from channel 1 1350 a. One of ordinary skill in the art would appreciate that, because channels are dynamically generated, the channel numbering may not reflect the actual location and assignment of a task. Channel numbering here is used to simply indicate the concept of pipelining across multiple channels and not to represent actual task locations.
  • The pipeline architecture of the present invention is not limited to instruction processing within PUs, but also exists on a PU-to-PU architecture level. As shown in FIG. 13[0101] b, multiple PUs may operate on a data set N in a pipeline fashion to complete the processing of a plurality of tasks where each task comprises a plurality of steps. A first PU 1305 b may be capable of performing echo cancellation functions, labeled task A. A second PU 1310 b may be capable of performing tone signaling functions, labeled task B. A third PU 1315 b may be capable of performing a first set of encoding functions, labeled task C. A fourth PU 1320 b may be capable of performing a second set of encoding functions, labeled task D. In time slot 1 1350 b, the first PU 1305 b performs task A1 1380 b on data set N. In time slot 2 1355 b, the first PU 1305 b performs task A2 1381 b on data set N and the second PU 1310 b performs task B1 1387 b on data set N. In time slot 3 1360 b, the first PU 1305 b performs task A3 1382 b on data set N, the second PU 1310 b performs task B2 1388 b on data set N, and the third PU 1315 b performs task C1 1394 b on data set N. In time slot 4 1365 b, the first PU 1305 b performs task A4 1383 b on data set N, the second PU 1310 b performs task B3 1389 b on data set N, the third PU 1315 b performs task C2 1395 b on data set N, and the fourth PU 1320 b performs task D1 1330 on data set N. In time slot 5 1370 b, the first PU 1305 b performs task A5 1384 b on data set N, the second PU 1310 b performs task B4 1390 b on data set N, the third PU 1315 b performs task C3 1396 b on data set N, and the fourth PU 1320 b performs task D2 1331 on data set N. In time slot 6 1375 b, the first PU 1305 b performs task A5 1385 b on data set N, the second PU 1310 b performs task B4 1391 b on data set N, the third PU 1315 b performs task C3 1397 b on data set N, and the fourth PU 1320 b performs task D2 1332 on data set N. One of ordinary skill in the art would appreciate how the pipeline processing would further progress.
  • In this exemplary embodiment, the combination of specialized PUs with a pipeline architecture enables the processing of greater channels on a single media layer. Where each channel implements a G.711 codec and 128 ms of echo tail cancellation with DTMF detection/generation, voice activity detection (VAD), comfort noise generation (CNG), and call discrimination, the media engine layer operates at 1.95 MHz per channel. The resulting channel power consumption is at or about 6 mW per channel using 0.13μ standard cell technology. [0102]
  • Packet Engine [0103]
  • The Packet Engine of the present invention is a communications processor that, in a preferred embodiment, supports the plurality of interfaces and protocols used in media gateway processing systems between circuit-switched networks, packet-based IP networks, and cell-based ATM networks. The Packet Engine comprises a unique architecture capable of providing a plurality of functions for enabling media processing, including, but not limited to, cell and packet encapsulation, quality of service functions for traffic management and tagging for the delivery of other services and multi-protocol label switching, and the ability to bridge cell and packet networks. [0104]
  • Referring now to FIG. 14, an exemplary architecture of the [0105] Packet Engine 1400 is provided. In the embodiment depicted, the Packet Engine 1400 is configured to handle data rate up to and around OC-12. It is appreciated by one of ordinary skill in the art that certain modifications can be made to the fundamental architecture to increase the data handling rates beyond OC-12. The Packet Engine 1400 comprises a plurality of processors 1405, a host processor 1430, an ATM engine 1440, in-bound DMA channel 1450, out-bound DMA channel 1455, a plurality of network interfaces 1460, a plurality of registers 1470, memory 1480, an interface to external memory 1490, and a means to receive control and signaling information 1495.
  • The [0106] processors 1405 comprise an internal cache 1407, central processing unit interface 1409, and data memory 1411. In a preferred embodiment, the processors 1405 comprise 32-bit reduced instruction set computing (RISC) processors with a 16 Kb instruction cache and a 12 Kb local memory. The central processing unit interface 1409 permits the processor 1405 to communicate with other memories internal to, and external to, the Packet Engine 1400. The processors 1405 are preferably capable of handling both in-bound and out-bound communication traffic. In a preferred implementation, generally half of the processors handle in-bound traffic while the other half handle out-bound traffic. The memory 1411 in the processor 1405 is preferably divided into a plurality of banks such that distinct elements of the Packet Engine 1400 can access the memory 1411 independently and without contention, thereby increasing overall throughput. In a preferred embodiment, the memory is divided into three banks, such that the in-bound DMA channel can write to memory bank one, while the processor is processing data from memory bank two, while the out-bound DMA channel is transferring processed packets from memory bank three.
  • The [0107] ATM engine 1440 comprises two primary subcomponents, referred to herein as the ATMRx Engine and the ATMTx Engine. The ATMRx Engine processes an incoming ATM cell header and transfers the cell for corresponding AAL protocol, namely AAL1, AAL2, AAL5, processing in the internal memory or to another cell manager, if external to the system. The ATMTx Engine processes outgoing ATM cells and requests the outbound DMA channel to transfer data to a particular interface, such as the UTOPIAII/POSII interface. Preferably, it has separate blocks of local memory for data exchange. The ATM engine 1440 operates in combination with data memory 1483 to map an AAL channel, namely AAL2, to a corresponding channel on the TDM bus (where the Packet Engine 1400 is connected to a Media Engine) or to a corresponding IP channel identifier where internetworking between IP and ATM systems is required. The internal memory 1480 utilizes an independent block to maintain a plurality of tables for comparing and/or relating channel identifiers with virtual path identifiers (VPI), virtual channel identifiers (VCI), and compatibility identifiers (CID). A VPI is an eight-bit field in the ATM cell header that indicates the virtual path over which the cell should be routed. A VCI is the address or label of a virtual channel comprised of a unique numerical tag, defined by a 16-bit field in the ATM cell header, which identifies a virtual channel over which a stream of cells is to travel during the course of a session between devices. The plurality of tables are preferably updated by the host processor 1430 and are shared by the ATMRx and ATMTx engines.
  • The [0108] host processor 1430 is preferably a RISC processor with an instruction cache 1431. The host processor 1430 communicates with other hardware blocks through a CPU interface 1432 that is capable of managing communications with Media Engines over a bus, such as a PCI bus, and with a host, such as a signaling host through a PCI-PCI bridge. The host processor 1430 is capable of being interrupted by other processors 1405 through their transmission of interrupts which are handled by an interrupt handler 1433 in the CPU interface. It is further preferred that the host processor 1430 be capable of performing the following functions: 1) boot-up processing, including loading code from a flash memory to an external memory and starting execution, initializing interfaces and internal registers, acting as a PCI host, and appropriately configuring them, and setting up inter-processor communications between a signaling host, the packet engine itself, and media engines, 2) DMA configuration, 3) certain network management functions, 4) handling exceptions, such as the resolution of unknown addresses, fragmented packets, or packets with invalid headers, 4) providing intermediate storage of tables during system shutdown, 5) IP stack implementation, and 6) providing a message-based interface for users external to the packet engine and for communicating with the packet engine through the control and signaling means, among others.
  • In a preferred embodiment, two DMA channels are provided for data exchange between different memory blocks via data buses. Referring to FIG. 14, the in-bound [0109] DMA channel 1450 is utilized to handle incoming traffic to the Packet Engine 1400 data processing elements and the out-bound DMA channel 1455 is utilized to handle outgoing traffic to the plurality of network interfaces 1460. The in-bound DMA channel 1450 handles all of the data coming into the Packet Engine 1400.
  • To receive and transmit data to ATM and IP networks, the [0110] Packet Engine 1400 has a plurality of network interfaces 1460 that permit the Packet Engine to compatibly communicate over networks. Referring to FIG. 15, in a preferred embodiment, the network interfaces comprise a GMII PHY interface 1562, a GMII MAC interface 1564, and two UTOPIAII/POSII interfaces 1566 in communication with 622 Mbps ATM/SONET connections 1568 to receive and transmit data. For IP-based traffic, the Packet Engine [not shown] supports MAC and emulates PHY layers of the Ethernet interface as specified in IEEE 802.3. The gigabit Ethernet MAC 1570 comprises FIFOs 1503 and a control state machine 1525. The transmit and receive FIFOs 1503 are provided for data exchange between the gigabit Ethernet MAC 1570 and bus channel interface 1505. The bus channel interface 1505 is in communication with the outbound DMA channel 1515 and in-bound DMA channel 1520 through bus channel. When IP data is being received from the GMII MAC interface 1564, the MAC 1570 preferably sends a request to the DMA 1520 for data movement. Upon receiving the request, the DMA 1520 preferably checks the task queue [not shown] in the MAC interface 1564 and transfers the queued packets. In a preferred embodiment, the task queue in the MAC interface is a set of 64 bit registers containing a data structure comprising: length of data, source address, and destination address. Where the DMA 1520 is maintaining the write pointers for the plurality of destinations [not shown], the destination address will not be used. The DMA 1520 will move the data over the bus channel to memories located within the processors and will write the number of tasks at a predefined memory location. After completing writing of all tasks, the DMA 1520 will write the total number of tasks transferred to the memory page. The processor will process the received data and will write a task queue for an outbound channel of the DMA. The outbound DMA channel 1515 will check the number of frames present in the memory locations and, after reading the task queue, will move the data either to a POSII interface of the Media Engine Type I or II or to an external memory location where IP to ATM bridging is being performed.
  • For ATM only or ATM and IP traffic in combination, the Packet Engine supports two configurable UTOPIAII/[0111] POSII interfaces 1566 which provides an interface between the PHY and upper layer for IP/ATM traffic. The UTOPIAII/POSII 1580 comprises FIFOs 1504 and a control state machine 1526. The transmit and receive FIFOs 1504 are provided for data exchange between the UTOPIAII/POSII 1580 and bus channel interface 1506. The bus channel interface 1506 is in communication with the outbound DMA channel 1515 and in-bound DMA channel 1520 through bus channel. The UTOPIA II/POS II interfaces 1566 may be configured in either UTOPIA level II or POS level II modes. When data is received on the UTOPIAII/POSII interface 1566, data will push existing tasks in the task queue forward and request the DMA 1520 to move the data. The DMA 1520 will read the task queue from the UTOPIAII/POSII interface 1566 which contains a data structure comprising: length of data, source address, and type of interface. Depending upon the type of interface, e.g. either POS or UTOPIA, the in-bound DMA channel 1520 will send the data either to the plurality of processors [not shown] or to the ATMRx engine [not shown]. After data is written into the ATMRx memory, it is processed by the ATM engine and passed to the corresponding AAL layer. On the transmit side, data is moved to the internal memory of the ATMTx engine [not shown] by the respective AAL layer. The ATMTx engine inserts the desired ATM header at the beginning of the cell and will request the outbound DMA channel 1515 to move the data to the UTOPIAII/POSII interface 1566 having a task queue with the following data structure: length of data and source address.
  • Referring to FIG. 16, to facilitate control and signaling functions, the [0112] Packet Engine 1600 has a plurality of PCI interfaces 1605, 1606, referred to in FIG. 14 as 1495. In a preferred embodiment, a signaling host 1610, through an initiator 1612, sends messages to be received by the Packet Engine 1600 to a PCI target 1605 via a communication bus 1617. The PCI target further communicates these messages through a PCI to PCI bridge 1620 to a PCI initiator 1606. The PCI initiator 1606 sends messages through a communication bus 1618 to a plurality of Media Engines 1650, each having a memory 1660 with a memory queue 1665.
  • Software Architecture [0113]
  • As previously discussed, operating on the above-described hardware architecture embodiments is a plurality of novel, integrated software systems designed to enable media processing, signaling, and packet processing. The novel software architecture enables the logical system, presented in FIG. 5, to be physically deployed in a number of ways, depending on processing needs. [0114]
  • Communication between any two modules, or components, in the software system is facilitated by application program interfaces (APIs) that remain substantially constant and consistent irrespective of whether the software components reside on a hardware element or across multiple hardware elements. This permits the mapping of components onto different processing elements, thereby modifying physical interfaces, without the concurrent modification of the individual components. [0115]
  • In an exemplary embodiment, shown in FIG. 17, a [0116] first component 1705 operates in conjunction with a second component 1710 and a third component 1715 through a first interface 1720 and second interface 1725, respectively. Because all three components 1705, 1710, 1715 are executing on the same physical processor 1700, the first interface 1720 and second interface 1725 perform interfacing tasks through function mapping conducted via the APIs of each of the three components 1705, 1710, 1715. Referring to FIG. 17a, where the first 1705 a, second 1710 a, and third 1715 a components reside on separate hardware elements 1700 a, 1701 a, 1702 a, respectively, e.g., separate processors or processing elements, the first interface 1720 a and second interface 1725 a implement interfacing tasks through queues 1721 a, 1726 a in shared memory. While the interfaces 1720 a, 1725 a are no longer limited to function mapping and messaging, the components 1705 a, 1710 a, 1715 a continue to use the same APIs to conduct inter-component communication. The consistent use of a standard API enables the porting of various components to different hardware architectures in a distributed processing environment by relying on modified interfaces or drivers where necessary and without modifications in the components themselves.
  • Referring now to FIG. 18, a logical division of the [0117] software system 1800 is shown. The software system 1800 is divided into three subsystems, a Media Processing Subsystem 1805, a Packetization Subsystem 1840, and a Signaling/Management Subsystem (hereinafter referred to as the Signaling Subsystem) 1870. The Media Processing Subsystem 1805 sends encoded data to the Packetization Subsystem 1840 for encapsulation and transmission over the network and receives network data from the Packetization Subsystem 1840 to be decoded and played out. The Signaling Subsystem 1870 communicates with the Packetization Subsystem 1840 to get status information such as the number of packets transferred, to monitor the quality of service, control the mode of particular channels, among other functions. The Signaling Subsystem 1870 also communicates with the Packetization Subsystem 1840 to control establishment and destruction of packetization sessions for the origination and termination of calls. Each subsystem 1805, 1840, and 1870 further comprises a series of components 1820 designed to perform different tasks in order to effectuate the processing and transmission of media. Each of the components 1820 conducts communications with any other module, subsystem, or system through APIs that remain substantially constant and consistent irrespective of whether the components reside on a hardware element or across multiple hardware elements, as previously discussed.
  • In an exemplary embodiment, shown in FIG. 19, the [0118] Media Processing Subsystem 1905 comprises a system API component 1907, media API component 1909, real-time media kernel 1910, and voice processing components, including line echo cancellation component 1911, components dedicated to performing voice activity detection 1913, comfort noise generation 1915, and discontinuous transmission management 1917, a component 1919 dedicated to handling tone signaling functions, such as dual tone (DTMF/MF), call progress, call waiting, and caller identification, and components for media encoding and decoding functions for voice 1927, fax 1929, and other data 1931.
  • The [0119] system API component 1907 should be capable of providing a system wide management and enabling the cohesive interaction of individual components, including establishing communications between external applications and individual components, managing run-time component addition and removal, downloading code from central servers, and accessing the MIBs of components upon request from other components. The media API component 1909 interacts with the real time media kernel 1910 and individual voice processing components. The real time media kernel 1910 allocates media processing resources, monitors resource utilization on each media-processing element, and performs load balancing to substantially maximize density and efficiency.
  • The voice processing components can be distributed across multiple processing elements. The line [0120] echo cancellation component 1911 deploys adaptive filter algorithms to remove from a signal echoes that may arise as a result of the reflection and/or retransmission of modified input signals back to the originator of the input signals. In one preferred embodiment, the line echo cancellation component 1911 has been programmed to implement the following filtration approach: An adaptive finite impulse response (FIR) filter of length N is converged using a convergence process, such as a least means square approach. The adaptive filter generates a filtered output by obtaining individual samples of the far-end signal on a receive path, convolving the samples with the calculated filter coefficients, and then subtracting, at the appropriate time, the resulting echo estimate from the received signal on the transmit channel. With convergence complete, the filter is then converted to an infinite impulse response (IIR) filter using a generalization of the ARMA-Levinson approach. In the course of operation, data is received from an input source and used to adapt the zeroes of the IIR filter using the LMS approach, keeping the poles fixed. The adaptation process generates a set of converged filter coefficients that are then continually applied to the input signal to create a modified signal used to filter the data. The error between the modified signal and actual signal received is monitored and used to further adapt the zeroes of the IIR filter. If the measured error is greater than a pre-determined threshold, convergence is re-initiated by reverting back to the FIR convergence step.
  • The voice [0121] activity detection component 1913 receives incoming data and determines whether voice or another type of signal, i.e., noise, is present in the received data, based upon an analysis of certain data parameters. The comfort noise generation component 1915 operates to send a Silence Insertion Descriptor (SID) containing information that enables a decoder to generate noise corresponding to the background noise received from the transmission. An overlay of audible but non-obtrusive noise has been found to be valuable in helping users discern whether a connection is live or dead. The SID frame is typically small, i.e. approximately 15 bits under the G.729 B codec specification. Preferably, updated SID frames are sent to the decoder whenever there has been sufficient change in the background noise.
  • The [0122] tone signaling component 1919, including recognition of DTMF/MF, call progress, call waiting, and caller identification, operates to intercept tones meant to signal a particular activity or event, such as the conducting of two-stage dialing (in the case of DTMF tones), the retrieval of voice-mail, and the reception of an incoming call (in the case of call waiting), and communicate the nature of that activity or event in an intelligent manner to a receiving device, thereby avoiding the encoding of that tone signal as another element in a voice stream. In one embodiment, the tone-signaling component 1919 is capable of recognizing a plurality of tones and, therefore, when one tone is received, send a plurality of RTP packets that identify the tone, together with other indicators, such as length of the tone. By carrying the occurrence of an identified tone, the RTP packets convey the event associated with the tone to a receiving unit. In a second embodiment, the tone-signaling component 1919 is capable of generating a dynamic RTP profile wherein the RTP profile carries information detailing the nature of the tone, such as the frequency, volume, and duration. By carrying the nature of the tone, the RTP packets convey the tone to the receiving unit and permit the receiving unit to interpret the tone and, consequently, the event or activity associated with it.
  • Components for the media encoding and decoding functions for [0123] voice 1927, fax 1929, and other data 1931, referred to as codecs, are devised in accordance with International Telecommunications Union (ITU) standard specifications, such as G.711 for the encoding and decoding of voice, fax, and other data. An exemplary codec for voice, data, and fax communications is ITU standard G.711, often referred to as pulse code modulation. G.711 is a waveform codec with a sampling rate of 8,000 Hz. Under uniform quantization, signal levels would typically require at least 12 bits per sample, resulting in a bit rate of 96 kbps. Under non-uniform quantization, as is commonly used, signal levels require approximately 8 bits per sample, leading to a 64 kbps rate. Other voice codecs include ITU standards G.723.1, G.726, and G.729 A/B/E, all of which would be known and appreciated by one of ordinary skill in the art. Other ITU standards supported by the fax media processing component 1929 preferably include T.38 and standards falling within V.xx, such as V.17, V.90, and V.34. Exemplary codecs for fax include ITU standard T.4 and T.30. T.4 addresses the formatting of fax images and their transmission from sender to receiver by specifying how the fax machine scans documents, the coding of scanned lines, the modulation scheme used, and the transmission scheme used. Other codecs include ITU standards T.38.
  • Referring to FIG. 20, in an exemplary embodiment, the [0124] Packetization Subsystem 2040 comprises a system API component 2043, packetization API component 2045, POSIX API 2047, real-time operating system (RTOS) 2049, components dedicated to performing such quality of service functions as buffering and traffic management 2050, a component for enabling IP communications 2051, a component for enabling ATM communications 2053, a component for resource-reservation protocol (RSVP) 2055, and a component for multi-protocol label switching (MPLS) 2057. The Packetization Subsystem 2040 facilitates the encapsulation of encoded voice/data into packets for transmission over ATM and IP networks, manages certain quality of service elements, including packet delay, packet loss, and jitter management, and implements traffic shaping to control network traffic. The packetization API component 2045 provides external applications facilitated access to the Packetization Subsystem 2040 by communicating with the Media Processing Subsystem [not shown] and Signaling Subsystem [not shown].
  • The [0125] POSIX API 2047 layer isolated the operating system (OS) from the components and provides the components with a consistent OS API, thereby insuring that components above this layer do not have to be modified if the software is ported to another OS platform. The RTOS 2049 acts as the OS facilitating the implementation of software code into hardware instructions.
  • The [0126] IP communications component 2051 supports packetization for TCP/IP, UDP/IP, and RTP/RTCP protocols. The ATM communications component 2053 supports packetization for AAL1, AAL2, and AAL5 protocols. It is preferred that the RTP/UDP/IP stack be implemented on the RISC processors of the Packet Engine. A portion of the ATM stack is also preferably implemented on the RISC processors with more computationally intensive parts of the ATM stack implemented on the ATM engine.
  • The component for [0127] RSVP 2055 specifies resource-reservation techniques for IP networks. The RSVP protocol enables resources to be reserved for a certain session (or a plurality of sessions) prior to any attempt to exchange media between the participants. Two levels of service are generally enabled, including a guaranteed level that emulates the quality achieved in conventional circuit switched networks, and controlled load that is substantially equal to the level of service achieved in a network under best-effort and no-load conditions. In operation, a sending unit issues a PATH message to a receiving unit via a plurality of routers. The PATH message contains a traffic specification (Tspec) that provides details about the data that the sender expects to send, including bandwidth requirement and packet size. Each RSVP-enabled router along the transmission path establishes a path state that includes the previous source address of the PATH message (the prior router). The receiving unit responds with a reservation request (RESV) that includes a flow specification having the Tspec and information regarding the type of reservation service requested, such as controlled-load or guaranteed service. The RESV message travels back, in reverse fashion, to the sending unit along the same router pathway. At each router, the requested resources are allocated, provided such resources are available and the receiver has authority to make the request. The RESV eventually reaches the sending unit with a confirmation that the requisite resources have been reserved.
  • The component for [0128] MPLS 2057 operates to mark traffic at the entrance to a network for the purpose of determining the next router in the path from source to destination. More specifically, the MPLS 2057 component attaches a label containing all of the information a router needs to forward a packet to the packet in front of the IP header. The value of the label is used to look up the next hop in the path and the basis for the forwarding of the packet to the next router. Conventional IP routing operates similarly, except the MPLS process searches for an exact match, not the longest match as in conventional IP routing.
  • Referring to FIG. 21, in an exemplary embodiment, the [0129] Signaling Subsystem 2170 comprises a user application API component 2173, system API component 2175; POSIX API 2177, real-time operating system (RTOS) 2179, a signaling API 2181, components dedicated to performing such signaling functions as signaling stacks for ATM networks 2183 and signaling stacks for IP networks 2185, and a network management component 2187. The signaling API 2181 provides facilitated access to the signaling stacks for ATM networks 2183 and signaling stacks for IP networks 2185. The signaling API 2181 comprises a master gateway and sub-gateways of N number. A single master gateway can have N sub-gateways associated with it. The master gateway performs the demultiplexing of incoming calls arriving from an ATM or IP network and routes the calls to the sub-gateway that has resources available. The sub-gateways maintain the state machines for all active terminations. The sub-gateways can be replicated to handle many terminations. Using this design, the master gateway and sub-gateways can reside on a single processor or across multiple processors, thereby enabling the simultaneous processing of signaling for a large number of terminations and the provision of substantial scalability.
  • The user [0130] application API component 2173 provides a way for external applications to interface with the entire software system, comprising each of the Media Processing Subsystem, Packetization Subsystem, and Signaling Subsystem. The network management component 2187 supports local and remote configuration and network management through the support of simple network management protocol (SNMP). The configuration portion of the network management component 2187 is capable of communicating with any of the other components to conduct configuration and network management tasks and can route remote requests for tasks, such as the addition or removal of specific components.
  • The signaling stacks for [0131] ATM networks 2183 include support for User Network Interface (UNI) for the communication of data using AAL1, AAL2, and AAL5 protocols. User Network Interface comprises specifications for the procedures and protocols between the gateway system, comprising the software system and hardware system, and an ATM network. The signaling stacks for IP networks 2185 include support for a plurality of accepted standards, including media gateway control protocol (MGCP), H.323, session initiation protocol (SIP), H.248, and network-based call signaling (NCS). MGCP specifies a protocol converter, the components of which may be distributed across multiple distinct devices. MGCP enables external control and management of data communications equipment, such as media gateways, operating at the edge of multi-service packet networks. H.323 standards define a set of call control, channel set up, and codec specifications for transmitting real time voice and video over networks that do not necessarily provide a guaranteed level of service, such as packet networks. SIP is an application layer protocol for the establishment, modification, and termination of conferencing and telephony sessions over an IP-based network and has the capability of negotiating features and capabilities of the session at the time the session is established. H.248 provides recommendations underlying the implementation of MGCP.
  • To further enable ease of scalability and implementation, the present software method and system does not require specific knowledge of the processing hardware being utilized. Referring to FIG. 22, in a typical embodiment, a [0132] host application 2205 interacts with a DSP 2210 via an interrupt capability 2220 and shared memory 2230. As shown in FIG. 23, the same functionality can be achieved by a simulation execution through the operation of a virtual DSP program 2310 as a separate independent thread on the same processor 2315 as the application code 2320. This simulation run is enabled by a task queue mutex 2330 and a condition variable 2340. The task queue mutex 2330 protects the data shared between the virtual DSP program 2310 and a resource manager [not shown]. The condition variable 2340 allows the application to synchronize with the virtual DSP 2310 in a manner similar to the function of the interrupt 2220 in FIG. 22.
  • The present methods and systems provide for a system on chip architecture having scalable, distributed processing and memory capabilities through a plurality of processing layers and the application of that chip architecture in a media gateway that is designed to enable the communication of media across circuit switched and packet switched networks. While various embodiments of the present invention have been shown and described, it would be apparent to those skilled in the art that many modifications are possible without departing from the inventive concept disclosed herein. For example, it would be apparent that the system chip architecture can be used to process other forms of data and for purposes other than telecommunications. It would further be apparent that, depending on the functionality desired, the PUs could be designed to perform application specific tasks other than line echo cancellation or encoding or decoding. [0133]

Claims (22)

What is claimed is:
1. A media processor for the processing of media based upon instructions, comprising:
a plurality of processing layers wherein each processing layer has at least one processing unit, at least one program memory, and at least one data memory, each of said processing unit, program memory, and data memory being in communication with one another;
at least one processing unit in at least one of said processing layers performing line echo cancellation functions on received data;
at least one processing unit in at least one of said processing layers performing encoding or decoding functions on received data; and
a task scheduler adapted to receive a plurality of tasks from a source and distributing said tasks to said processing layers.
2. The media processor of claim 1, further comprising a direct memory access controller for handling data transfers, each of said transfers having a size and a direction, from at least one data memory having an address and a plurality of external memory units, each having an address.
3. The media processor of claim 2, wherein said transfers between at least one data memory and at least one external memory occur by utilizing the address of the data memory, the address of the external memory, the size of the transfer, and the direction of the transfer.
4. The media processor of claim 1, wherein the task scheduler is in communication with an external memory.
5. The media processor of claim 1, further comprising an interface for the receipt and transmission of data and control signals.
6. The media processor of claim 5, wherein the interface comprises a UTOPIA-compatible interface.
7. The media processor of claim 5, wherein the interface comprises a time division multiplex-compatible interface.
8. The media processor of claim 1, wherein at least one processing layer includes a processing unit performing line echo cancellation functions on received data and a processing unit performing encoding or decoding functions on received data and wherein said line echo cancellation and encoding or decoding functions are performed in a pipelined manner.
9. The media processor of claim 1, wherein the processing unit designed to perform encoding or decoding functions comprises an arithmetic and logic unit, multiply and accumulate unit, barrel shifter, and normalization unit.
10. The media processor of claim 1, wherein the processing unit additionally performs voice activity detection and tone signaling functions.
11. The media processor of claim 10, wherein the processing unit comprises a plurality of single-cycle multiply and accumulate units operating with an address generation unit and an instruction decoder.
12. A media gateway for the processing of data and communication of data across a plurality of networks, comprising:
a plurality of media processors, each of said media processors having a plurality of processing layers wherein each processing layer has at least one processing unit, at least one program memory, and at least one data memory, each of said processing unit, program memory, and data memory being in communication with one another, wherein at least one processing unit in at least one of said processing layers performs echo cancellation functions on received data, wherein at least one processing unit in at least one of said processing layers performs encoding or decoding functions on received data, and wherein a task scheduler is adapted to receive a plurality of tasks from a source and distribute said tasks to the processing layers;
a plurality of packet processors in communication with at least one of said media processors wherein the packet processor is adapted to packetize processed data; and
a host processor in communication with at least one said packet or media processors.
13. A method for processing media based upon instructions, comprising the steps of:
receiving said media through a data interface;
scheduling the processing of said media through a task scheduler adapted to receive a plurality of tasks from a source and distributing said tasks to a plurality of processing layers; and
processing said media in the plurality of processing layers wherein each processing layer has at least one processing unit, at least one program memory, and at least one data memory, each of said processing unit, program memory, and data memory being in communication with one another.
14. The method of claim 13, wherein said processing step further comprises performing echo cancellation functions on received data.
15. The method of claim 13, wherein said processing step further comprises performing encoding or decoding functions on received data.
16. The method of claim 13, wherein the processing step occurs in parallel across multiple processing layers, each of said processing layers having similar processing units.
17. The method of claim 13, wherein at least one processing layer includes a processing unit performing echo cancellation functions on received data and a processing unit performing encoding or decoding functions on received data and wherein said echo cancellation and encoding or decoding functions are performed in a pipelined manner.
18. A distributed processing system implemented on a single chip having a total memory capacity comprising at least two processing layers wherein each processing layer has at least one processing unit and a plurality of memories, each of said processing units and memories being in communication with one another and wherein the total memory capacity of the chip is divided substantially equally between each of said processing layers.
19. A processor for the processing of data based upon instructions, comprising:
a plurality of processing layers wherein each processing layer has at least one processing unit, at least one program memory, and at least one data memory, each of said processing unit, program memory, and data memory being in communication with one another; and
a task scheduler adapted to receive a plurality of tasks from a source and distributing said tasks to the processing layers.
20. The processor of claim 19, wherein at least one of said plurality of processing layers comprises a processing unit performing echo cancellation functions on received data.
21. The processor of claim 19, wherein at least one of said plurality of processing layers comprises a processing unit performing encoding or decoding functions on received data.
22. The processor of claim 19, wherein the plurality of processing layers communicate with the task scheduler through a controller interface.
US10/004,753 2001-12-03 2001-12-03 Distributed processing architecture with scalable processing layers Abandoned US20030105799A1 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US10/004,753 US20030105799A1 (en) 2001-12-03 2001-12-03 Distributed processing architecture with scalable processing layers
US10/084,559 US20030112758A1 (en) 2001-12-03 2002-02-25 Methods and systems for managing variable delays in packet transmission
US11/390,558 US7516320B2 (en) 2001-12-03 2006-03-27 Distributed processing architecture with scalable processing layers
US12/335,644 US20090328048A1 (en) 2001-12-03 2008-12-16 Distributed Processing Architecture With Scalable Processing Layers
US12/350,682 US7835280B2 (en) 2001-12-03 2009-01-08 Methods and systems for managing variable delays in packet transmission
US12/901,479 US20110141889A1 (en) 2001-12-03 2010-10-08 Methods and Systems for Managing Variable Delays in Packet Transmission

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/004,753 US20030105799A1 (en) 2001-12-03 2001-12-03 Distributed processing architecture with scalable processing layers

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US10/084,559 Continuation-In-Part US20030112758A1 (en) 2001-12-03 2002-02-25 Methods and systems for managing variable delays in packet transmission
US11/390,558 Continuation US7516320B2 (en) 2001-12-03 2006-03-27 Distributed processing architecture with scalable processing layers

Publications (1)

Publication Number Publication Date
US20030105799A1 true US20030105799A1 (en) 2003-06-05

Family

ID=21712352

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/004,753 Abandoned US20030105799A1 (en) 2001-12-03 2001-12-03 Distributed processing architecture with scalable processing layers
US11/390,558 Expired - Fee Related US7516320B2 (en) 2001-12-03 2006-03-27 Distributed processing architecture with scalable processing layers
US12/335,644 Abandoned US20090328048A1 (en) 2001-12-03 2008-12-16 Distributed Processing Architecture With Scalable Processing Layers

Family Applications After (2)

Application Number Title Priority Date Filing Date
US11/390,558 Expired - Fee Related US7516320B2 (en) 2001-12-03 2006-03-27 Distributed processing architecture with scalable processing layers
US12/335,644 Abandoned US20090328048A1 (en) 2001-12-03 2008-12-16 Distributed Processing Architecture With Scalable Processing Layers

Country Status (1)

Country Link
US (3) US20030105799A1 (en)

Cited By (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010545A1 (en) * 2002-06-11 2004-01-15 Pandya Ashish A. Data processing system using internet protocols and RDMA
US20050027793A1 (en) * 2002-10-08 2005-02-03 Hass David T. Advanced processor with mechanism for packet distribution at high line rate
US20050041666A1 (en) * 2002-10-08 2005-02-24 Hass David T. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
US20050041651A1 (en) * 2002-10-08 2005-02-24 Hass David T. Advanced processor with mechanism for fast packet queuing operations
US20050044323A1 (en) * 2002-10-08 2005-02-24 Hass David T. Advanced processor with out of order load store scheduling in an in order pipeline
US20050055540A1 (en) * 2002-10-08 2005-03-10 Hass David T. Advanced processor scheduling in a multithreaded system
US20050108518A1 (en) * 2003-06-10 2005-05-19 Pandya Ashish A. Runtime adaptable security processor
US20050193357A1 (en) * 2004-02-27 2005-09-01 Intel Corporation Allocation of combined or separate data and control planes
US20050195829A1 (en) * 2004-03-02 2005-09-08 Ward Robert G. Real time segmentation and reassembly of asynchronous transfer mode (ATM) adaptation layer two (AAL2) and AAL5 data
US20050216938A1 (en) * 2002-05-14 2005-09-29 Thales Avionics, Inc. In-flight entertainment system with wireless communication among components
US20050223110A1 (en) * 2004-03-30 2005-10-06 Intel Corporation Heterogeneous building block scalability
US20060004902A1 (en) * 2004-06-30 2006-01-05 Siva Simanapalli Reconfigurable circuit with programmable split adder
DE102004035843A1 (en) * 2004-07-23 2006-02-16 Infineon Technologies Ag Network Processor
US20060093128A1 (en) * 2004-10-15 2006-05-04 Oxford William V Speakerphone
US20060126515A1 (en) * 2004-12-15 2006-06-15 Ward Robert G Filtering wireless network packets
US20060136570A1 (en) * 2003-06-10 2006-06-22 Pandya Ashish A Runtime adaptable search processor
US20060248010A1 (en) * 2005-04-30 2006-11-02 Portal Software, Inc. Revenue management systems and methods
US20060262780A1 (en) * 2005-05-19 2006-11-23 Santera Systems, Inc. Methods and apparatus for interconnection of media gateways
US20060280163A1 (en) * 2005-06-09 2006-12-14 Yongdong Zhao System for detecting packetization delay of packets in a network
US20070020290A1 (en) * 2001-03-09 2007-01-25 Diapharm Limited Natural antibodieactive against HIV virus
US20070091874A1 (en) * 2005-06-28 2007-04-26 Alexander Rockel Revenue management system and method
US20070185849A1 (en) * 2002-11-26 2007-08-09 Bapiraju Vinnakota Data structure traversal instructions for packet processing
US20070206735A1 (en) * 2006-03-02 2007-09-06 Andrew Silver System and method for enabling DTMF detection in a VoIP network
US20070206573A1 (en) * 2006-03-02 2007-09-06 Andrew Silver System and method for speeding call originations to a variety of devices using intelligent predictive techniques for half-call routing
US20070206572A1 (en) * 2006-03-02 2007-09-06 Andrew Silver System and method for enabling VPN-less session setup for connecting mobile data devices to an enterprise data network
EP1836797A1 (en) * 2005-01-10 2007-09-26 Quartics, Inc. Integrated architecture for the unified processing of visual media
US20080052293A1 (en) * 2006-08-24 2008-02-28 Sun Microsystems, Inc. File system with distributed components
US20080126709A1 (en) * 2002-10-08 2008-05-29 Hass David T Advanced processor with system on a chip interconnect technology
US20080216074A1 (en) * 2002-10-08 2008-09-04 Hass David T Advanced processor translation lookaside buffer management in a multithreaded system
US20090006810A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Mechanism to support generic collective communication across a variety of programming models
US20090006762A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Method and apparatus of prefetching streams of varying prefetch depth
US20090006769A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Programmable partitioning for high-performance coherence domains in a multiprocessor system
US20090006808A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Ultrascalable petaflop parallel supercomputer
US20090007141A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Message passing with a limited number of dma byte counters
US20090019538A1 (en) * 2002-06-11 2009-01-15 Pandya Ashish A Distributed network security system and a hardware processor therefor
US20090052634A1 (en) * 2003-12-15 2009-02-26 International Business Machines Corporation Providing speaker identifying information within embedded digital information
US20090055496A1 (en) * 2002-10-08 2009-02-26 Gaurav Garg Advanced processor with credit based scheme for optimal packet flow in a multi-processor system on a chip
US20090097842A1 (en) * 2007-10-15 2009-04-16 Motorola, Inc. System and method for sonet equipment fault management
US20090201935A1 (en) * 2008-02-08 2009-08-13 Hass David T System and method for parsing and allocating a plurality of packets to processor core threads
US20090248911A1 (en) * 2008-03-27 2009-10-01 Apple Inc. Clock control for dma busses
US20090307408A1 (en) * 2008-06-09 2009-12-10 Rowan Nigel Naylor Peer-to-Peer Embedded System Communication Method and Apparatus
US20100077150A1 (en) * 2002-10-08 2010-03-25 Rmi Corporation Advanced processor with cache coherency
US20100082942A1 (en) * 2008-09-30 2010-04-01 International Business Machines Corporation Virtualization across physical partitions of a multi-core processor (mcp)
US20100158513A1 (en) * 2008-12-22 2010-06-24 Eui-Suk Jung Apparatus and method for measuring signal performance and apparatus for selecting signal
US7793038B2 (en) 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US7802025B2 (en) 2007-06-26 2010-09-21 International Business Machines Corporation DMA engine for repeating communication patterns
US7827391B2 (en) 2007-06-26 2010-11-02 International Business Machines Corporation Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
US20100318703A1 (en) * 2002-10-08 2010-12-16 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7886084B2 (en) 2007-06-26 2011-02-08 International Business Machines Corporation Optimized collectives using a DMA on a parallel computer
US7890096B2 (en) 2006-03-02 2011-02-15 Tango Networks, Inc. System and method for enabling call originations using SMS and hotline capabilities
US20110081911A1 (en) * 2006-03-02 2011-04-07 Andrew Silver System and method for enabling vpn-less session setup for connecting mobile data devices to an enterprise data network
US8010875B2 (en) 2007-06-26 2011-08-30 International Business Machines Corporation Error correcting code with chip kill capability and power saving enhancement
US8108738B2 (en) 2007-06-26 2012-01-31 International Business Machines Corporation Data eye monitor method and apparatus
US8117358B2 (en) 2005-07-28 2012-02-14 Oracle International Corporation Revenue management system and method utilizing database backup
US8140925B2 (en) 2007-06-26 2012-03-20 International Business Machines Corporation Method and apparatus to debug an integrated circuit chip via synchronous clock stop and scan
US8223777B2 (en) 2005-11-15 2012-07-17 Oracle International Corporation Gateway for achieving low latency and high availability in a real time event processing system
US8230433B2 (en) 2007-06-26 2012-07-24 International Business Machines Corporation Shared performance monitor in a multiprocessor system
US8458282B2 (en) 2007-06-26 2013-06-04 International Business Machines Corporation Extended write combining using a write continuation hint flag
US8468416B2 (en) 2007-06-26 2013-06-18 International Business Machines Corporation Combined group ECC protection and subgroup parity protection
US8509255B2 (en) 2007-06-26 2013-08-13 International Business Machines Corporation Hardware packet pacing using a DMA in a parallel computer
US8635378B1 (en) * 2005-03-25 2014-01-21 Tilera Corporation Flow control in a parallel processing environment
US8756350B2 (en) 2007-06-26 2014-06-17 International Business Machines Corporation Method and apparatus for efficiently tracking queue entries relative to a timestamp
US9088474B2 (en) 2002-10-08 2015-07-21 Broadcom Corporation Advanced processor with interfacing messaging network to a CPU
US9129043B2 (en) 2006-12-08 2015-09-08 Ashish A. Pandya 100GBPS security and search architecture using programmable intelligent search memory
US9141557B2 (en) 2006-12-08 2015-09-22 Ashish A. Pandya Dynamic random access memory (DRAM) that comprises a programmable intelligent search memory (PRISM) and a cryptography processing engine
US20180314558A1 (en) * 2017-04-26 2018-11-01 Dell Products L.P. Systems and methods for scalable cloud computing by optimally utilizing management controller for host compute processing
US10426424B2 (en) 2017-11-21 2019-10-01 General Electric Company System and method for generating and performing imaging protocol simulations
US11405846B2 (en) 2006-03-02 2022-08-02 Tango Networks, Inc. Call flow system and method for use in a legacy telecommunication system
US11562214B2 (en) * 2019-03-14 2023-01-24 Baidu Usa Llc Methods for improving AI engine MAC utilization

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030105799A1 (en) * 2001-12-03 2003-06-05 Avaz Networks, Inc. Distributed processing architecture with scalable processing layers
KR100546780B1 (en) * 2003-12-26 2006-01-25 한국전자통신연구원 Voice over packet system using a plurality of digital signal processors and speech processing method therein
US8625749B2 (en) * 2006-03-23 2014-01-07 Cisco Technology, Inc. Content sensitive do-not-disturb (DND) option for a communication system
US20080212890A1 (en) * 2007-01-10 2008-09-04 Loubachevskaia Natalya Y Systems and Methods for Noise Estimation in a Single Frame of Video Data
US20090043577A1 (en) * 2007-08-10 2009-02-12 Ditech Networks, Inc. Signal presence detection using bi-directional communication data
EP2120143B1 (en) * 2008-05-13 2011-08-31 dspace digital signal processing and control engineering GmbH Method to perform tasks for calculating a signal to be simulated in real time
KR20100020822A (en) * 2008-08-13 2010-02-23 포항공과대학교 산학협력단 Cad/cae system for designing and analyzing the ubiquitous system and the design and analysis method for ubiquitous system
KR101210274B1 (en) * 2008-12-19 2012-12-10 한국전자통신연구원 Processor capable of power consumption scaling
US8412827B2 (en) * 2009-12-10 2013-04-02 At&T Intellectual Property I, L.P. Apparatus and method for providing computing resources
EP2408165B1 (en) * 2010-07-14 2012-10-03 Google, Inc. Method and receiver for reliable detection of the status of an RTP packet stream
US8499201B1 (en) 2010-07-22 2013-07-30 Altera Corporation Methods and systems for measuring and presenting performance data of a memory controller system
CN103069797A (en) * 2010-08-26 2013-04-24 飞思卡尔半导体公司 Video processing system and method for parallel processing of video data
US9184983B2 (en) 2010-08-26 2015-11-10 Futurewei Technologies, Inc. Cross-stratum optimization protocol
US8601133B1 (en) 2010-12-14 2013-12-03 Juniper Networks, Inc. Highly scalable data center architecture with address resolution protocol (ARP)-free servers
CN102566969B (en) * 2010-12-20 2015-06-17 西安奇维科技股份有限公司 Method for improving hardware-software interaction in SOPC (system on a programmable chip)
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US8767757B1 (en) * 2012-02-15 2014-07-01 Applied Micro Circuits Corporation Packet forwarding system and method using patricia trie configured hardware
US8825727B2 (en) 2012-03-15 2014-09-02 International Business Machines Corporation Software-hardware adder
US8793381B2 (en) 2012-06-26 2014-07-29 International Business Machines Corporation Workload adaptive cloud computing resource allocation
US9183049B1 (en) * 2013-01-25 2015-11-10 Amazon Technologies, Inc. Processing content using pipelines
US8813245B1 (en) 2013-01-25 2014-08-19 Amazon Technologies, Inc. Securing content using pipelines
US9223621B1 (en) 2013-01-25 2015-12-29 Amazon Technologies, Inc. Organizing content using pipelines
DE202014011583U1 (en) * 2013-04-29 2022-09-12 Essilor International Calculation system for manufacturing an ophthalmic lens
US9323584B2 (en) 2013-09-06 2016-04-26 Seagate Technology Llc Load adaptive data recovery pipeline
US9280422B2 (en) 2013-09-06 2016-03-08 Seagate Technology Llc Dynamic distribution of code words among multiple decoders
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
JP6488830B2 (en) 2015-03-31 2019-03-27 オムロン株式会社 Control device
US9507891B1 (en) * 2015-05-29 2016-11-29 International Business Machines Corporation Automating a microarchitecture design exploration environment
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10732866B2 (en) 2016-10-27 2020-08-04 Samsung Electronics Co., Ltd. Scaling out architecture for DRAM-based processing unit (DPU)
JP6784160B2 (en) * 2016-12-08 2020-11-11 富士通株式会社 Parallel processing device and inter-node communication program
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
WO2020033428A1 (en) * 2018-08-10 2020-02-13 Cryptography Research, Inc. Memory bus protection
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator

Citations (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914692A (en) * 1987-12-29 1990-04-03 At&T Bell Laboratories Automatic speech recognition using echo cancellation
US5142677A (en) * 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
US5189500A (en) * 1989-09-22 1993-02-23 Mitsubishi Denki Kabushiki Kaisha Multi-layer type semiconductor device with semiconductor element layers stacked in opposite directions and manufacturing method thereof
US5200564A (en) * 1990-06-29 1993-04-06 Casio Computer Co., Ltd. Digital information processing apparatus with multiple CPUs
US5363404A (en) * 1993-07-13 1994-11-08 Motorola Inc. Apparatus and method for conveying information in a communication network
US5492857A (en) * 1993-07-12 1996-02-20 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5594784A (en) * 1993-04-27 1997-01-14 Southwestern Bell Technology Resources, Inc. Apparatus and method for transparent telephony utilizing speech-based signaling for initiating and handling calls
US5724356A (en) * 1995-04-28 1998-03-03 Multi-Tech Systems, Inc. Advanced bridge/router local area network modem node
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US5923761A (en) * 1996-05-24 1999-07-13 Lsi Logic Corporation Single chip solution for multimedia GSM mobile station systems
US5956518A (en) * 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US5991308A (en) * 1995-08-25 1999-11-23 Terayon Communication Systems, Inc. Lower overhead method for data transmission using ATM and SCDMA over hybrid fiber coax cable plant
US5999525A (en) * 1996-11-18 1999-12-07 Mci Communications Corporation Method for video telephony over a hybrid network
US6047372A (en) * 1996-12-02 2000-04-04 Compaq Computer Corp. Apparatus for routing one operand to an arithmetic logic unit from a fixed register slot and another operand from any register slot
US6108760A (en) * 1997-10-31 2000-08-22 Silicon Spice Method and apparatus for position independent reconfiguration in a network of multiple context processing elements
US6122719A (en) * 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
US6154446A (en) * 1998-07-08 2000-11-28 Broadcom Corporation Network switching architecture utilizing cell based and packet based per class-of-service head-of-line blocking prevention
US6226735B1 (en) * 1998-05-08 2001-05-01 Broadcom Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements
US6331977B1 (en) * 1998-08-28 2001-12-18 Sharp Electronics Corporation System on chip (SOC) four-way switch crossbar system and method
US20020101982A1 (en) * 2001-01-30 2002-08-01 Hammam Elabd Line echo canceller scalable to multiple voice channels/ports
US6483043B1 (en) * 2000-05-19 2002-11-19 Eaglestone Partners I, Llc Chip assembly with integrated power distribution between a wafer interposer and an integrated circuit chip
US20020171769A1 (en) * 2001-05-01 2002-11-21 Koninklijke Philips Electronics N.V. Method and apparatus for echo cancellation in digital ATV systems using an echo cancellation reference signal
US20030004697A1 (en) * 2000-01-24 2003-01-02 Ferris Gavin Robert Method of designing, modelling or fabricating a communications baseband stack
US20030021339A1 (en) * 2001-05-03 2003-01-30 Koninklijke Philips Electronics N.V. Method and apparatus for echo cancellation in digital communications using an echo cancellation reference signal
US6522688B1 (en) * 1999-01-14 2003-02-18 Eric Morgan Dowling PCM codec and modem for 56K bi-directional transmission
US6574217B1 (en) * 1996-11-27 2003-06-03 Alcatel Usa Sourcing, L.P. Telecommunications switch for providing telephony traffic integrated with video information services
US6573905B1 (en) * 1999-11-09 2003-06-03 Broadcom Corporation Video and graphics system with parallel processing of graphics windows
US6580727B1 (en) * 1999-08-20 2003-06-17 Texas Instruments Incorporated Element management system for a digital subscriber line access multiplexer
US6580793B1 (en) * 1999-08-31 2003-06-17 Lucent Technologies Inc. Method and apparatus for echo cancellation with self-deactivation
US6631130B1 (en) * 2000-11-21 2003-10-07 Transwitch Corporation Method and apparatus for switching ATM, TDM, and packet data through a single communications switch while maintaining TDM timing
US6636515B1 (en) * 2000-11-21 2003-10-21 Transwitch Corporation Method for switching ATM, TDM, and packet data through a single communications switch
US6640239B1 (en) * 1999-11-10 2003-10-28 Garuda Network Corporation Apparatus and method for intelligent scalable switching network
US6650649B1 (en) * 1998-07-24 2003-11-18 Hughes Electronics Corporation Extension interface units in a communication system
US6649428B2 (en) * 2001-08-10 2003-11-18 Fujitsu Limited Semiconductor chip, semiconductor integrated circuit using the same, and method of selecting semiconductor chip
US6661422B1 (en) * 1998-11-09 2003-12-09 Broadcom Corporation Video and graphics system with MPEG specific data transfer commands
US6669782B1 (en) * 2000-11-15 2003-12-30 Randhir P. S. Thakur Method and apparatus to control the formation of layers useful in integrated circuits
US6737743B2 (en) * 2001-07-10 2004-05-18 Kabushiki Kaisha Toshiba Memory chip and semiconductor device using the memory chip and manufacturing method of those
US6738358B2 (en) * 2000-09-09 2004-05-18 Intel Corporation Network echo canceller for integrated telecommunications processing
US6747977B1 (en) * 1999-06-30 2004-06-08 Nortel Networks Limited Packet interface and method of packetizing information
US6751224B1 (en) * 2000-03-30 2004-06-15 Azanda Network Devices, Inc. Integrated ATM/packet segmentation-and-reassembly engine for handling both packet and ATM input data and for outputting both ATM and packet data
US6751723B1 (en) * 2000-09-02 2004-06-15 Actel Corporation Field programmable gate array and microcontroller system-on-a-chip
US6754804B1 (en) * 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US6763018B1 (en) * 2000-11-30 2004-07-13 3Com Corporation Distributed protocol processing and packet forwarding using tunneling protocols
US6768774B1 (en) * 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US6798420B1 (en) * 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US6807167B1 (en) * 2000-03-08 2004-10-19 Lucent Technologies Inc. Line card for supporting circuit and packet switching
US6810039B1 (en) * 2000-03-30 2004-10-26 Azanda Network Devices, Inc. Processor-based architecture for facilitating integrated data transfer between both atm and packet traffic with a packet bus or packet link, including bidirectional atm-to-packet functionally for atm traffic
US6813673B2 (en) * 2001-04-30 2004-11-02 Advanced Micro Devices, Inc. Bus arbitrator supporting multiple isochronous streams in a split transactional unidirectional bus architecture and method of operation
US6816750B1 (en) * 2000-06-09 2004-11-09 Cirrus Logic, Inc. System-on-a-chip
US6826187B1 (en) * 1999-05-07 2004-11-30 Cisco Technology, Inc. Interfacing between a physical layer and a bus
US6853385B1 (en) * 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6892324B1 (en) * 2000-07-19 2005-05-10 Broadcom Corporation Multi-channel, multi-service debug
US6934937B1 (en) * 2000-03-30 2005-08-23 Broadcom Corporation Multi-channel, multi-service debug on a pipelined CPU architecture
US6959376B1 (en) * 2001-10-11 2005-10-25 Lsi Logic Corporation Integrated circuit containing multiple digital signal processors

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1292053C (en) * 1986-09-16 1991-11-12 Yoshito Sakurai Time-division channel arrangement
JPH0743700B2 (en) * 1990-07-17 1995-05-15 三菱電機株式会社 Data-driven information processing device
US6400996B1 (en) * 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
EP0584783A3 (en) * 1992-08-25 1994-06-22 Texas Instruments Inc Method and apparatus for improved processing
JPH08249306A (en) * 1995-03-09 1996-09-27 Sharp Corp Data driven type information processor
JP3698754B2 (en) * 1995-04-12 2005-09-21 シャープ株式会社 Data-driven information processing device
JPH0926949A (en) * 1995-07-10 1997-01-28 Sharp Corp Data-driven information processor
JP3720094B2 (en) * 1995-10-18 2005-11-24 シャープ株式会社 Data-driven information processing device
US5768537A (en) * 1996-02-22 1998-06-16 International Business Machines Corporation Scalable MPEG2 compliant video encoder
KR100195065B1 (en) * 1996-06-20 1999-06-15 유기범 Data network matching device
US6226266B1 (en) * 1996-12-13 2001-05-01 Cisco Technology, Inc. End-to-end delay estimation in high speed communication networks
US6304551B1 (en) * 1997-03-21 2001-10-16 Nec Usa, Inc. Real-time estimation and dynamic renegotiation of UPC values for arbitrary traffic sources in ATM networks
US6075788A (en) * 1997-06-02 2000-06-13 Lsi Logic Corporation Sonet physical layer device having ATM and PPP interfaces
US6067595A (en) * 1997-09-23 2000-05-23 Icore Technologies, Inc. Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
US6052756A (en) * 1998-01-23 2000-04-18 Oki Electric Industry Co., Ltd. Memory page management
US6173356B1 (en) * 1998-02-20 2001-01-09 Silicon Aquarius, Inc. Multi-port DRAM with integrated SRAM and systems and methods using the same
US6349098B1 (en) * 1998-04-17 2002-02-19 Paxonet Communications, Inc. Method and apparatus for forming a virtual circuit
US7100026B2 (en) * 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US6269435B1 (en) * 1998-09-14 2001-07-31 The Board Of Trustees Of The Leland Stanford Junior University System and method for implementing conditional vector operations in which an input vector containing multiple operands to be used in conditional operations is divided into two or more output vectors based on a condition vector
US6493666B2 (en) * 1998-09-29 2002-12-10 William M. Wiese, Jr. System and method for processing data from and for multiple channels
US6597689B1 (en) * 1998-12-30 2003-07-22 Nortel Networks Limited SVC signaling system and method
US6449655B1 (en) * 1999-01-08 2002-09-10 Cisco Technology, Inc. Method and apparatus for communication between network devices operating at different frequencies
US6519259B1 (en) * 1999-02-18 2003-02-11 Avaya Technology Corp. Methods and apparatus for improved transmission of voice information in packet-based communication systems
CA2362704C (en) * 1999-02-23 2005-01-11 Siemens Aktiengesellschaft Time-critical routing of data to a clocked interface with asynchronous data transmission
US7110358B1 (en) * 1999-05-14 2006-09-19 Pmc-Sierra, Inc. Method and apparatus for managing data traffic between a high capacity source and multiple destinations
CN1250294A (en) * 1999-07-27 2000-04-12 邮电部武汉邮电科学研究院 Adaption method for fusion of Ethernet with synchronizing digital system or synchronizing optical network
US7401205B1 (en) 1999-08-13 2008-07-15 Mips Technologies, Inc. High performance RISC instruction set digital signal processor having circular buffer and looping controls
NL1013747C2 (en) * 1999-12-03 2001-06-25 Stertil Bv Vehicle blocking device.
US6568299B2 (en) * 1999-12-16 2003-05-27 Bobby Hu Reversible ratcheting tool with a smaller head
US20020010810A1 (en) * 2000-03-01 2002-01-24 Ming-Kang Liu xDSL function ASIC processor & method of operation
US6631135B1 (en) 2000-03-27 2003-10-07 Nortel Networks Limited Method and apparatus for negotiating quality-of-service parameters for a network connection
US6795396B1 (en) * 2000-05-02 2004-09-21 Teledata Networks, Ltd. ATM buffer system
US20020031141A1 (en) * 2000-05-25 2002-03-14 Mcwilliams Patrick Method of detecting back pressure in a communication system using an utopia-LVDS bridge
US20020009089A1 (en) * 2000-05-25 2002-01-24 Mcwilliams Patrick Method and apparatus for establishing frame synchronization in a communication system using an UTOPIA-LVDS bridge
US20020031132A1 (en) * 2000-05-25 2002-03-14 Mcwilliams Patrick UTOPIA-LVDS bridge
US20020031133A1 (en) * 2000-05-25 2002-03-14 Mcwilliams Patrick Embedded communication protocol using a UTOPIA-LVDS bridge
US6738868B2 (en) * 2000-06-10 2004-05-18 Hewlett-Packard Development Company, L.P. System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
KR100336593B1 (en) * 2000-06-14 2002-05-16 박종섭 Interface between UTOPIA level 2 and UTOPIA level 1 in ATM mutiplexing/demultiplexing assembly
US20020034162A1 (en) * 2000-06-30 2002-03-21 Brinkerhoff Kenneth W. Technique for implementing fractional interval times for fine granularity bandwidth allocation
US20020059426A1 (en) * 2000-06-30 2002-05-16 Mariner Networks, Inc. Technique for assigning schedule resources to multiple ports in correct proportions
US6707821B1 (en) * 2000-07-11 2004-03-16 Cisco Technology, Inc. Time-sensitive-packet jitter and latency minimization on a shared data link
US20020136220A1 (en) * 2000-10-02 2002-09-26 Shakuntala Anjanaiah Apparatus and method for an interface unit for data transfer between data processing units in the asynchronous transfer mode and in the I/O mode
US7140016B2 (en) * 2000-11-29 2006-11-21 Texas Instruments Incorporated Media accelerator quality of service
US7215672B2 (en) * 2001-03-13 2007-05-08 Koby Reshef ATM linked list buffer system
US6928080B2 (en) * 2001-06-28 2005-08-09 Intel Corporation Transporting variable length ATM AAL CPS packets over a non-ATM-specific bus
US6728209B2 (en) * 2001-07-25 2004-04-27 Overture Networks, Inc. Measurement of packet delay variation
US7519081B2 (en) * 2001-09-18 2009-04-14 Cisco Technology, Inc. Multi-carrier frequency-division multiplexing (FDM) architecture for high speed digital service in local networks
US7336680B2 (en) * 2001-09-18 2008-02-26 Scientific-Atlanta, Inc. Multi-carrier frequency-division multiplexing (FDM) architecture for high speed digital service
US20030053493A1 (en) * 2001-09-18 2003-03-20 Joseph Graham Mobley Allocation of bit streams for communication over-multi-carrier frequency-division multiplexing (FDM)
US7218901B1 (en) * 2001-09-18 2007-05-15 Scientific-Atlanta, Inc. Automatic frequency control of multiple channels
US6845412B1 (en) * 2001-11-07 2005-01-18 Lsi Logic Corporation Method and system for a host processor to broadcast data to instruction or data memories of several processors in a multi-processor integrated circuit
US20030105799A1 (en) * 2001-12-03 2003-06-05 Avaz Networks, Inc. Distributed processing architecture with scalable processing layers
US7051246B2 (en) * 2003-01-15 2006-05-23 Lucent Technologies Inc. Method for estimating clock skew within a communications network
US7412588B2 (en) * 2003-07-25 2008-08-12 International Business Machines Corporation Network processor system on chip with bridge coupling protocol converting multiprocessor macro core local bus to peripheral interfaces coupled system bus
ITMI20040600A1 (en) * 2004-03-26 2004-06-26 Atmel Corp DSP SYSTEM ON DOUBLE PROCESSOR WITH MOBILE COMB IN THE COMPLEX DOMAIN
EP1802030A1 (en) * 2005-12-23 2007-06-27 Nagracard S.A. Secure system-on-chip

Patent Citations (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914692A (en) * 1987-12-29 1990-04-03 At&T Bell Laboratories Automatic speech recognition using echo cancellation
US5142677A (en) * 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
US6134578A (en) * 1989-05-04 2000-10-17 Texas Instruments Incorporated Data processing device and method of operation with context switching
US5189500A (en) * 1989-09-22 1993-02-23 Mitsubishi Denki Kabushiki Kaisha Multi-layer type semiconductor device with semiconductor element layers stacked in opposite directions and manufacturing method thereof
US5200564A (en) * 1990-06-29 1993-04-06 Casio Computer Co., Ltd. Digital information processing apparatus with multiple CPUs
US5594784A (en) * 1993-04-27 1997-01-14 Southwestern Bell Technology Resources, Inc. Apparatus and method for transparent telephony utilizing speech-based signaling for initiating and handling calls
US6057555A (en) * 1993-07-12 2000-05-02 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5663570A (en) * 1993-07-12 1997-09-02 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5861336A (en) * 1993-07-12 1999-01-19 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5883396A (en) * 1993-07-12 1999-03-16 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5492857A (en) * 1993-07-12 1996-02-20 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5363404A (en) * 1993-07-13 1994-11-08 Motorola Inc. Apparatus and method for conveying information in a communication network
US5724356A (en) * 1995-04-28 1998-03-03 Multi-Tech Systems, Inc. Advanced bridge/router local area network modem node
US5991308A (en) * 1995-08-25 1999-11-23 Terayon Communication Systems, Inc. Lower overhead method for data transmission using ATM and SCDMA over hybrid fiber coax cable plant
US5956518A (en) * 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US5923761A (en) * 1996-05-24 1999-07-13 Lsi Logic Corporation Single chip solution for multimedia GSM mobile station systems
US5999525A (en) * 1996-11-18 1999-12-07 Mci Communications Corporation Method for video telephony over a hybrid network
US6574217B1 (en) * 1996-11-27 2003-06-03 Alcatel Usa Sourcing, L.P. Telecommunications switch for providing telephony traffic integrated with video information services
US6047372A (en) * 1996-12-02 2000-04-04 Compaq Computer Corp. Apparatus for routing one operand to an arithmetic logic unit from a fixed register slot and another operand from any register slot
US6108760A (en) * 1997-10-31 2000-08-22 Silicon Spice Method and apparatus for position independent reconfiguration in a network of multiple context processing elements
US6122719A (en) * 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US6226735B1 (en) * 1998-05-08 2001-05-01 Broadcom Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements
US6154446A (en) * 1998-07-08 2000-11-28 Broadcom Corporation Network switching architecture utilizing cell based and packet based per class-of-service head-of-line blocking prevention
US6697345B1 (en) * 1998-07-24 2004-02-24 Hughes Electronics Corporation Multi-transport mode radio communications having synchronous and asynchronous transport mode capability
US6650649B1 (en) * 1998-07-24 2003-11-18 Hughes Electronics Corporation Extension interface units in a communication system
US6331977B1 (en) * 1998-08-28 2001-12-18 Sharp Electronics Corporation System on chip (SOC) four-way switch crossbar system and method
US6798420B1 (en) * 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US6768774B1 (en) * 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US6661422B1 (en) * 1998-11-09 2003-12-09 Broadcom Corporation Video and graphics system with MPEG specific data transfer commands
US6522688B1 (en) * 1999-01-14 2003-02-18 Eric Morgan Dowling PCM codec and modem for 56K bi-directional transmission
US6826187B1 (en) * 1999-05-07 2004-11-30 Cisco Technology, Inc. Interfacing between a physical layer and a bus
US6747977B1 (en) * 1999-06-30 2004-06-08 Nortel Networks Limited Packet interface and method of packetizing information
US6580727B1 (en) * 1999-08-20 2003-06-17 Texas Instruments Incorporated Element management system for a digital subscriber line access multiplexer
US6580793B1 (en) * 1999-08-31 2003-06-17 Lucent Technologies Inc. Method and apparatus for echo cancellation with self-deactivation
US6853385B1 (en) * 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6573905B1 (en) * 1999-11-09 2003-06-03 Broadcom Corporation Video and graphics system with parallel processing of graphics windows
US6640239B1 (en) * 1999-11-10 2003-10-28 Garuda Network Corporation Apparatus and method for intelligent scalable switching network
US20030004697A1 (en) * 2000-01-24 2003-01-02 Ferris Gavin Robert Method of designing, modelling or fabricating a communications baseband stack
US6807167B1 (en) * 2000-03-08 2004-10-19 Lucent Technologies Inc. Line card for supporting circuit and packet switching
US6751224B1 (en) * 2000-03-30 2004-06-15 Azanda Network Devices, Inc. Integrated ATM/packet segmentation-and-reassembly engine for handling both packet and ATM input data and for outputting both ATM and packet data
US6934937B1 (en) * 2000-03-30 2005-08-23 Broadcom Corporation Multi-channel, multi-service debug on a pipelined CPU architecture
US6810039B1 (en) * 2000-03-30 2004-10-26 Azanda Network Devices, Inc. Processor-based architecture for facilitating integrated data transfer between both atm and packet traffic with a packet bus or packet link, including bidirectional atm-to-packet functionally for atm traffic
US6483043B1 (en) * 2000-05-19 2002-11-19 Eaglestone Partners I, Llc Chip assembly with integrated power distribution between a wafer interposer and an integrated circuit chip
US6816750B1 (en) * 2000-06-09 2004-11-09 Cirrus Logic, Inc. System-on-a-chip
US6892324B1 (en) * 2000-07-19 2005-05-10 Broadcom Corporation Multi-channel, multi-service debug
US6751723B1 (en) * 2000-09-02 2004-06-15 Actel Corporation Field programmable gate array and microcontroller system-on-a-chip
US6738358B2 (en) * 2000-09-09 2004-05-18 Intel Corporation Network echo canceller for integrated telecommunications processing
US6669782B1 (en) * 2000-11-15 2003-12-30 Randhir P. S. Thakur Method and apparatus to control the formation of layers useful in integrated circuits
US6636515B1 (en) * 2000-11-21 2003-10-21 Transwitch Corporation Method for switching ATM, TDM, and packet data through a single communications switch
US6631130B1 (en) * 2000-11-21 2003-10-07 Transwitch Corporation Method and apparatus for switching ATM, TDM, and packet data through a single communications switch while maintaining TDM timing
US6763018B1 (en) * 2000-11-30 2004-07-13 3Com Corporation Distributed protocol processing and packet forwarding using tunneling protocols
US6754804B1 (en) * 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US20020101982A1 (en) * 2001-01-30 2002-08-01 Hammam Elabd Line echo canceller scalable to multiple voice channels/ports
US6813673B2 (en) * 2001-04-30 2004-11-02 Advanced Micro Devices, Inc. Bus arbitrator supporting multiple isochronous streams in a split transactional unidirectional bus architecture and method of operation
US20020171769A1 (en) * 2001-05-01 2002-11-21 Koninklijke Philips Electronics N.V. Method and apparatus for echo cancellation in digital ATV systems using an echo cancellation reference signal
US6952238B2 (en) * 2001-05-01 2005-10-04 Koninklijke Philips Electronics N.V. Method and apparatus for echo cancellation in digital ATV systems using an echo cancellation reference signal
US6806915B2 (en) * 2001-05-03 2004-10-19 Koninklijke Philips Electronics N.V. Method and apparatus for echo cancellation in digital communications using an echo cancellation reference signal
US20030021339A1 (en) * 2001-05-03 2003-01-30 Koninklijke Philips Electronics N.V. Method and apparatus for echo cancellation in digital communications using an echo cancellation reference signal
US6737743B2 (en) * 2001-07-10 2004-05-18 Kabushiki Kaisha Toshiba Memory chip and semiconductor device using the memory chip and manufacturing method of those
US6649428B2 (en) * 2001-08-10 2003-11-18 Fujitsu Limited Semiconductor chip, semiconductor integrated circuit using the same, and method of selecting semiconductor chip
US6959376B1 (en) * 2001-10-11 2005-10-25 Lsi Logic Corporation Integrated circuit containing multiple digital signal processors

Cited By (167)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070020290A1 (en) * 2001-03-09 2007-01-25 Diapharm Limited Natural antibodieactive against HIV virus
US20050216938A1 (en) * 2002-05-14 2005-09-29 Thales Avionics, Inc. In-flight entertainment system with wireless communication among components
US20080253395A1 (en) * 2002-06-11 2008-10-16 Pandya Ashish A Tcp/ip processor and engine using rdma
US20040010545A1 (en) * 2002-06-11 2004-01-15 Pandya Ashish A. Data processing system using internet protocols and RDMA
US7944920B2 (en) 2002-06-11 2011-05-17 Pandya Ashish A Data processing system using internet protocols and RDMA
US8181239B2 (en) 2002-06-11 2012-05-15 Pandya Ashish A Distributed network security system and a hardware processor therefor
US20090019538A1 (en) * 2002-06-11 2009-01-15 Pandya Ashish A Distributed network security system and a hardware processor therefor
US20090055496A1 (en) * 2002-10-08 2009-02-26 Gaurav Garg 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
US20050027793A1 (en) * 2002-10-08 2005-02-03 Hass David T. Advanced processor with mechanism for packet distribution at high line rate
US9154443B2 (en) 2002-10-08 2015-10-06 Broadcom Corporation Advanced processor with fast messaging network technology
US20100318703A1 (en) * 2002-10-08 2010-12-16 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
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
US8499302B2 (en) 2002-10-08 2013-07-30 Netlogic Microsystems, Inc. Advanced processor with mechanism for packet distribution at high line rate
US7627717B2 (en) * 2002-10-08 2009-12-01 Rmi Corporation Advanced processor messaging apparatus including fast messaging ring components configured to accomodate point-to-point transfer of non-memory related messages
US20080216074A1 (en) * 2002-10-08 2008-09-04 Hass David T Advanced processor translation lookaside buffer management in a multithreaded system
US8543747B2 (en) 2002-10-08 2013-09-24 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US20050055540A1 (en) * 2002-10-08 2005-03-10 Hass David T. Advanced processor scheduling in a multithreaded system
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
US20050044323A1 (en) * 2002-10-08 2005-02-24 Hass David T. Advanced processor with out of order load store scheduling in an in order pipeline
US8788732B2 (en) 2002-10-08 2014-07-22 Netlogic Microsystems, Inc. Messaging network for processing data using multiple processor cores
US20080126709A1 (en) * 2002-10-08 2008-05-29 Hass David T Advanced processor with system on a chip interconnect technology
US8065456B2 (en) 2002-10-08 2011-11-22 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US8037224B2 (en) 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US20100077150A1 (en) * 2002-10-08 2010-03-25 Rmi Corporation Advanced processor with cache coherency
US8953628B2 (en) 2002-10-08 2015-02-10 Netlogic Microsystems, Inc. Processor with packet ordering device
US7991977B2 (en) * 2002-10-08 2011-08-02 Netlogic Microsystems, Inc. Advanced processor translation lookaside buffer management in a multithreaded system
US7984268B2 (en) 2002-10-08 2011-07-19 Netlogic Microsystems, Inc. Advanced processor scheduling in a multithreaded system
US9264380B2 (en) 2002-10-08 2016-02-16 Broadcom Corporation Method and apparatus for implementing cache coherency of a processor
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
US20050041651A1 (en) * 2002-10-08 2005-02-24 Hass David T. Advanced processor with mechanism for fast packet queuing operations
US7941603B2 (en) 2002-10-08 2011-05-10 Netlogic Microsystems, Inc. Method and apparatus for implementing cache coherency of a processor
US20050041666A1 (en) * 2002-10-08 2005-02-24 Hass David T. Advanced processor with mechanism for enforcing ordering between information sent on two independent networks
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
US9092360B2 (en) 2002-10-08 2015-07-28 Broadcom Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US20070185849A1 (en) * 2002-11-26 2007-08-09 Bapiraju Vinnakota Data structure traversal instructions for packet processing
US20060136570A1 (en) * 2003-06-10 2006-06-22 Pandya Ashish A Runtime adaptable search processor
US20050108518A1 (en) * 2003-06-10 2005-05-19 Pandya Ashish A. Runtime adaptable security processor
US7685254B2 (en) 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US8249224B2 (en) * 2003-12-15 2012-08-21 International Business Machines Corporation Providing speaker identifying information within embedded digital information
US20090052634A1 (en) * 2003-12-15 2009-02-26 International Business Machines Corporation Providing speaker identifying information within embedded digital information
US20080294874A1 (en) * 2004-02-27 2008-11-27 Hooman Honary Allocation of combined or separate data and control planes
US7424698B2 (en) 2004-02-27 2008-09-09 Intel Corporation Allocation of combined or separate data and control planes
US7975250B2 (en) 2004-02-27 2011-07-05 Intel Corporation Allocation of combined or separate data and control planes
US20050193357A1 (en) * 2004-02-27 2005-09-01 Intel Corporation Allocation of combined or separate data and control planes
US7830893B2 (en) * 2004-03-02 2010-11-09 Jds Uniphase Corporation Real time segmentation and reassembly of asynchronous transfer mode (ATM) adaptation layer two (AAL2) and AAL5 data
US20050195829A1 (en) * 2004-03-02 2005-09-08 Ward Robert G. Real time segmentation and reassembly of asynchronous transfer mode (ATM) adaptation layer two (AAL2) and AAL5 data
US20050223110A1 (en) * 2004-03-30 2005-10-06 Intel Corporation Heterogeneous building block scalability
US20060004902A1 (en) * 2004-06-30 2006-01-05 Siva Simanapalli Reconfigurable circuit with programmable split adder
DE102004035843A1 (en) * 2004-07-23 2006-02-16 Infineon Technologies Ag Network Processor
DE102004035843B4 (en) * 2004-07-23 2010-04-15 Infineon Technologies Ag Router Network Processor
US7720232B2 (en) * 2004-10-15 2010-05-18 Lifesize Communications, Inc. Speakerphone
US20060093128A1 (en) * 2004-10-15 2006-05-04 Oxford William V Speakerphone
US20060126515A1 (en) * 2004-12-15 2006-06-15 Ward Robert G Filtering wireless network packets
US7630318B2 (en) * 2004-12-15 2009-12-08 Agilent Technologies, Inc. Filtering wireless network packets
EP1836797A1 (en) * 2005-01-10 2007-09-26 Quartics, Inc. Integrated architecture for the unified processing of visual media
EP1836797A4 (en) * 2005-01-10 2010-03-17 Quartics Inc Integrated architecture for the unified processing of visual media
AU2006244646B2 (en) * 2005-01-10 2010-08-19 Quartics, Inc. Integrated architecture for the unified processing of visual media
US8635378B1 (en) * 2005-03-25 2014-01-21 Tilera Corporation Flow control in a parallel processing environment
US8223935B2 (en) 2005-04-30 2012-07-17 Oracle International Corporation Revenue management systems and methods
US8798576B2 (en) 2005-04-30 2014-08-05 Oracle International Corporation Revenue management systems and methods with enhanced rollover
US20060248010A1 (en) * 2005-04-30 2006-11-02 Portal Software, Inc. Revenue management systems and methods
US20080033874A1 (en) * 2005-04-30 2008-02-07 Oracle International Corporation Revenue management systems and methods with sponsored top-up options
US8369500B2 (en) 2005-04-30 2013-02-05 Oracle International Corporation Revenue management systems and methods with sponsored top-up options
US20080040267A1 (en) * 2005-04-30 2008-02-14 Oracle International Corporation Revenue management systems and methods with re-rating and rebilling
US20070288368A1 (en) * 2005-04-30 2007-12-13 Oracle International Corporation Revenue management systems and methods with payment suspense management
US8462923B2 (en) 2005-04-30 2013-06-11 Oracle International Corporation Revenue management systems and methods with payment suspense management
US8422651B2 (en) 2005-04-30 2013-04-16 Oracle International Corporation Revenue management systems and methods with re-rating and rebilling
US8102980B2 (en) 2005-04-30 2012-01-24 Oracle International Corporation Revenue management systems and methods with bill and account suppression
US8259712B2 (en) * 2005-05-19 2012-09-04 Genband Us Llc Methods and apparatus for interconnection of media gateways
US20060262780A1 (en) * 2005-05-19 2006-11-23 Santera Systems, Inc. Methods and apparatus for interconnection of media gateways
US7646726B2 (en) 2005-06-09 2010-01-12 At&T Intellectual Property 1, L.P. System for detecting packetization delay of packets in a network
US20060280163A1 (en) * 2005-06-09 2006-12-14 Yongdong Zhao System for detecting packetization delay of packets in a network
US8116326B2 (en) * 2005-06-28 2012-02-14 Oracle International Corporation Revenue management system and method
US20070091874A1 (en) * 2005-06-28 2007-04-26 Alexander Rockel Revenue management system and method
US8117358B2 (en) 2005-07-28 2012-02-14 Oracle International Corporation Revenue management system and method utilizing database backup
US8223777B2 (en) 2005-11-15 2012-07-17 Oracle International Corporation Gateway for achieving low latency and high availability in a real time event processing system
US7843901B2 (en) 2006-03-02 2010-11-30 Tango Networks, Inc. Call flow system and method for use in a legacy telecommunication system
US11871216B2 (en) 2006-03-02 2024-01-09 Tango Networks, Inc. Call flow system and method for use in a legacy telecommunication system
US20110075609A1 (en) * 2006-03-02 2011-03-31 Andrew Silver Call flow system and method for use in a voip telecommunication system
US7903635B2 (en) 2006-03-02 2011-03-08 Tango Networks, Inc. System and method for enabling DTMF detection in a VoIP network
US20110090823A1 (en) * 2006-03-02 2011-04-21 Andrew Silver System and method for enabling call originations using sms and hotline capabilities
US20110051707A1 (en) * 2006-03-02 2011-03-03 Andrew Silver Call flow system and method for use in a legacy telecommunication system
WO2007103125A3 (en) * 2006-03-02 2007-10-18 Tango Networks Inc System and method for dtmf detection in an active voip call system
US7890096B2 (en) 2006-03-02 2011-02-15 Tango Networks, Inc. System and method for enabling call originations using SMS and hotline capabilities
US20110116498A1 (en) * 2006-03-02 2011-05-19 Andrew Silver System and method for enabling dtmf detection in a voip network
WO2007103125A2 (en) * 2006-03-02 2007-09-13 Tango Networks, Inc. System and method for dtmf detection in an active voip call system
US7974618B2 (en) 2006-03-02 2011-07-05 Tango Networks, Inc. System and method for speeding call originations to a variety of devices using intelligent predictive techniques for half-call routing
US20070206580A1 (en) * 2006-03-02 2007-09-06 Andrew Silver Call flow system and method use in VoIP telecommunication system
US8958346B2 (en) 2006-03-02 2015-02-17 Tango Networks, Inc. Calling line/name identification of enterprise subscribers in mobile calls
US20070206563A1 (en) * 2006-03-02 2007-09-06 Andrew Silver Mobile application gateway for connecting devices on a cellular network with individual enterprise and data networks
US20070206572A1 (en) * 2006-03-02 2007-09-06 Andrew Silver System and method for enabling VPN-less session setup for connecting mobile data devices to an enterprise data network
US20070206573A1 (en) * 2006-03-02 2007-09-06 Andrew Silver System and method for speeding call originations to a variety of devices using intelligent predictive techniques for half-call routing
US20070206568A1 (en) * 2006-03-02 2007-09-06 Andrew Silver Call flow system and method use in legacy telecommunication system
US8023479B2 (en) 2006-03-02 2011-09-20 Tango Networks, Inc. Mobile application gateway for connecting devices on a cellular network with individual enterprise and data networks
US8929358B2 (en) 2006-03-02 2015-01-06 Tango Networks, Inc. Call flow system and method for use in a legacy telecommunication system
US20070206613A1 (en) * 2006-03-02 2007-09-06 Andrew Silver System and method for executing originating services in a terminating network for IMS and non-IMS applications
US20070206735A1 (en) * 2006-03-02 2007-09-06 Andrew Silver System and method for enabling DTMF detection in a VoIP network
US20110081911A1 (en) * 2006-03-02 2011-04-07 Andrew Silver System and method for enabling vpn-less session setup for connecting mobile data devices to an enterprise data network
US11849380B2 (en) 2006-03-02 2023-12-19 Tango Networks, Inc. Call flow system and method for use in a VoIP telecommunication system
US7873032B2 (en) 2006-03-02 2011-01-18 Tango Networks, Inc. Call flow system and method use in VoIP telecommunication system
US7873001B2 (en) 2006-03-02 2011-01-18 Tango Networks, Inc. System and method for enabling VPN-less session setup for connecting mobile data devices to an enterprise data network
US11811554B2 (en) 2006-03-02 2023-11-07 Tango Networks, Inc. Mobile application gateway for connecting devices on a cellular network with individual enterprise and data networks
US11638126B2 (en) 2006-03-02 2023-04-25 Tango Networks, Inc. System and method for enabling call originations using SMS and hotline capabilities
US9215319B2 (en) 2006-03-02 2015-12-15 Tango Networks, Inc. System and method for executing originating services in a terminating network for IMS and non-IMS applications
US8175053B2 (en) 2006-03-02 2012-05-08 Tango Networks, Inc. System and method for enabling VPN-less session setup for connecting mobile data devices to an enterprise data network
US11622311B2 (en) 2006-03-02 2023-04-04 Tango Networks, Inc. Calling line/name identification of enterprise subscribers in mobile calls
US10462726B2 (en) 2006-03-02 2019-10-29 Tango Networks, Inc. Call flow system and method for use in a legacy telecommunication system
US10567930B2 (en) 2006-03-02 2020-02-18 Tango Networks, Inc. System and method for enabling call originations using SMS and hotline capabilities
US10616818B2 (en) 2006-03-02 2020-04-07 Tango Networks, Inc. System and method for speeding call originations to a variety of devices using intelligent predictive techniques for half-call routing
US11412435B2 (en) 2006-03-02 2022-08-09 Tango Networks, Inc. System and method for executing originating services in a terminating network for IMS and non-IMS applications
US11405846B2 (en) 2006-03-02 2022-08-02 Tango Networks, Inc. Call flow system and method for use in a legacy telecommunication system
US8271049B2 (en) 2006-03-02 2012-09-18 Tango Networks, Inc. System and method for enabling DTMF detection in a VoIP network
US10674419B2 (en) 2006-03-02 2020-06-02 Tango Networks, Inc. System and method for executing originating services in a terminating network for IMS and non-IMS applications
US10945187B2 (en) 2006-03-02 2021-03-09 Tango Networks, Inc. Call flow system and method for use in a VoIP telecommunication system
US8428578B2 (en) 2006-03-02 2013-04-23 Tango Networks, Inc. System and method for enabling call originations using SMS and hotline capabilities
US10939255B2 (en) 2006-03-02 2021-03-02 Tango Networks, Inc. System and method for enabling call originations using SMS and hotline capabilities
US10904816B2 (en) 2006-03-02 2021-01-26 Tango Networks, Inc. Call flow system and method for use in a legacy telecommunication system
US8488598B2 (en) 2006-03-02 2013-07-16 Tango Networks, Inc. Call flow system and method for use in a VoIP telecommunication system
US7933875B2 (en) * 2006-08-24 2011-04-26 Sun Microsystems, Inc. File system with distributed components
US20080052293A1 (en) * 2006-08-24 2008-02-28 Sun Microsystems, Inc. File system with distributed components
US9952983B2 (en) 2006-12-08 2018-04-24 Ashish A. Pandya Programmable intelligent search memory enabled secure flash memory
US9589158B2 (en) 2006-12-08 2017-03-07 Ashish A. Pandya Programmable intelligent search memory (PRISM) and cryptography engine enabled secure DRAM
US9141557B2 (en) 2006-12-08 2015-09-22 Ashish A. Pandya Dynamic random access memory (DRAM) that comprises a programmable intelligent search memory (PRISM) and a cryptography processing engine
US9129043B2 (en) 2006-12-08 2015-09-08 Ashish A. Pandya 100GBPS security and search architecture using programmable intelligent search memory
US7877551B2 (en) 2007-06-26 2011-01-25 International Business Machines Corporation Programmable partitioning for high-performance coherence domains in a multiprocessor system
US20090006769A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Programmable partitioning for high-performance coherence domains in a multiprocessor system
US8108738B2 (en) 2007-06-26 2012-01-31 International Business Machines Corporation Data eye monitor method and apparatus
US8103832B2 (en) 2007-06-26 2012-01-24 International Business Machines Corporation Method and apparatus of prefetching streams of varying prefetch depth
US8904392B2 (en) 2007-06-26 2014-12-02 International Business Machines Corporation Shared performance monitor in a multiprocessor system
US8032892B2 (en) 2007-06-26 2011-10-04 International Business Machines Corporation Message passing with a limited number of DMA byte counters
US8010875B2 (en) 2007-06-26 2011-08-30 International Business Machines Corporation Error correcting code with chip kill capability and power saving enhancement
US7984448B2 (en) 2007-06-26 2011-07-19 International Business Machines Corporation Mechanism to support generic collective communication across a variety of programming models
US20090007141A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Message passing with a limited number of dma byte counters
US20090006808A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Ultrascalable petaflop parallel supercomputer
US7886084B2 (en) 2007-06-26 2011-02-08 International Business Machines Corporation Optimized collectives using a DMA on a parallel computer
US8140925B2 (en) 2007-06-26 2012-03-20 International Business Machines Corporation Method and apparatus to debug an integrated circuit chip via synchronous clock stop and scan
US8230433B2 (en) 2007-06-26 2012-07-24 International Business Machines Corporation Shared performance monitor in a multiprocessor system
US7761687B2 (en) * 2007-06-26 2010-07-20 International Business Machines Corporation Ultrascalable petaflop parallel supercomputer
US7827391B2 (en) 2007-06-26 2010-11-02 International Business Machines Corporation Method and apparatus for single-stepping coherence events in a multiprocessor system under software control
US9252814B2 (en) 2007-06-26 2016-02-02 International Business Machines Corporation Combined group ECC protection and subgroup parity protection
US7802025B2 (en) 2007-06-26 2010-09-21 International Business Machines Corporation DMA engine for repeating communication patterns
US8468416B2 (en) 2007-06-26 2013-06-18 International Business Machines Corporation Combined group ECC protection and subgroup parity protection
US8509255B2 (en) 2007-06-26 2013-08-13 International Business Machines Corporation Hardware packet pacing using a DMA in a parallel computer
US7793038B2 (en) 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US8756350B2 (en) 2007-06-26 2014-06-17 International Business Machines Corporation Method and apparatus for efficiently tracking queue entries relative to a timestamp
US8458282B2 (en) 2007-06-26 2013-06-04 International Business Machines Corporation Extended write combining using a write continuation hint flag
US20090006810A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Mechanism to support generic collective communication across a variety of programming models
US10140179B2 (en) 2007-06-26 2018-11-27 International Business Machines Corporation Combined group ECC protection and subgroup parity protection
US20090006762A1 (en) * 2007-06-26 2009-01-01 International Business Machines Corporation Method and apparatus of prefetching streams of varying prefetch depth
US20090097842A1 (en) * 2007-10-15 2009-04-16 Motorola, Inc. System and method for sonet equipment fault management
US7929860B2 (en) * 2007-10-15 2011-04-19 Motorola Mobility, Inc. System and method for sonet equipment fault management
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
US20090201935A1 (en) * 2008-02-08 2009-08-13 Hass David T System and method for parsing and allocating a plurality of packets to processor core threads
US9727505B2 (en) 2008-03-27 2017-08-08 Apple Inc. Clock control for DMA busses
US9032113B2 (en) * 2008-03-27 2015-05-12 Apple Inc. Clock control for DMA busses
US20090248911A1 (en) * 2008-03-27 2009-10-01 Apple Inc. Clock control for dma busses
US20090307408A1 (en) * 2008-06-09 2009-12-10 Rowan Nigel Naylor Peer-to-Peer Embedded System Communication Method and Apparatus
US9361160B2 (en) 2008-09-30 2016-06-07 International Business Machines Corporation Virtualization across physical partitions of a multi-core processor (MCP)
US20100082942A1 (en) * 2008-09-30 2010-04-01 International Business Machines Corporation Virtualization across physical partitions of a multi-core processor (mcp)
US8732716B2 (en) * 2008-09-30 2014-05-20 International Business Machines Corporation Virtualization across physical partitions of a multi-core processor (MCP)
US20100158513A1 (en) * 2008-12-22 2010-06-24 Eui-Suk Jung Apparatus and method for measuring signal performance and apparatus for selecting signal
US10430241B2 (en) * 2017-04-26 2019-10-01 Dell Products L.P. Systems and methods for scalable cloud computing by optimally utilizing management controller for host compute processing
US20180314558A1 (en) * 2017-04-26 2018-11-01 Dell Products L.P. Systems and methods for scalable cloud computing by optimally utilizing management controller for host compute processing
US10426424B2 (en) 2017-11-21 2019-10-01 General Electric Company System and method for generating and performing imaging protocol simulations
US11562214B2 (en) * 2019-03-14 2023-01-24 Baidu Usa Llc Methods for improving AI engine MAC utilization

Also Published As

Publication number Publication date
US20060287742A1 (en) 2006-12-21
US20090328048A1 (en) 2009-12-31
US7516320B2 (en) 2009-04-07

Similar Documents

Publication Publication Date Title
US7516320B2 (en) Distributed processing architecture with scalable processing layers
US7835280B2 (en) Methods and systems for managing variable delays in packet transmission
JP2682561B2 (en) Programmable line adapter
AU2006244646B2 (en) Integrated architecture for the unified processing of visual media
JP2950366B2 (en) Multimedia communication platform and multimedia communication device
US7436767B1 (en) Method and apparatus for controlling the transmission of cells across a network
EP0873037B1 (en) Traffic shaper for ATM network using dual leaky bucket regulator
US6338130B1 (en) Adaptive method and apparatus for allocation of DSP resources in a communication system
US8170007B2 (en) Packet telephony appliance
US7133417B1 (en) Multipath voice switching method and apparatus
JP2000295289A (en) Large coupling wide band or narrow band exchange
US7366884B2 (en) Context switching system for a multi-thread execution pipeline loop and method of operation thereof
US6985477B2 (en) Method and apparatus for supporting multiservice digital signal processing applications
EP1248424A2 (en) AAL2 transmitter for voice-packets and signaling management-packets interleaving on an ATM connection
US6178180B1 (en) Communications adapter for processing ATM and ISDN data
US7310310B1 (en) Multi-link SAR for bonding ATM cell-streams
US20020172221A1 (en) Distributed communication device and architecture for balancing processing of real-time communication applications
US7158523B2 (en) Multi-link segmentation and reassembly sublayer for bonding asynchronous transfer mode permanent virtual circuits
US6694373B1 (en) Method and apparatus for hitless switchover of a voice connection in a voice processing module
JP2001094611A (en) Device for processing voice and fax data in remotely connected server
WO2010020646A2 (en) A method of processing packetised data
Hidell Supporting the Internet Protocols in a High Performance Real-Time Network
KR100209360B1 (en) B-isdn interfacing apparatus providing intelligent device driver
KR950012325B1 (en) Rout control unit of atm cell connection
Lindgren Host Interfacing and Connection Management in the DTM Gigabit Network

Legal Events

Date Code Title Description
AS Assignment

Owner name: AVAZ NETWORKS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KHAN, SHOAB AHMAD;RAHMATULLAH, MUHAMMAD MOHSIN;REEL/FRAME:012941/0206

Effective date: 20020501

AS Assignment

Owner name: QUARTICS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CMA BUSINESS CREDIT SERVICES ON BEHALF OF AVAZ NETWORKS, INC.;REEL/FRAME:015758/0372

Effective date: 20030801

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: COMERICA BANK, CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:021773/0871

Effective date: 20081028

Owner name: HERCULES TECHNOLOGY GROWTH CAPITAL, INC., CALIFORN

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:021773/0871

Effective date: 20081028

AS Assignment

Owner name: THE SAFI QURESHEY FAMILY TRUST DATED MAY 21, 1984,

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:021924/0742

Effective date: 20081126

Owner name: FOUNDATION CAPITAL IV, L.P., CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:021924/0742

Effective date: 20081126

Owner name: FV INVESTORS III, L.P., CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:021924/0742

Effective date: 20081126

Owner name: FOCUS VENTURES III, L.P., CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:021924/0742

Effective date: 20081126

AS Assignment

Owner name: GIRISH PATEL AND PRAGATI PATEL, TRUSTEE OF THE GIR

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:026923/0001

Effective date: 20101013

AS Assignment

Owner name: GREEN SEQUOIA LP, CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028024/0001

Effective date: 20101013

Owner name: MEYYAPPAN-KANNAPPAN FAMILY TRUST, CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028024/0001

Effective date: 20101013

AS Assignment

Owner name: CASTLE HILL INVESTMENT HOLDINGS LIMITED

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028054/0791

Effective date: 20101013

Owner name: SIENA HOLDINGS LIMITED

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028054/0791

Effective date: 20101013

Owner name: HERIOT HOLDINGS LIMITED, SWITZERLAND

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028054/0791

Effective date: 20101013

Owner name: AUGUSTUS VENTURES LIMITED, ISLE OF MAN

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028054/0791

Effective date: 20101013

Owner name: SEVEN HILLS GROUP USA, LLC, CALIFORNIA

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028054/0791

Effective date: 20101013