Patents by Inventor Daren Eugene Streett
Daren Eugene Streett 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: 12260220Abstract: Accelerating fetch target queue (FTQ) processing is disclosed herein. In some aspects, a processor comprises an FTQ and an FTQ acceleration cache (FAC), and is configured to generate a FAC entry corresponding to an FTQ entry of a plurality of FTQ entries of the FTQ, wherein the FTQ entry comprises a fetch address bundle comprising a plurality of sequential virtual addresses (VAs), and the FAC entry comprises metadata for the FTQ entry. The processor is further configured to receive, using the FTQ, a request to access the FTQ entry. The processor is also configured to, responsive to receiving the request to access the FTQ entry, locate, using the FAC, the FAC entry corresponding to the FTQ entry among a plurality of FAC entries of the FAC. The processor is additionally configured to perform accelerated processing of the request to access the FTQ entry using the metadata of the FAC entry.Type: GrantFiled: December 16, 2022Date of Patent: March 25, 2025Assignee: Microsoft Technology Licensing, LLCInventors: Saransh Jain, Rami Mohammad Al Sheikh, Daren Eugene Streett, Michael Scott McIlvaine, Somasundaram Arunachalam
-
Patent number: 12229568Abstract: Methods and circuitry for efficient management of local branch history registers are described. An example processor includes a pipeline comprising a plurality of stages and a bit-vector associated with each of in-flight branches associated with the pipeline. The processor includes a recovery counter for tracking a number of bits needing recovery before a local branch history register is valid for participation in branch prediction. The processor includes branch predictor circuitry configured to, in response to an update of a local branch history register by a branch, set a bit in a corresponding bit-vector indicative of the update of the local branch history register. The branch predictor circuitry is configured to, upon a flush, determine a value indicative of an extent of recovery required for each local branch history register affected by the flush, and set a corresponding recovery counter to the value indicative of the extent of recovery required.Type: GrantFiled: August 4, 2023Date of Patent: February 18, 2025Assignee: Microsoft Technology Licensing, LLCInventors: Rami Mohammad Al Sheikh, Ahmed Helmi Mahmoud Osman Abulila, Daren Eugene Streett, Michael Scott McIlvaine
-
Patent number: 12086600Abstract: Embodiments of the present disclosure include techniques for branch prediction. A branch predictor may be included in a front end of a processor. The branch predictor may store branch targets in a branch target buffer. The branch target buffer includes shared bits, which may be combined with branch target bits to specify branch target destination addresses. Shared bits may result in more efficient memory usage in the processor, for example.Type: GrantFiled: December 5, 2022Date of Patent: September 10, 2024Assignee: Microsoft Technology Licensing, LLCInventors: Somasundaram Arunachalam, Daren Eugene Streett, Richard William Doing
-
Publication number: 20240201999Abstract: Accelerating fetch target queue (FTQ) processing is disclosed herein. In some aspects, a processor comprises an FTQ and an FTQ acceleration cache (FAC), and is configured to generate a FAC entry corresponding to an FTQ entry of a plurality of FTQ entries of the FTQ, wherein the FTQ entry comprises a fetch address bundle comprising a plurality of sequential virtual addresses (VAs), and the FAC entry comprises metadata for the FTQ entry. The processor is further configured to receive, using the FTQ, a request to access the FTQ entry. The processor is also configured to, responsive to receiving the request to access the FTQ entry, locate, using the FAC, the FAC entry corresponding to the FTQ entry among a plurality of FAC entries of the FAC. The processor is additionally configured to perform accelerated processing of the request to access the FTQ entry using the metadata of the FAC entry.Type: ApplicationFiled: December 16, 2022Publication date: June 20, 2024Inventors: Saransh JAIN, Rami Mohammad AL SHEIKH, Daren Eugene STREETT, Michael Scott MCILVAINE, Somasundaram ARUNACHALAM
-
Publication number: 20240201998Abstract: Performing storage-free instruction cache hit prediction is disclosed herein. In some aspects, a processor comprises an instruction cache hit prediction circuit that is configured to detect that a first access by a branch predictor circuit to a branch target buffer (BTB) for a first instruction in an instruction stream results in a miss on the BTB. In response to detecting the miss, the instruction cache hit prediction circuit is further configured to generate a first instruction cache prefetch request for the first instruction. The instruction cache hit prediction circuit is also configured to transmit the first instruction cache prefetch request to a prefetcher circuit.Type: ApplicationFiled: December 16, 2022Publication date: June 20, 2024Inventors: Ahmed ABULILA, Rami Mohammad AL SHEIKH, Daren Eugene STREETT, Michael Scott MCILVAINE
-
Publication number: 20240192957Abstract: Embodiments of the present disclosure include techniques for branch prediction. A branch predictor may be included in a processor. The branch predictor may use heuristics to control lookups against multiple different memory caches in a branch target buffer. In one embodiment, a branch predictor monitors successful lookups and a lookup is performed against one cache before another cache based on a number of successful lookups. In another embodiment, lookups are performed against different caches based on a current available capacity of a fetch target queue.Type: ApplicationFiled: December 9, 2022Publication date: June 13, 2024Inventors: Somasundaram ARUNACHALAM, Daren Eugene STREETT, Richard William DOING
-
Publication number: 20240184587Abstract: Embodiments of the present disclosure include techniques for branch prediction. A branch predictor may be included in a front end of a processor. The branch predictor may store branch targets in a branch target buffer. The branch target buffer includes shared bits, which may be combined with branch target bits to specify branch target destination addresses. Shared bits may result in more efficient memory usage in the processor, for example.Type: ApplicationFiled: December 5, 2022Publication date: June 6, 2024Inventors: Somasundaram ARUNACHALAM, Daren Eugene STREETT, Richard William DOING
-
Patent number: 11995443Abstract: Reuse of branch information queue entries for multiple instances of predicted control instructions in captured loops in a processor, and related methods and computer-readable media. The processor establishes and updates a branch entry in a branch information queue (BIQ) circuit with branch information in response to a speculative prediction made for a predicted control instruction. The branch information is used for making and tracking flow path predictions for predicted control instructions as well as verifying such predictions against its resolution for possible misprediction recovery. The processor is configured to reuse the same branch entry in the BIQ circuit for each instance of the predicted control instruction. This conserves space in the BIQ circuit, which allows for a smaller sized BIQ circuit to be used thus conserving area and power consumption. The branch information for each instance of a predicted control instruction within a loop remains consistent.Type: GrantFiled: October 4, 2022Date of Patent: May 28, 2024Assignee: Microsoft Technology Licensing, LLCInventors: Daren Eugene Streett, Rami Mohammad Al Sheikh
-
Publication number: 20240168885Abstract: Providing location-based prefetching in processor-based devices is disclosed. In this regard, a processor-based device comprises a location-based prefetcher circuit associated with a first cache memory device having a faster access time and a smaller capacity than a second cache memory device. The location-based prefetcher circuit identifies an association between a first memory address of a first memory access request and a second memory address of a subsequent second memory access request, and determines a set and a way of the second cache memory device where data corresponding to the second memory address is stored. The location-based prefetcher circuit then stores, in a prefetcher array entry of a prefetcher array, the first memory address as a trigger memory address, and a set indicator and a way indicator of the set and the way, respectively, of the second cache memory device as a target identifier.Type: ApplicationFiled: November 23, 2022Publication date: May 23, 2024Inventors: Ahmed ABULILA, Rami Mohammad AL SHEIKH, Saransh JAIN, Daren Eugene STREETT, Michael Scott MCILVAINE
-
Publication number: 20240111540Abstract: Reuse of branch information queue entries for multiple instances of predicted control instructions in captured loops in a processor, and related methods and computer-readable media. The processor establishes and updates a branch entry in a branch information queue (BIQ) circuit with branch information in response to a speculative prediction made for a predicted control instruction. The branch information is used for making and tracking flow path predictions for predicted control instructions as well as verifying such predictions against its resolution for possible misprediction recovery. The processor is configured to reuse the same branch entry in the BIQ circuit for each instance of the predicted control instruction. This conserves space in the BIQ circuit, which allows for a smaller sized BIQ circuit to be used thus conserving area and power consumption. The branch information for each instance of a predicted control instruction within a loop remains consistent.Type: ApplicationFiled: October 4, 2022Publication date: April 4, 2024Inventors: Daren Eugene STREETT, Rami Mohammad AL SHEIKH
-
Patent number: 11928474Abstract: Selectively updating branch predictors for loops executed from loop buffers is disclosed herein. In some aspects, a branch predictor update circuit of a processor is configured to detect a loop comprising a plurality of loop instructions in an instruction stream, and to determine that the loop is stored within a loop buffer circuit of the processor. The branch predictor update circuit is further configured to determine a count of potential history register updates to the history register for the plurality of loop instructions, and to determine whether the count of potential history register updates exceeds a size of the history register. The branch predictor update circuit is also configured to, responsive to determining that the count of potential history register updates does not exceed the size of the history register, update a branch predictor of the branch predictor circuit based on the plurality of loop instructions.Type: GrantFiled: June 3, 2022Date of Patent: March 12, 2024Assignee: Microsoft Technology Licensing, LLCInventors: Rami Mohammad Al Sheikh, Saransh Jain, Michael Scott McIlvaine, Daren Eugene Streett
-
Patent number: 11915002Abstract: Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata is disclosed herein. In one aspect, a processor comprises a BTB circuit comprising a BTB comprising a plurality of extended BTB entries. The BTB circuit is configured to store trunk branch metadata for a first branch instruction in an extended BTB entry of the plurality of extended BTB entries, wherein the extended BTB entry corresponds to a first aligned memory block containing an address of the first branch instruction. The BTB circuit is also configured to store leaf branch metadata for a second branch instruction in the extended BTB entry in association with the trunk branch metadata, wherein an address of the second branch instruction is subsequent to a target address of the first branch instruction within a second aligned memory block.Type: GrantFiled: June 24, 2022Date of Patent: February 27, 2024Assignee: Microsoft Technology Licensing, LLCInventors: Saransh Jain, Rami Mohammad Al Sheikh, Daren Eugene Streett, Michael Scott McIlvaine
-
Publication number: 20230418615Abstract: Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata is disclosed herein. In one aspect, a processor comprises a BTB circuit comprising a BTB comprising a plurality of extended BTB entries. The BTB circuit is configured to store trunk branch metadata for a first branch instruction in an extended BTB entry of the plurality of extended BTB entries, wherein the extended BTB entry corresponds to a first aligned memory block containing an address of the first branch instruction. The BTB circuit is also configured to store leaf branch metadata for a second branch instruction in the extended BTB entry in association with the trunk branch metadata, wherein an address of the second branch instruction is subsequent to a target address of the first branch instruction within a second aligned memory block.Type: ApplicationFiled: June 24, 2022Publication date: December 28, 2023Inventors: Saransh JAIN, Rami Mohammad AL SHEIKH, Daren Eugene STREETT, Michael Scott MCILVAINE
-
Publication number: 20230393853Abstract: Selectively updating branch predictors for loops executed from loop buffers is disclosed herein. In some aspects, a branch predictor update circuit of a processor is configured to detect a loop comprising a plurality of loop instructions in an instruction stream, and to determine that the loop is stored within a loop buffer circuit of the processor. The branch predictor update circuit is further configured to determine a count of potential history register updates to the history register for the plurality of loop instructions, and to determine whether the count of potential history register updates exceeds a size of the history register. The branch predictor update circuit is also configured to, responsive to determining that the count of potential history register updates does not exceed the size of the history register, update a branch predictor of the branch predictor circuit based on the plurality of loop instructions.Type: ApplicationFiled: June 3, 2022Publication date: December 7, 2023Inventors: Rami Mohammad AL SHEIKH, Saransh JAIN, Michael Scott MCILVAINE, Daren Eugene STREETT
-
Publication number: 20230393854Abstract: Methods and circuitry for efficient management of local branch history registers are described. An example processor includes a pipeline comprising a plurality of stages and a bit-vector associated with each of in-flight branches associated with the pipeline. The processor includes a recovery counter for tracking a number of bits needing recovery before a local branch history register is valid for participation in branch prediction. The processor includes branch predictor circuitry configured to, in response to an update of a local branch history register by a branch, set a bit in a corresponding bit-vector indicative of the update of the local branch history register. The branch predictor circuitry is configured to, upon a flush, determine a value indicative of an extent of recovery required for each local branch history register affected by the flush, and set a corresponding recovery counter to the value indicative of the extent of recovery required.Type: ApplicationFiled: August 4, 2023Publication date: December 7, 2023Inventors: Rami Mohammad AL SHEIKH, Ahmed Helmi Mahmoud Osman ABULILA, Daren Eugene STREETT, Michael Scott MCILVAINE
-
Patent number: 11789740Abstract: Performing branch predictor training using probabilistic counter updates in a processor is disclosed herein. In some aspects, a branch predictor training circuit of a processor is configured to determine whether a first branch prediction generated for a first conditional branch instruction by a branch predictor circuit of the processor is correct. Based on determining whether the first branch prediction is correct, the branch predictor training circuit probabilistically updates a first counter, corresponding to the first branch prediction, of a plurality of counters of a first branch predictor table of a plurality of branch predictor tables.Type: GrantFiled: November 24, 2021Date of Patent: October 17, 2023Assignee: Microsoft Technology Licensing, LLCInventors: Rami Mohammad Al Sheikh, Michael Scott McIlvaine, Daren Eugene Streett
-
Patent number: 11768688Abstract: Methods and circuitry for efficient management of local branch history registers are described. An example processor includes a pipeline comprising a plurality of stages and a bit-vector associated with each of in-flight branches associated with the pipeline. The processor includes a recovery counter for tracking a number of bits needing recovery before a local branch history register is valid for participation in branch prediction. The processor includes branch predictor circuitry configured to, in response to an update of a local branch history register by a branch, set a bit in a corresponding bit-vector indicative of the update of the local branch history register. The branch predictor circuitry is configured to, upon a flush, determine a value indicative of an extent of recovery required for each local branch history register affected by the flush, and set a corresponding recovery counter to the value indicative of the extent of recovery required.Type: GrantFiled: June 2, 2022Date of Patent: September 26, 2023Assignee: Microsoft Technology Licensing, LLCInventors: Rami Mohammad Al Sheikh, Ahmed Helmi Mahmoud Osman Abulila, Daren Eugene Streett, Michael Scott McIlvaine
-
Publication number: 20190294443Abstract: Providing early pipeline optimization of conditional instructions in processor-based systems is disclosed. In one aspect, an instruction pipeline of a processor-based system detects a mispredicted branch (i.e., following a misprediction of a condition associated with a speculatively executed conditional branch instruction), and records a current state of one or more condition flags as a condition flags snapshot. After a pipeline flush is initiated and a corrected fetch path is restarted, an instruction decode stage of the instruction pipeline uses the condition flags snapshot to apply optimizations to conditional instructions detected within the corrected fetch path. According to some aspects, the condition flags snapshot is subsequently invalidated upon encountering a condition-flag-writing instruction within the corrected fetch path.Type: ApplicationFiled: March 20, 2018Publication date: September 26, 2019Inventors: Sandeep Suresh Navada, Michael Scott McIlvaine, Rodney Wayne Smith, Robert Douglas Clancy, Yusuf Cagatay Tekmen, Niket Choudhary, Daren Eugene Streett, Richard Doing, Ankita Upreti
-
Patent number: 9823929Abstract: A processor includes a queue for storing instructions processed within the context of a current value of a register field, where for some embodiments the instruction is undefined or defined, depending upon the register field at time of processing. After a write instruction (an instruction that writes to the register field) executes, the queue is searched for any entries that contain instructions that depend upon the executed write instruction. Each such entry stores the value of the register field at the time the instruction in the entry was processed. If such an entry is found in the queue and its stored value of the register field does not match the value that the write instruction wrote to the register field, then the processor flushes the pipeline and restarts at a state so as to correctly execute the instruction.Type: GrantFiled: March 15, 2013Date of Patent: November 21, 2017Assignee: QUALCOMM IncorporatedInventors: Daren Eugene Streett, Brian Michael Stempel, Thomas Philip Speier, Rodney Wayne Smith, Michael Scott McIlvaine, Kenneth Alan Dockser, James Norris Dieffenderfer
-
Publication number: 20170083333Abstract: Systems and methods pertain to a branch target instruction cache (BTIC) of a processor. The BTIC is configured to store one or more branch target instructions at branch target addresses of branch instructions executable by the processor. At least one of the branch target instructions stored in the BTIC is a conditional branch instruction. Branch prediction techniques for predicting the direction of the conditional branch instruction allow one or more instructions following the conditional branch instruction, as well as a branch target address of the conditional branch instruction to also be stored in the BTIC.Type: ApplicationFiled: September 21, 2015Publication date: March 23, 2017Inventors: Niket Kumar CHOUDHARY, Michael Scott MCILVAINE, Daren Eugene STREETT, Vimal Kodandarama REDDY, Shekhar Shashi SRIKANTAIAH, Sandeep Suresh NAVADA, Robert Douglas CLANCY, James Norris DIEFFENDERFER, Thomas Andrew SARTORIUS