Patents by Inventor Daniel A. Brokenshire

Daniel A. Brokenshire has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20070240142
    Abstract: A “kill” intrinsic that may be used in programs for designating specific data objects as having been “killed” by a preceding action is provided. The concept of a data object being “killed” is that the compiler is informed that no operations (e.g., loads and stores) on that data object, or its aliases, can be moved across the point in the program flow where the data object is designated as having been “killed.” The “kill” intrinsic limits the reordering capability of an optimization scheduler of a compiler with regard to operations performed on “killed” data objects. The “kill” intrinsic may be used with DMA operations. Data objects being DMA'ed from a local store of a processor may be “killed” through use of the “kill” intrinsic prior to submitting the DMA request. Data objects being DMA'ed to the local store of the processor may be “killed” after verifying the transfer completes.
    Type: Application
    Filed: April 5, 2006
    Publication date: October 11, 2007
    Inventors: Daniel Brokenshire, John O'Brien
  • Publication number: 20070188487
    Abstract: The present invention renders a triangular mesh for employment in graphical displays. The triangular mesh comprises triangle-shaped graphics primitives. The triangle-shaped graphics primitives represent a subdivided triangular shape. Each triangle-shaped graphics primitive shares defined vertices with adjoining triangle-shaped graphics primitives. These shared vertices are transmitted and employed for the rendering of the triangle-shaped graphics primitives.
    Type: Application
    Filed: October 10, 2006
    Publication date: August 16, 2007
    Inventors: Daniel Brokenshire, Charles Johns, Barry Minor, Mark Nutter
  • Publication number: 20070174411
    Abstract: An apparatus and method for efficient communication of producer/consumer buffer status are provided. With the apparatus and method, devices in a data processing system notify each other of updates to head and tail pointers of a shared buffer region when the devices perform operations on the shared buffer region using signal notification channels of the devices. Thus, when a producer device that produces data to the shared buffer region writes data to the shared buffer region, an update to the head pointer is written to a signal notification channel of a consumer device. When a consumer device reads data from the shared buffer region, the consumer device writes a tail pointer update to a signal notification channel of the producer device. In addition, channels may operate in a blocking mode so that the corresponding device is kept in a low power state until an update is received over the channel.
    Type: Application
    Filed: January 26, 2006
    Publication date: July 26, 2007
    Inventors: Daniel Brokenshire, Charles Johns, Mark Nutter, Barry Minor
  • Publication number: 20070104204
    Abstract: An apparatus and method are provided for accessing, by an application running on a first processor, operating system services from an operating system running on a second processor by performing an assisted call. A data plane processor first constructs a parameter area based on the input and output parameters for the function that requires control processor assistance. The current values for the input parameters are copied into the parameter area. An assisted call message is generated based on a combination of a pointer to the parameter area and a specific library function opcode for the library function that is being called. The assisted call message is placed into the processor's stack immediately following a stop-and-signal instruction. The control plane processor is signaled to perform the library function corresponding to the opcode on behalf of the data plane processor by executing a stop and signal instruction.
    Type: Application
    Filed: November 8, 2005
    Publication date: May 10, 2007
    Inventors: Daniel Brokenshire, Mark Nutter
  • Publication number: 20060095901
    Abstract: A system and method for partitioning processor resources based on memory usage is provided. A compiler determines the extent to which a process is memory-bound and accordingly divides the process into a number of threads. When a first thread encounters a prolonged instruction, the compiler inserts a conditional branch to a second thread. When the second thread encounters a prolonged instruction, a conditional branch to a third thread is executed. This continues until the last thread conditionally branches back to the first thread. An indirect segmented register file is used so that the “return to” and “branch to” logical registers within each thread are the same (e.g., R1 and R2) for each thread. These logical registers are mapped to hardware registers that store actual addresses. The indirect mapping is altered to bypass completed threads. When the last thread completes it may signal an external process.
    Type: Application
    Filed: February 3, 2005
    Publication date: May 4, 2006
    Inventors: Daniel Brokenshire, Barry Minor, Mark Nutter
  • Publication number: 20060080661
    Abstract: A System and method for hiding memory latency in a multi-thread environment is presented. Branch Indirect and Set Link (BISL) and/or Branch Indirect and Set Link if External Data (BISLED) instructions are placed in thread code during compilation at instances that correspond to a prolonged instruction. A prolonged instruction is an instruction that instigates latency in a computer system, such as a DMA instruction. When a first thread encounters a BISL or a BISLED instruction, the first thread passes control to a second thread while the first thread's prolonged instruction executes. In turn, the computer system masks the latency of the first thread's prolonged instruction. The system can be optimized based on the memory latency by creating more threads and further dividing a register pool amongst the threads to further hide memory latency in operations that are highly memory bound.
    Type: Application
    Filed: October 7, 2004
    Publication date: April 13, 2006
    Applicant: International Business Machines Corporation
    Inventors: Daniel Brokenshire, Harm Hofstee, Barry Minor, Mark Nutter
  • Publication number: 20060047864
    Abstract: A system and method for a DMA controller with multi-dimensional line-walking functionality is presented. A processor includes an intelligent DMA controller, which loads a line description that corresponds to a shape or line. The intelligent DMA controller moves through a memory map and retrieves data based upon the line description that includes a major step and a minor step. In turn, the intelligent DMA controller retrieves data from the shared memory without assistance from its corresponding processor. In one embodiment, the intelligent DMA controller may analyze a line using the rate of change along its minor axes in conjunction with locations where the line intersects subspaces and store array spans of contiguous memory along the line's major axis.
    Type: Application
    Filed: August 26, 2004
    Publication date: March 2, 2006
    Applicant: International Business Machines Corporation
    Inventors: Daniel Brokenshire, Gordon Fossum, Barry Minor
  • Publication number: 20060045263
    Abstract: A method, an apparatus, and a computer program are provided for efficiently determining an inverse multiplicative modulo. In many public-key cryptographic algorithms, an inverse modulo is usually calculated in key generation. However, because many Reduced Instruction Set Computers (RISCs) do not have the hardware support for division, good results are often not yielded. Therefore, to efficiently calculate a inverse modulo, an modified algorithm that utilizes a minimum of 3 division and 2 multiplications in conjunction with shifts and addition/subtractions is employed. The modified algorithm then is able to efficiently utilize the properties of the RISC processors to yield good results, especially when developing keys for public-key cryptographic algorithms.
    Type: Application
    Filed: August 26, 2004
    Publication date: March 2, 2006
    Applicant: International Business Machines Corporation
    Inventors: Daniel Brokenshire, Mohammad Peyravian
  • Publication number: 20050166058
    Abstract: A system for secure communication. A random value generator is configured to generate a random value. A message validation code generator is coupled to the random value generator and configured to generate a message validation code based on a predetermined key, a message, and the random value. A one-time pad generator is coupled to the random number generator and configured to generate a one-time pad based on the random value and the predetermined key. And a masked message generator is coupled to the one-time pad generator and configured to generate a masked message based on the one-time pad and the message. In a particular aspect, a protected message envelope generator is coupled to the random value generator, the message validation code generator, and the masked message generator, and is configured to generate a protected message envelope based on the random value, the message validation code, and the masked message.
    Type: Application
    Filed: January 22, 2004
    Publication date: July 28, 2005
    Applicant: International Business Machines Corporation
    Inventors: Daniel Brokenshire, Harm Hofstee, Mohammad Peyravian
  • Publication number: 20050132190
    Abstract: The present invention provides for authenticating a message. A security function is performed upon the message. The message is sent to a target. The output of the security function is sent to the target. At least one publicly known constant is sent to the target. The received message is authenticated as a function of at least a shared key, the received publicly known constants, the security function, the received message, and the output of the security function. If the output of the security function received by the target is the same as the output generated as a function of at least the received message, the received publicly known constants, the security function, and the shared key, neither the message nor the constants have been altered.
    Type: Application
    Filed: December 10, 2003
    Publication date: June 16, 2005
    Applicant: International Business Machines Corporation
    Inventors: Daniel Brokenshire, Harm Hofstee, Mohammad Peyravian
  • Publication number: 20050081202
    Abstract: A task queue manager manages the task queues corresponding to virtual devices. When a virtual device function is requested, the task queue manager determines whether an SPU is currently assigned to the virtual device task. If an SPU is already assigned, the request is queued in a task queue being read by the SPU. If an SPU has not been assigned, the task queue manager assigns one of the SPUs to the task queue. The queue manager assigns the task based upon which SPU is least busy as well as whether one of the SPUs recently performed the virtual device function. If an SPU recently performed the virtual device function, it is more likely that the code used to perform the function is still in the SPU's local memory and will not have to be retrieved from shared common memory using DMA operations.
    Type: Application
    Filed: September 25, 2003
    Publication date: April 14, 2005
    Applicant: International Business Machines Corporation
    Inventors: Daniel Brokenshire, Michael Day, Barry Minor, Mark Nutter, VanDung To
  • Publication number: 20050081181
    Abstract: A program is into at least two object files: one object file for each of the supported processor environments. During compilation, code characteristics, such as data locality, computational intensity, and data parallelism, are analyzed and recorded in the object file. During run time, the code characteristics are combined with runtime considerations, such as the current load on the processors and the size of the data being processed, to arrive at an overall value. The overall value is then used to determine which of the processors will be assigned the task. The values are assigned based on the characteristics of the various processors. For example, if one processor is better at handling intensive computations against large streams of data, programs that are highly computationally intensive and process large quantities of data are weighted in favor of that processor. The corresponding object is then loaded and executed on the assigned processor.
    Type: Application
    Filed: September 25, 2003
    Publication date: April 14, 2005
    Applicant: International Business Machines Corporation
    Inventors: Daniel Brokenshire, Barry Minor, Mark Nutter
  • Publication number: 20050071828
    Abstract: A system and method for compiling source code for multi-processor environments is presented. Source code is compiled which creates an object file whereby the object file includes multiple object code subtasks. Source code subtasks are compiled into object code subtasks using one of three approaches which are 1) a lowbrow approach, 2) a brute force approach, and 3) a program directive approach. Each object code subtask is formatted to run on a particular processor type with a particular architecture, such as a microprocessor-based architecture or a digital signal processor-based architecture. During runtime, each object code is loaded onto its corresponding processor type for execution.
    Type: Application
    Filed: September 25, 2003
    Publication date: March 31, 2005
    Applicant: International Business Machines Corporation
    Inventors: Daniel Brokenshire, Barry Minor, Mark Nutter, VanDung To
  • Publication number: 20050071526
    Abstract: A system and method is provided to allow virtual devices that use a plurality of processors in a multiprocessor systems, such as the BE environment. Using this method, a synergistic processing unit (SPU) can either be dedicated to performing a particular function (i.e., audio, video, etc.) or a single SPU can be programmed to perform several functions on behalf of the other processors in the system. The application, preferably running in one of the primary (PU) processors, issues IOCTL commands through device drivers that correspond to SPUs. The kernel managing the primary processors responds by sending an appropriate message to the SPU that is performing the dedicated function. Using this method, an SPU can be virtualized for swapping multiple tasks or dedicated to performing a particular task.
    Type: Application
    Filed: September 25, 2003
    Publication date: March 31, 2005
    Applicant: International Business Machines Corporation
    Inventors: Daniel Brokenshire, Michael Day, Barry Minor, Mark Nutter
  • Publication number: 20050008162
    Abstract: A method and system for encrypting and verifying the integrity of a message using a three-phase encryption process is provided. A source having a secret master key that is shared with a target receives the message and generates a random number. The source then generates: a first set of intermediate values from the message and the random number; a second set of intermediate values from the first set of values; and a cipher text from the second set of values. At the three phases, the values are generated using the encryption function of a block cipher encryption/decryption algorithm. The random number and the cipher text are transmitted to the target, which decrypts the cipher text by reversing the encryption process. The target verifies the integrity of the message by comparing the received random number with the random number extracted from the decrypted cipher text.
    Type: Application
    Filed: June 19, 2003
    Publication date: January 13, 2005
    Applicant: International Business Machines Corporation
    Inventors: Daniel Brokenshire, David Craft, Harm Hofstee, Mohammad Peyravian
  • Patent number: 5428716
    Abstract: A method, and apparatus for practicing the method, processes pixels to display a cross-sectioned image of a solid object. The method includes the steps of, for each pixel that projects onto the solid object, (a) determining, as a function of a depth of a clipping plane at a pixel, a parity of the pixel; and (b) for each pixel determined to have a predetermined type of parity, displaying the pixel with a visual characteristic selected to indicate that the pixel is a pixel that projects onto material that is within an interior of the solid object.
    Type: Grant
    Filed: December 26, 1991
    Date of Patent: June 27, 1995
    Assignee: International Business Machines Corporation
    Inventors: Daniel A. Brokenshire, Abraham E. Megahed, Jarolsaw R. Rossignac, Bengt-Olaf Schneider
  • Patent number: 5020878
    Abstract: A stereoscopic graphics display system (10) includes a binocular viewing model generator (96) that automatically adapts a binocular viewing model to a selected stereoscopic image. An extrema accumulation unit (90) identifies extrema data corresponding to a region that bounds the selected image. The extrema data are delivered to the binocular viewing model generator, which designates a zero disparity location within the region and a disparity angle that is compatible with the dimensions of the selected image. The binocular viewing model generated in accordance with the selected image allow it to be rendered with improved three-dimensional qualities.
    Type: Grant
    Filed: March 20, 1989
    Date of Patent: June 4, 1991
    Assignee: Tektronix, Inc.
    Inventors: Daniel A. Brokenshire, Ronald W. Bryant, Javad Farjami, Gary L. Brown
  • Patent number: 4896210
    Abstract: A stereoscopic graphics display terminal (10) having an image data processor (22) generates stereoscopic image data from three-dimensional image data. In a preferred embodiment, the graphics display terminal receives from a main or host computer (12) three-dimensional image data corresponding to a three-dimensional representation of an object. The three-dimensional image data are typically generated by an application program that resides in the host computer. The image data processor includes an image orienting system (74) that receives the three-dimensional image data and adaptes such data to represent a preselected orientation of the object and thereby provide an observer with a preselected view of the object. The adaptation of the three-dimensional image data by the image orienting system entails image manipulations that include rotating, translating, and scaling the size of the image.
    Type: Grant
    Filed: November 16, 1987
    Date of Patent: January 23, 1990
    Inventors: Daniel A. Brokenshire, Peter W. Hildebrandt
  • Patent number: 4875034
    Abstract: A stereoscopic graphics display system (10) has a stereoscopic window controller (18) that generates multiple windows (72 and 74) within which multiple images (76 and 78) are formed. The stereoscopic window controller directs the graphics display system to render around each window a border (80 and 82) representing an outline of the window. Each of the borders is rendered with zero binocular disparity to assist an observer to perceive the three-dimensional qualities of steroscopic images. Depth cue contradictions between stacked windows are reduced by rendering with zero binocular disparity the images in occluded windows.
    Type: Grant
    Filed: February 8, 1988
    Date of Patent: October 17, 1989
    Inventor: Daniel A. Brokenshire