Patents by Inventor Darryl J. Gove

Darryl J. Gove 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).

  • Patent number: 10671548
    Abstract: In some embodiments, a memory initialization detection process includes detecting a read instruction of a program, where the read instruction addresses a particular memory location, and where data corresponding to the particular memory location is cached in a particular cache line of a memory cache. The memory initialization detection process further includes determining, based on metadata stored in the memory cache, that a section of the particular cache line does not store valid data of the program. The memory initialization detection process further includes obtaining validity data from the section of the particular cache line. The memory initialization detection process further includes determining, based on the validity data, whether the read instruction is authorized to proceed.
    Type: Grant
    Filed: May 7, 2018
    Date of Patent: June 2, 2020
    Assignee: Oracle International Corporation
    Inventor: Darryl J. Gove
  • Publication number: 20180253389
    Abstract: In some embodiments, a memory initialization detection process includes detecting a read instruction of a program, where the read instruction addresses a particular memory location, and where data corresponding to the particular memory location is cached in a particular cache line of a memory cache. The memory initialization detection process further includes determining, based on metadata stored in the memory cache, that a section of the particular cache line does not store valid data of the program. The memory initialization detection process further includes obtaining validity data from the section of the particular cache line. The memory initialization detection process further includes determining, based on the validity data, whether the read instruction is authorized to proceed.
    Type: Application
    Filed: May 7, 2018
    Publication date: September 6, 2018
    Inventor: Darryl J. Gove
  • Patent number: 9965402
    Abstract: In some embodiments, a memory initialization detection process includes detecting a read instruction of a program, where the read instruction addresses a particular memory location, and where data corresponding to the particular memory location is cached in a particular cache line of a memory cache. The memory initialization detection process further includes determining, based on metadata stored in the memory cache, that a section of the particular cache line does not store valid data of the program. The memory initialization detection process further includes obtaining validity data from the section of the particular cache line. The memory initialization detection process further includes determining, based on the validity data, whether the read instruction is authorized to proceed.
    Type: Grant
    Filed: September 28, 2015
    Date of Patent: May 8, 2018
    Assignee: Oracle International Business Machines Corporation
    Inventor: Darryl J. Gove
  • Patent number: 9817762
    Abstract: The disclosed embodiments relate to a computing system that facilitates performing prefetching for scatter/gather operations. During operation, the system receives a scatter/gather prefetch instruction at a processor core, wherein the scatter/gather prefetch instruction specifies a virtual base address, and a plurality of offsets. Next, the system performs a lookup in a translation-lookaside buffer (TLB) using the virtual base address to obtain a physical base address that identifies a physical page for the base address. The system then sends the physical base address and the plurality of offsets to a cache. This enables the cache to perform prefetching operations for the scatter/gather instruction by adding the physical base address to the plurality of offsets to produce a plurality of physical addresses, and then prefetching cache lines for the plurality of physical addresses into the cache.
    Type: Grant
    Filed: May 20, 2014
    Date of Patent: November 14, 2017
    Assignee: ORACLE INTERNATIONAL CORPORATION
    Inventors: Sanjiv Kapil, Darryl J. Gove
  • Publication number: 20170091122
    Abstract: In some embodiments, a memory initialization detection process includes detecting a read instruction of a program, where the read instruction addresses a particular memory location, and where data corresponding to the particular memory location is cached in a particular cache line of a memory cache. The memory initialization detection process further includes determining, based on metadata stored in the memory cache, that a section of the particular cache line does not store valid data of the program. The memory initialization detection process further includes obtaining validity data from the section of the particular cache line. The memory initialization detection process further includes determining, based on the validity data, whether the read instruction is authorized to proceed.
    Type: Application
    Filed: September 28, 2015
    Publication date: March 30, 2017
    Inventor: Darryl J. Gove
  • Patent number: 9396113
    Abstract: A processor having a streaming unit is disclosed. In one embodiment, a processor includes a streaming unit configured to load one or more input data streams from a memory coupled to the processor. The streaming unit includes an internal network having a plurality of queues configured to store streams of data. The streaming unit further includes a plurality of operations circuits configured to perform operations on the streams of data. The streaming unit is software programmable to operatively couple two or more of the plurality of operations circuits together via one or more of the plurality of queues. The operations circuits may perform operations on multiple streams of data, resulting in corresponding output streams of data.
    Type: Grant
    Filed: August 6, 2013
    Date of Patent: July 19, 2016
    Assignee: Oracle International Corporation
    Inventors: Darryl J Gove, David L Weaver
  • Patent number: 9280342
    Abstract: A processor, method, and medium for using vector operations to compress selected elements of a vector. An input vector is compared to a criteria vector, and then a subset of the plurality of elements of the input vector are selected based on the comparison. A permutation vector is generated based on the locations of the selected elements and then the permutation vector is used to permute the selected elements of the input vector to an output vector. The selected elements of the input vector are stored in contiguous locations in the leftmost elements of the output vector. Then, the output vector is stored to memory and a pointer to the memory location is incremented by the number of selected elements.
    Type: Grant
    Filed: July 20, 2011
    Date of Patent: March 8, 2016
    Assignee: Oracle International Corporation
    Inventor: Darryl J. Gove
  • Publication number: 20150339233
    Abstract: The disclosed embodiments relate to a computing system that facilitates performing prefetching for scatter/gather operations. During operation, the system receives a scatter/gather prefetch instruction at a processor core, wherein the scatter/gather prefetch instruction specifies a virtual base address, and a plurality of offsets. Next, the system performs a lookup in a translation-lookaside buffer (TLB) using the virtual base address to obtain a physical base address that identifies a physical page for the base address. The system then sends the physical base address and the plurality of offsets to a cache. This enables the cache to perform prefetching operations for the scatter/gather instruction by adding the physical base address to the plurality of offsets to produce a plurality of physical addresses, and then prefetching cache lines for the plurality of physical addresses into the cache.
    Type: Application
    Filed: May 20, 2014
    Publication date: November 26, 2015
    Inventors: Sanjiv Kapil, Darryl J. Gove
  • Patent number: 9043559
    Abstract: Techniques for handling version information using a copy engine. In one embodiment, an apparatus comprises a copy engine configured to perform one or more operations associated with a block memory operation in response to a command. Examples of block memory operations may include copy, clear, move, and/or compress operations. In one embodiment, the copy engine is configured to handle version information associated with the block memory operation based on the command. The one or more operations may include operating on data in a cache and/or modifying entries in a memory. In one embodiment, the copy engine is configured to compare version information in the command with stored version information. The copy engine may overwrite or preserve version information based on the command. The copy engine may be a coprocessing element. The copy engine may be configured to maintain coherency with other copy engines and/or processing elements.
    Type: Grant
    Filed: October 23, 2012
    Date of Patent: May 26, 2015
    Assignee: Oracle International Corporation
    Inventors: Zoran Radovic, Darryl J. Gove
  • Patent number: 9043510
    Abstract: A processor having a streaming unit is disclosed. In one embodiment, a processor includes one or more execution units configured to execute instructions of a processor instruction set. The processor further includes a streaming unit configured to execute a first instruction of the processor instruction set, wherein executing the first instruction comprises the streaming unit loading a first data stream from a memory of a computer system responsive to execution of a first instruction. The first data stream comprises a plurality of data elements. The first instruction includes a first argument indicating a starting address of the first stream, a second argument indicating a stride between the data elements, and a third argument indicative of an ending address of the stream. The streaming unit is configured to output a second data stream corresponding to the first data stream.
    Type: Grant
    Filed: August 6, 2013
    Date of Patent: May 26, 2015
    Assignee: Oracle International Corporation
    Inventors: Darryl J Gove, David L Weaver, Gerald Zuraski
  • Patent number: 9009447
    Abstract: A processor, method, and medium for using vector instructions to perform string comparisons. A single instruction compares the elements of two vectors and simultaneously checks for the null character. If an inequality or the null character is found, then the string comparison loop terminates, and a further check is performed to determine if the strings are equal. If all elements are equal and the null character is not found, then another iteration of the string comparison loop is executed. The vectors are loaded with the next portions of the strings, and then the next comparison is performed. The loop continues until either an inequality or the null character is found.
    Type: Grant
    Filed: July 18, 2011
    Date of Patent: April 14, 2015
    Assignee: Oracle International Corporation
    Inventor: Darryl J. Gove
  • Publication number: 20150046650
    Abstract: A processor having a streaming unit is disclosed. In one embodiment, a processor includes a streaming unit configured to load one or more input data streams from a memory coupled to the processor. The streaming unit includes an internal network having a plurality of queues configured to store streams of data. The streaming unit further includes a plurality of operations circuits configured to perform operations on the streams of data. The streaming unit is software programmable to operatively couple two or more of the plurality of operations circuits together via one or more of the plurality of queues. The operations circuits may perform operations on multiple streams of data, resulting in corresponding output streams of data.
    Type: Application
    Filed: August 6, 2013
    Publication date: February 12, 2015
    Applicant: Oracle International Corporation
    Inventors: Darryl J. Gove, David L. Weaver
  • Publication number: 20150046687
    Abstract: A processor having a streaming unit is disclosed. In one embodiment, a processor includes one or more execution units configured to execute instructions of a processor instruction set. The processor further includes a streaming unit configured to execute a first instruction of the processor instruction set, wherein executing the first instruction comprises the streaming unit loading a first data stream from a memory of a computer system responsive to execution of a first instruction. The first data stream comprises a plurality of data elements. The first instruction includes a first argument indicating a starting address of the first stream, a second argument indicating a stride between the data elements, and a third argument indicative of an ending address of the stream. The streaming unit is configured to output a second data stream corresponding to the first data stream.
    Type: Application
    Filed: August 6, 2013
    Publication date: February 12, 2015
    Applicant: Oracle International Corporation
    Inventors: Darryl J. Gove, David L. Weaver, Gerald Zuraski
  • Patent number: 8751736
    Abstract: Systems and methods for providing additional instructions for supporting efficient memory corruption detection in a processor. A physical memory may be a DRAM with a spare bank of memory reserved for a hardware failover mechanism. Version numbers associated with data structures allocated in the memory may be generated so that version numbers of adjacent data structures are different. A processor determines that a fetched instruction is a memory access instruction corresponding to a first data structure within the memory. For instructions that are not a version update instruction, the processor compares the first version number and second version number stored in a location in the memory indicated by the generated address and flags an error if there is a mismatch. For version update instructions, the processor performs a memory access operation on the second version number with no comparison check.
    Type: Grant
    Filed: August 2, 2011
    Date of Patent: June 10, 2014
    Assignee: Oracle International Corporation
    Inventors: Zoran Radovic, Darryl J. Gove, Graham Ricketson Murphy
  • Publication number: 20140115283
    Abstract: Techniques for handling version information using a copy engine. In one embodiment, an apparatus comprises a copy engine configured to perform one or more operations associated with a block memory operation in response to a command. Examples of block memory operations may include copy, clear, move, and/or compress operations. In one embodiment, the copy engine is configured to handle version information associated with the block memory operation based on the command. The one or more operations may include operating on data in a cache and/or modifying entries in a memory. In one embodiment, the copy engine is configured to compare version information in the command with stored version information. The copy engine may overwrite or preserve version information based on the command. The copy engine may be a coprocessing element. The copy engine may be configured to maintain coherency with other copy engines and/or processing elements.
    Type: Application
    Filed: October 23, 2012
    Publication date: April 24, 2014
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Zoran Radovic, Darryl J. Gove
  • Patent number: 8572441
    Abstract: Systems and methods for maximizing a number of available states for a version number used for memory corruption detection. A physical memory may be a DRAM comprising a plurality of regions. Version numbers associated with data structures allocated in the physical memory may be generated so that version numbers of adjacent data structures in a virtual address space are different. A reserved set and an available set of version numbers are associated with each one of the plurality of regions. A version number in a reserved set of a given region may be in an available set of another region. The processor detects no memory corruption error in response to at least determining a version number stored in a memory location in a first region identified by a memory access operation is also in a reserved set associated with the first region.
    Type: Grant
    Filed: August 5, 2011
    Date of Patent: October 29, 2013
    Assignee: Oracle International Corporation
    Inventors: Darryl J. Gove, Zoran Radovic, Jonathan Adams
  • Publication number: 20130036276
    Abstract: Systems and methods for providing additional instructions for supporting efficient memory corruption detection in a processor. A physical memory may be a DRAM with a spare bank of memory reserved for a hardware failover mechanism. Version numbers associated with data structures allocated in the memory may be generated so that version numbers of adjacent data structures are different. A processor determines that a fetched instruction is a memory access instruction corresponding to a first data structure within the memory. For instructions that are not a version update instruction, the processor compares the first version number and second version number stored in a location in the memory indicated by the generated address and flags an error if there is a mismatch. For version update instructions, the processor performs a memory access operation on the second version number with no comparison check.
    Type: Application
    Filed: August 2, 2011
    Publication date: February 7, 2013
    Inventors: Zoran Radovic, Darryl J. Gove, Graham Ricketson Murphy
  • Publication number: 20130036332
    Abstract: Systems and methods for maximizing a number of available states for a version number used for memory corruption detection. A physical memory may be a DRAM comprising a plurality of regions. Version numbers associated with data structures allocated in the physical memory may be generated so that version numbers of adjacent data structures in a virtual address space are different. A reserved set and an available set of version numbers are associated with each one of the plurality of regions. A version number in a reserved set of a given region may be in an available set of another region. The processor detects no memory corruption error in response to at least determining a version number stored in a memory location in a first region identified by a memory access operation is also in a reserved set associated with the first region.
    Type: Application
    Filed: August 5, 2011
    Publication date: February 7, 2013
    Inventors: Darryl J. Gove, Zoran Radovic, Jonathan Adams
  • Publication number: 20130024653
    Abstract: A processor, method, and medium for using vector instructions to perform string comparisons. A single instruction compares the elements of two vectors and simultaneously checks for the null character. If an inequality or the null character is found, then the string comparison loop terminates, and a further check is performed to determine if the strings are equal. If all elements are equal and the null character is not found, then another iteration of the string comparison loop is executed. The vectors are loaded with the next portions of the strings, and then the next comparison is performed. The loop continues until either an inequality or the null character is found.
    Type: Application
    Filed: July 18, 2011
    Publication date: January 24, 2013
    Inventor: Darryl J. Gove
  • Publication number: 20130024647
    Abstract: A processor, method, and medium for utilizing a shared cache to store vector registers. Each thread of a multithreaded processor utilizes a plurality of virtual vector registers to perform vector operations. Virtual vector registers are allocated for each thread, and each virtual vector register is mapped into the shared cache on the processor. The cache is shared between multiple threads such that if one thread is not using vector registers, there is more space in the cache for other threads to use vector registers.
    Type: Application
    Filed: July 20, 2011
    Publication date: January 24, 2013
    Inventor: Darryl J. Gove