EP0789306A2

Computer system data I/O by reference among multiple cpus

Abstract

An apparatus and method for getting descriptors to data and passing the descriptors among data sources and sinks, thereby avoiding copying the data among the data sources and sinks. The data source/sink which consumes the data actual initiates the copying of the actual data itself, using global pointers to the data in the descriptors.

EP0789306A2, drawing sheet 1
Sheet 1 of 9

Term

Term ended

Projected expiry passed 19 December 2016, 9.8 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

8 claims: 5 independent, 3 dependent

  1. 1
    In a data processing system having a distributed memory architecture that includes a plurality of data source/sinks in the form of CPUs having associated memories, coupled as nodes to a network and with data locations accessible by memory address over the network, a method for transforming a data stream utilizing multiple data source/sinks without copying the data stream to each of the multiple data source/sinks during transformation processing, said method comprising the steps of:generating a first pointer, at a first data source/sink, including a first global network address specifying a first storage location where a first data stream is stored;transferring only said first pointer from said first data source/sink to a second data source/sink;generating, at said second data source/sink, a second pointer including a second global network address specifying a second storage location where a second data steam is stored, and chaining said first and second pointers to form a first chained pointer;transferring only said first chained pointer to a third data source/sink, with said third node storing a third data fragment of said message and for transferring said message to a destination;processing, at said third data source/sink, said first pointer to transform said first pointer into a plurality of secondary pointers to split said first data stream into parts and chaining protocol headers onto each part of said first data steam.
  2. 3
    In a data processing system having a distributed memory architecture that includes a plurality of data source/sinks in the form of CPUs having associated memories, a method comprising the steps of:getting a message descriptor to a data buffer on a first of said plurality of data source/sinks;putting said message descriptor onto a second of said plurality of data source/sinks without transferring the data in said data buffer;putting said message descriptor from said second data source/sink onto a third of said plurality of data source/sinks;and retrieving a portion of the data in said data buffer from said first data source/sink to said third data source/sink.
  3. 4
    In a data processing system having a distributed memory architecture that includes a plurality of data source/sinks in the form of CPUs having associated memories, coupled as method comprising the steps of:getting a message descriptor to a data buffer on a first of said plurality of data source/sinks;putting said message descriptor onto a second of said plurality of data source/sinks without transferring the data in said data buffer;dividing said message descriptor into a plurality of message descriptors;putting a one of said plurality of message descriptors from said second data source/sink onto a third of said plurality of data source/sinks;and retrieving the portion of the data in said data buffer described by said one message descriptors from said first data source/sink to said third data source/sink.
  4. 7
    A medium for data storage wherein is located a computer program for performing data I/O among a plurality of data source/sinks in the form of CPUs by getting a message descriptor to a data buffer on a first of said plurality of data source/sinks;putting said message descriptor onto a second of said plurality of data source/sinks without transferring the data in said data buffer;putting said message descriptor from said second data source/sink onto a third of said plurality of data source/sinks;and retrieving a portion of the data in said data buffer from said first data source/sink to said third data source/sink.
  5. 8
    A medium for data storage wherein is located a computer program for performing data I/O among a plurality of data source/sinks in the form of CPUs by getting a message descriptor to a data buffer on a first of said plurality of data source/sinks;putting said message descriptor onto a second of said plurality of data source/sinks without transferring the data in said data buffer;dividing said message descriptor into a plurality of message descriptors;putting a one of said plurality of message descriptors from said second data source/sink onto a third of said plurality of data source/sinks;and retrieving the portion of the data in said data buffer described by said one message descriptors from said first data source/sink to said third data source/sink.