A computer system consists of a plurality of nodes, each with an associated local host, coupled together with a plurality of point-to-point links. An isochronous data channel is established within the computer system between a first subset of the plurality of nodes. The isochronous data channel includes a linked list of buffers which are used as temporary storage locations for data transmitted on the isochronous data channel. Each node which is part of the isochronous data channel is configured as a sender or a receiver and data transmissions are commenced. The presence of isochronous data in the channel generates an interrupt which signals a central processing unit (CPU) that data is available. The data is transferred to an associated location within the linked list of buffers and the CPU then moves on to other tasks. In other embodiments, data is transferred using DMA techniques rather than interrupt driven events. buffers can also be used to transmit isochronous data.
|
8. A sequence of computer-readable instructions embodied on a computer-readable medium comprising instructions arranged to cause a processor to configure an isochronous channel within a computer system including said processor to include a linked list of buffers configured to receive isochronous data transmitted within said computer system, each buffer comprising a data field for storing the isochronous data and a condition field for storing condition data to be evaluated, and to cause said processor to add a sender client to said isochronous channel and to cause said processor to add a listener client to said isochronous channel, and said listener client loading the isochronous data into the linked list of buffers and evaluating the condition data in the condition field of each buffer to determine a next one of the buffers from which to next access isochronous data.
1. A method comprising:
configuring an isochronous channel within a computer system to include a linked list of buffers configured to receive isochronous data transmitted within said computer system, each buffer comprising a data field for storing the isochronous data and a condition field for storing condition data to be evaluated;
adding a sender client configured to transmit said isochronous data to said isochronous channel, said sender client being a software driver routine associated with a sender node of said computer system, and providing said sender client with a channel identifier ; and
adding a listener client to said isochronous channel, said listener client being a software driver routine associated with a listener node of said computer system, by providing said listener client with said channel identifier said listener client loading the isochronous data into the linked list of buffers, and evaluating the condition data in the condition field to determine a next one of the buffers from which to next access isochronous data.
0. 18. A computer implemented method for handling of real time data transmitted on an isochronous channel within a computer system, the method comprising:
establishing a linked list of buffers for receiving isochronous data from a source device, each buffer comprising a data field for storing the isochronous data, a condition field, a first pointer field for storing a first pointer to one of the buffers from which isochronous data is to be next accessed in response to the condition data, and a second pointer field for storing a second pointer to one of the buffers from which isochronous data is to be next accessed in response to the condition data;
receiving the isochronous data from the source device;
loading the isochronous data into the linked list of buffers;
accessing the data in the linked list of buffers for output to a client device; and
responsive to an evaluation of the condition data, using the first pointer or second pointer to access a next buffer.
9. A computer system, comprising:
an isochronous channel having a linked list of buffers configured to receive isochronous data transmitted within said computer system, each buffer comprising a data field for storing the isochronous data and a condition field for storing condition data to be evaluated;
a sender client associated with said isochronous channel and configured to transmit said isochronous data, said sender client being a software driver routine associated with a sender node of said computer system; and
a listener client associated with said isochronous channel and configured to receive said isochronous data, said listener client being a software driver routine associated with a listener node of said computer system, and said listener client loading the isochronous data into the linked list of buffers and evaluating the condition data in the condition field of each buffer to determine a next buffer from which to next access isochronous data; and
wherein said sender client has an associated channel identifier that is provided to said listener client.
0. 13. A computer readable medium for handling of real time data transmitted on an isochronous channel within a computer system, the computer readable medium comprising:
a program, executable on the computer system, for configuring a linked list of buffers, each buffer comprising a data field for storing the isochronous data, a condition field for storing condition data to be evaluated; a first pointer field for storing a first pointer to one of the buffers from which isochronous data is to be next accessed in response to the condition data satisfying the condition; and a second pointer field for storing a second pointer to one of the buffers from which isochronous data is to be next accessed in response to the condition data not satisfying the condition; and
a program, executable on the computer system for receiving the isochronous data from a source device, loading the isochronous data into the linked list of buffers, evaluating the condition data in the condition field; and responsively using either the first pointer or the second pointer to next access isochronous data from one of the buffers.
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
11. The computer system of
0. 12. The method of
0. 14. The computer readable medium of
a pointer to a channel handler for performing a procedure on the buffer data prior to output of the data from the computer system.
0. 15. The computer readable medium of
0. 16. The computer readable medium of
0. 17. The computer readable medium of
a frame buffer for receiving from the program the isochronous data read from the buffers in accordance with the evaluation of the condition fields, for display of the isochronous data on a display device.
|
This application is a continuation application of U.S. Reissue application No. 09/932,846, filed Aug. 17, 2001, now U.S. Pat. No. RE. 38,641, which is a reissue application of U.S. Pat. No. 5,940,600, issued Aug. 17, 1999.
Notice: More than one reissue application has been filed for the reissue of U.S. Pat. No. 5,940,600. The reissue applications are application Nos. 10/845,060 (the present application), filed on May 12, 2004; 09/932,292, filed on Aug. 17, 2001, now RE 38,641; and 11/503,541, filed Aug. 11, 2006.
This invention relates generally to data communications and, more particularly, to data communications within a computer bus architecture.
The components of a computer system are typically coupled to a common bus for communicating information to one another. Various bus architectures are known in the prior art, and each bus architecture operates according to a communications protocol that defines the manner in which data transfer between components is accomplished.
The Institute of Electrical and Electronic Engineers (IEEE) has promulgated a number of different bus architecture standards including IEEE standards document 1394, entitled Standard for a High Performance Serial Bus (hereinafter “IEEE 1394 Serial Bus Standard”). A typical serial bus having the IEEE 1394 standard architecture is comprised of a multiplicity of nodes that are interconnected via point-to-point links, such as cables, that each connect a single node of the serial bus to another node of the serial bus. Data packets are propagated throughout the serial bus using a number of point-to-point transactions, wherein a node that receives a packet from another node via a first point-to-point link retransmits the received packet via other point-to-point links. A tree network configuration and associated packet handling protocol ensures that each node receives every packet once. The serial bus of the IEEE 1394 Serial Bus Standard may be used as an alternate bus for the parallel backplane of a computer system, as a low cost peripheral bus, or as a bus bridge between architecturally compatible buses.
A communications protocol of the IEEE 1394 Serial Bus Standards specifies two primary types of bus access: asynchronous access and isochronous access. Asynchronous access may be either “fair” or “cycle master”. Cycle master access is used by nodes that need the next available opportunity to transfer data. Isochronous access is used by nodes that require guaranteed bandwidth, for example, nodes transmitting video data. The transactions for each type of bus access are comprised of at least one “subaction”, wherein a subaction is a complete one-way transfer operation.
In the case of isochronous data transfers and computer systems conforming to the IEEE 1394 Serial Bus Standard, the prior art has attempted to manage the flow of data using dedicated drivers. Drivers are software entities associated with various components of a computer system and, among other functions, operate to configure the components and allow the components to be operable within the overall system. The drivers of the prior art have allowed for the transmission of video data from a digital video camera to a monitor, but have not allowed for real time video transmissions in a multi-tasking environment. In particular, the drivers of the prior art have required that a bus controller, e.g., the computer system's CPU, listen to a data channel at the exclusion of all other processes. As data arrives on the channel, it is stored in a buffer for later transmission to a frame buffer associated with a monitor. A new listen instruction must be issued for each separate isochronous data transmission. That is, if a single transmission corresponds to data for a single scan line of the monitor, for a display of five scan lines, five separate listen instructions are required. Because the data is being sent in real time, this system requires that the processor spend all of its time servicing the isochronous data transmissions, even if no data is currently being transmitted on the bus, without servicing any other tasks. It would, therefore, be desirable to have a means and method for a more efficient management of isochronous data channels in a computer system.
A computer implemented method of managing isochronous data channels in a computer system is described. In one embodiment, the computer system conforms to the IEEE 1394 Serial Bus Standard. An isochronous channel is established within the computer system and includes a linked list of buffers. The linked list of buffers corresponds to display locations on a display which is part of the computer system. Once the linked list of buffers has been established, the computer system executes instructions which allow for the transmission of isochronous data across the channel. Each time a sender node, a video camera in one embodiment, is ready to transmit data, an interrupt is generated which causes the processor to execute instructions to manage the flow of data from the sender. The processor transfers the data transmitted by the camera to a storage location within the linked list of buffers. Ultimately, this data is transferred to a frame buffer associated with a display. This interrupt driven management allows the processor to perform other tasks when no data is being transmitted over the isochronous channel.
In another embodiment, the data transfer is DMA driven rather than interrupt driven. For this embodiment, the isochronous channel, including the linked list of buffers, is established and the process is initiated. Data transmitted by the video camera is transferred to memory locations within the linked list of buffers by the DMA hardware and then ultimately transferred to a frame buffer for display.
In yet another embodiment, the central processing unit (CPU) for the computer system establishes an isochronous channel between a sender node and one or more receiver nodes, not including the CPU itself. For this embodiment, no linked list of buffers is required as data from the sender node is transferred directly to the receiver node.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
As described herein, a method and apparatus for managing isochronous data channels in a computer system is provided.
The computer system 5 of
A point-to-point link such as cable 20 is used to connect two nodes to one another. CPU node 12 is coupled to internal hard drive node 15 by an internal link 21, to monitor node 16 by cable 20, and to keyboard node 40 by a cable 20e. The keyboard node 40 is coupled to the mouse node 44 by a cable 20f. The monitor node 16 is coupled to the nodes of the other peripherals (not shown) by cable 20a and to the printer node 24 by cable 20b. The printer node 24 is coupled to the video camera node 30 by cable 20c and to the VCR node 34 by cable 20d. Each of the cables 20-20f and the internal link 21 may be constructed in accordance with the IEEE 1394 Serial Bus Standard and may include a first differential signal pair for conducting a first signal, a second differential signal pair for conducting a second signal, and a pair of power lines.
Each of the nodes 12, 15, 16, 24, 32, 34, 40 and 44 may have identical construction, although some of the nodes, such as mouse node 44, can be simplified because of their specified functions. Thus, the nodes can be modified to meet the needs of a particular local host. For example, each node may have one or more ports, the number of which is dependent upon its needs. For example, CPU node 12, as illustrated, has 3 ports, while the mouse node 44 has only 1 port.
Referring now to
In general, window 50 will be generated by an application program running on computer system 5. An example of such an application program is the QuickTime® program available from Apple Computer, Inc. of Cupertino, Calif. In such a case, computer system 5 may comprise the familiar Macintosh® computer system also available from Apple Computer, Inc. The video data to be displayed in window 50 on display screen 48 will generally be obtained from a frame buffer (not shown) associated with monitor 18. The techniques for displaying data stored in a frame buffer on the display screen of a monitor are well-known in the art.
In accordance with the methods of the present invention, real-time video data from video camera 32 is to be displayed within window 50 on display screen 48. The real-time video data generated by video camera 32 will comprise isochronous data packets in accordance with the IEEE 1394 Serial Bus Standard. Each of these isochronous data packets will include header information and payload information. The header information is used for routing the video data to the monitor 18 and for error detection and correction. The payload data comprises the video data to be displayed within window 50.
As indicated above, the prior art has attempted to manage this flow of isochronous data from video camera 32 to monitor 18 as follows. Once the application program has generated window 50 within display screen 48, CPU 10 executes instructions which cause it to listen on one of its associated ports. These instructions are typically stored on hard drive 14 and are loaded into system memory (not shown) upon initialization. When the video camera 32 has data to transmit, the video camera node 30 generates the isochronous data packets and transmits them over the serial bus in accordance with the IEEE 1394 Serial Bus Standard. CPU node 12 detects the presence of the isochronous data packets and strips the payload information from these packets. The payload information is placed in a buffer in the computer memory for later transmission to the frame buffer associated with monitor 18. If, for example, one transmission from video camera node 30 corresponded to data for a single scan line of window 50, five separate listen operations would be required to receive the video data associated with one frame to be displayed within window 50. To accommodate the real-time transmission nature of the video data, CPU 10 would be required to constantly listen to the bus for isochronous data transmissions from video camera node 30. That is, CPU 10 could not undertake to execute additional tasks, for example menu level tasks, as is common in multi-tasking environments.
To overcome this problem of the prior art, the present invention uses a linked list of buffers such as those shown in FIG. 3.
An exemplary structure of these isochronous channel buffers is shown below:
typedef
struct IsochChannelBufferStruct
IsochChannelBuffer
*IsochChannelBufferPtr;
struct
IsochChannelBufferStruct
{
IsochChannelBuffer Ptr
pBranchChannelBuffer,
Ptr
buffer
UInt32
length;
);
pBranchChannelBuffer
Branch pointer to next
channel buffer. When a
branch condition is met, its
corresponding branch pointer
is used to select the next
buffer.
buffer
Pointer to buffer memory.
length
Length of above
buffer.
The linked list of buffers corresponds to a particular isochronous channel. The isochronous channel is identified by a channel identification number (channel ID). The channel ID is maintained in a data record stored in the computer system 5 memory and is used by the various application programs and driver routines as described below. The use of a common channel ID allows the interoperation of application programs, driver routines, and other software routines which otherwise may not be capable of operating together.
One example of the use of a linked list of buffers according to the methods of the present invention as shown in
Upon receiving the instruction to create the isochronous channel ID, the CPU 10 will execute instructions to create such a channel. This may include a channel bandwidth and a preferred speed. An exemplary instruction is shown below.
OSStatus
AllocateIsochronousChannelID (
IsochChannelID
“pIsochChannelID,
UInt32
bandwidth,
UInt32
preferredSpeed);
<--
pIsochChannelID
Returned reference to this channel for use
is subsequent isochronous service calls.
-->
bandwidth
Bandwidth required for this channel.
-->
preferredspeed
Preferred speed for this channel.
This instruction creates an isochronous channel ID that is used by the various isochronous service routines described below. The channel is initialized with the required bandwidth and the preferred speed. The actual channel speed may be less than the preferred speed depending on the maximum speed of the devices that are later attached to the channel. The isochronous channel is a data path between nodes which will be added as channel clients as described below.
Once a channel has been established, the application program can issue instructions in order to add interested clients to the isochronous channel specified by channel ID. These clients are typically software driver routines associated with the devices, such as video camera 32, which take part in the display of the real-time video data to be transferred. The client software will take part in and be notified of all events associated with the given isochronous channel specified by the channel ID. Accordingly, at step 104, the application program instructs the driver associated with video camera 32 to send real-time video data over the channel identified by “channel ID” and display the data within window 50 on monitor 18.
In response to the instructions issued by the application program, the camera driver will configure the camera 32 such that the camera 32 will transmit video data over the channel specified by “channel ID”. The camera driver will also establish a linked list of buffers, as described above, and assign the buffers to “channel IID”. The linked list of buffers will act as storage locations for the video data to be transmitted by camera 32.
An exemplary instruction for adding clients to “channel ID” is shown below
OSStatus
AddIsochronousChannelClient (
IsochChannelID
isochChannelID,
DriverID
driverID,
Boolean
clientIsTalker);
-->
isochChannelID
Reference to the isochronous
channel to add the given client to.
-->
driverID
Reference to the driver client to
add to the given channel.
-->
clientIsTalker
If the given client will be a sender
node (i.e., a node that will be “doing
the talking” in IEEE 1394 pirlance)
this should be set to true. Otherwise
it should be set to false (i.e., if the
node will be a listener).
This instruction adds the driver specified by “DriverID” as a client to the isochronous channel specified by IsochChannel ID”. The client will be called to perform its role in initializing, starting and stopping the given isochronous channel. The client will also be informed of all channel events such as bus resets.
For the example of
Next, at step 110, the camera driver sets up the linked list of buffers described above. Once this is accomplished, a port on CPU node 12 can be set to listen to the isochronous channel. An exemplary routine for this procedure is shown below.
OSStatus
AllocateLocalIsochronousPort (
ReferenceID
referenceID,
IsochPortID
“pIsochPortID,
UInt32
ChannelNum,
UInt32
speed,
Boolean
talking);
-->
referenceID
Reference used to indicate which
node to allocate port on.
>--
pIsochPortID
Returned reference to this prot for use
in subsequent port service calls.
-->
channelNum
Channel number for this port.
-->
speed
Speed for this port.
-->
talking
If false, allocate a port for listening,
otherwise allocate a port for talking.
Once all of the clients have been added to the isochronous channel specified by channel ID, a start instruction can be issued at step 116. This instruction, an example of which is given below, calls all of the given isochronous channel's clients (i.e., the driver software associated with the various devices) to start the given isochronous channel. Each listening client is first instructed to listen to the channel. Once all of the listeners are ready, the sender client is instructed to start the transmission of data.
OSStatus
StartIsochronousChannel (
IsochChannelID
isochChannelID);
--> isochChannelID
Reference to the isochronous channel to
start.
As shown in
OSStatus
StartLocalIsochronousPort (
IsochPortActionParamsPtr
pIsochPortActionParams);
<-->
pIsochPortActionParams
Pointer to parameter block.
-->
controlFlags
Flags used to control the request.
<--
status
Current status of request.
-->
completionProc
Procedure to call upon comple-
tion of request.
-->
completionProcData
Data to be used by
completionProc.
-->
isochPortID
Reference to local port to start.
-->
pIsochChannelBuffer
Isochronous channel buffer chain
to talk/listen into/from.
-->
actionSync
Sync event to start on.
This instruction causes the local port specified by isoch-PortID to start listening (for the example of
Similarly, at step 122 the VCR driver programs the VCR 36 to start listening to the isochronous channel specified by channel ID. Once this is completed, the service routine issues instructions telling the camera driver to program camera 32 to start sending data over the isochronous channel. At step 126, the camera driver does so.
At this point, CPU 10 may continue with other instructions as indicated by step 130. For example, CPU 10 may respond to menu level instructions initiated by a user or execute commands for a selected foreground application. When video camera 32 transmits data on the isochronous channel specified by a channel ID, the CPU receiving the data generates an interrupt. The interrupt is recognized at step 128 and procedure 100 moves to step 132 where the interrupt causes the CPU 10 to execute instructions which transfer the incoming isochronous data into an appropriate buffer within the linked list. The CPU 10 then returns from the interrupt to complete or continue with any tasks. For the second embodiment described above, a DMA transfer is initiated to transfer the data without interrupting the CPU 10. Subsequently, data is transferred from the buffers which comprise the linked list to a frame buffer associated with monitor 18 for eventual display on display screen 48 within window 50. This process continues until an isochronous channel stop instruction is issued.
Stopping the transmission of isochronous data is similar to the starting process. This time, however, a stop command is issued which calls all of the given channel's clients as follows. First, the stop command calls the sending client to stop sending data on the channel. Once the sender stops, the stop command calls each of the listening clients to stop listening.
Those skilled in the art will recognize that the simple linked list configuration shown in
To account for these types of errors, a more complex linked list of buffers is used. This more complex scheme is shown in FIG. 4. The linked list of buffers shown in
Where the video data received does not have a top-of-frame indication, the linked list will point to the next buffer in the chain. In this way, the situation described above where the data is displayed with the top-of-frame at the bottom of the window is avoided. Those skilled in the art will appreciate that other branching conditions, such as branch on fill or branch on synch, can also be implemented.
An exemplary structure of these isochronous channel buffers is shown below:
typedef struct IsohChannelBufferStruct
IsochChannelBuffer
structIsochChannelBufferStruct
*IsochChannelBufferPtr;
{
IsochChannelBufferPtr
pBranchChannelBuffer;
IsochChannelBufferPtr
pBranch2ChannelBuffer;
Ptr
buffer;
UInt32
length;
UInt32
offset;
UInt32
status;
UInt32
branch1Conditionals;
UInt32
branch1Data;
UInt32
branch1State;
UInt32
branch2Conditionals;
UInt32
branch2Data;
UInt32
branch2State;
IsochChannelHandlerProcPtr
isochChannelHandler;
UInt32
isochChannelHandlerData;
);
pBranch1ChannelBuffer
Branch1 pointer to next channel
buffer. When a branch condition is
met, its corresponding branch pointer
is used to select the next buffer. If
both branch conditions are met
simultaneously, branch1 will take
precedence.
pBranch2ChannelBuffer
Branch2 pointer to next channel
buffer.
buffer
Pointer to buffer memory.
length
Length of above buffer.
offset
Current offset into above buffer.
status
Status of this buffer.
branch1Conditionals
Conditions to meet to take branch1.
branch1Data
Data to use to further specify
branch1 conditions.
branch2Conditionals
Conditions to meet to take branch2.
branch2Data
Data to use to take branch2
conditions.
branch2State
Current state of branch2 condition.
isochChannelHandler
Handler to call when a branch is
taken.
isochChannelHandlerData
Data for above handler to use for its
own purposes.
The channel handler field within each of the buffers of the linked list provides a means of accommodating data conversion. For example, video camera 32 may transmit video data in YUV format However, monitor 18 may require the data in RGB format. Thus, a conversion would be required to change the YUV data to RGB data before display. The channel handler can be a set of software instructions to be called whenever a particular channel branch is taken so that after a buffer is filled, the data stored in the buffer can be converted from YUV data to RGB data for display. Thus, the channel handler would specify an address which corresponds to instructions for performing a conversion routine.
Another example of when such a channel handler may be required is when compressed data is being transmitted over the serial bus. Before display, the data would need to be decompressed. The channel handler routine could be used to decompress the data in the manner described for the YUV to RGB translation described above. Other examples of the use of such channel handlers will be apparent to those skilled in the art.
Thus far, the present invention has been described with the assumption that the CPU 10 will manipulate data transferred across the isochronous channel (i.e., the CPU transfers the data to the linked list of buffers within system memory for later transfer to a frame buffer). This need not, however, be the case. In other embodiments, the CPU 10 can establish the isochronous channel without becoming part of the channel. For example, in the situation where a user wishes to record video data produced by camera 32 on a video cassette, the isochronous channel can be established between only video camera 32 and VCR 36. In this example, one driver might be associated with the video camera 32 and a second driver might be associated with the VCR 36. The camera driver would establish the channel ID and add the camera 32 as a sender client in the manner described above. The camera driver would then call the VCR driver and would pass a reference to the channel ID. The VCR driver would add the VCR 36 as a listener client as described above. Once all of the clients have been added to the channel, the “start” instruction can be issued as described above. No linked list of buffers is required because the VCR 36 can record the video data directly (it need not be in frames). Now, isochronous data (i.e., video data) will be transmitted from the camera 32 to the VCR 36 without interrupting the CPU 10 (which is not a client of the isochronous channel). Those skilled in the art will appreciate that any number of clients can be added to the isochronous channel in this fashion to accommodate the required data transfer.
Although the methods of the present invention have been described with reference to the use of a linked list of buffers at the receiving node, those skilled in the art will appreciate that a similar configuration of buffers could be used at the sending node. In such an embodiment, isochronous data would be stored in a linked list of buffers similar to that described above and transmitted over the isochronous channel as network conditions permit.
Thus a system and method for managing isochronous data channels within a computer system has been described. In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be appreciated by those skilled in the art that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are accordingly, to be regarded in an illustrative rather than a restrictive sense.
Patent | Priority | Assignee | Title |
11513799, | Nov 04 2019 | Apple Inc.; Apple Inc | Chained buffers in neural network processor |
7876787, | Nov 28 2003 | Thomson Licensing | Method for monitoring the state of a device in a network and device for carrying out said monitoring |
Patent | Priority | Assignee | Title |
5317692, | Jan 23 1991 | International Business Machines Corporation | Method and apparatus for buffer chaining in a communications controller |
5406559, | Nov 02 1992 | RPX Corporation | Isochronous link protocol |
5440556, | Nov 02 1992 | RPX Corporation | Low power isochronous networking mode |
5452420, | Jul 24 1989 | Allen-Bradley Company, Inc. | Intelligent network interface circuit for establishing communication link between protocol machine and host processor employing counter proposal set parameter negotiation scheme |
5566169, | Nov 02 1992 | RPX Corporation | Data communication network with transfer port, cascade port and/or frame synchronizing signal |
5594732, | Mar 03 1995 | Cisco Systems, Inc | Bridging and signalling subsystems and methods for private and hybrid communications systems including multimedia systems |
5594734, | Nov 02 1992 | RPX Corporation | Asynchronous processor access to a switch table in a network with isochronous capability |
5617418, | Nov 02 1992 | Negotiated Data Solutions LLC | Network link detection and generation |
5668811, | Nov 02 1992 | National Semiconductor Corporation | Method of maintaining frame synchronization in a communication network |
5754789, | Aug 04 1992 | Sun Microsystems, Inc. | Apparatus and method for controlling point-to-point interconnect communications between nodes |
5815678, | Jul 14 1995 | PMC-SIERRA, INC | Method and apparatus for implementing an application programming interface for a communications bus |
6243783, | Feb 02 1996 | Sony Corporation; Sony Electronics, INC; Apple Computer, Inc | Application programming interface for managing and automating data transfer operations between applications over a bus structure |
RE38641, | Apr 01 1996 | Apple Computer, Inc. | Isochronous channel having a linked list of buffers |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
May 12 2004 | Apple Computer, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Mar 21 2011 | REM: Maintenance Fee Reminder Mailed. |
Apr 20 2011 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Apr 20 2011 | M1556: 11.5 yr surcharge- late pmt w/in 6 mo, Large Entity. |
Date | Maintenance Schedule |
Aug 07 2010 | 4 years fee payment window open |
Feb 07 2011 | 6 months grace period start (w surcharge) |
Aug 07 2011 | patent expiry (for year 4) |
Aug 07 2013 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 07 2014 | 8 years fee payment window open |
Feb 07 2015 | 6 months grace period start (w surcharge) |
Aug 07 2015 | patent expiry (for year 8) |
Aug 07 2017 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 07 2018 | 12 years fee payment window open |
Feb 07 2019 | 6 months grace period start (w surcharge) |
Aug 07 2019 | patent expiry (for year 12) |
Aug 07 2021 | 2 years to revive unintentionally abandoned end. (for year 12) |