IP Library › Granted Patent US 12,566,610
Granted Patent B2
US 12,566,610 · App. 18/237,511 · Granted Mar 3, 2026

Microprocessor with apparatus and method for replaying load instructions

Inventor: Thang Minh Tran (Austin, TX)
Assignee: Simplex Micro, Inc.
G06F9/3836G06F9/30043G06F9/3016
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,566,610
App. No.
18/237,511
Granted
Mar 3, 2026
Kind
B2
Abstract

A processor includes a time counter and a time-resource matrix and provides a method for statically dispatching load/store instructions if the required resources are available based on data stored in the time-resource matrix, and wherein execution times for the load/store instructions use a time count from the time counter to specify when the load/store instructions may be provided to a load-store unit pipeline. The execution times of the load instruction is based on the data cache hit latency time. A delay of the load/store instruction causes the load/store instruction to be replayed with known or estimated time. A load-store unit employs multiple bank queues to access multiple data banks of a data cache.

Claims (64)

1 . A processor comprising:

a time counter storing a time count representing a current time of the processor, wherein the time count is incremented periodically;

an instruction issue unit coupled to the time counter that receives a first load/store instruction, and issues the first load/store instruction with a first preset execution time based on the time count;

an execution queue, coupled to the time counter and the instruction issue unit, that receives the first load/store instruction from the instruction issue unit, and dispatches the first load/store instruction to a functional unit when the first preset execution time corresponds to the time count;

dispatch logic that determines if the load/store instruction will be replayed with known or estimated delay cycles for replay;

a register scoreboard storing a write time of a selected register from a plurality of registers in a register file, wherein the write time is a future time based on the time count;

an instruction decode unit coupled to the register scoreboard, wherein the instruction decode unit reads a write time for each source operand of a second instruction from the register scoreboard, and uses the one or more write times to determine an execution time for the second instruction; and

a time-resource matrix unit comprising a plurality of the time-resource registers for storing information relating to available resources for each time count of the N-bit time counter, the time-resource registers storing information for resources that include at least one of: a plurality of read buses, a plurality of write buses, and a plurality of each type of functional units, the time-resource matrix unit checking availability of resources comprising read buses, the write buses, and the functional units, for replaying a first instruction at a second preset execution time, and designating resources necessary to replay the first instruction at the second preset execution time as busy.

2 . The processor of claim 1 further comprising:

a clock circuit that causes the time counter to increment the time count with each clock cycle of the clock circuit; and

wherein the time counter comprises an N-bit counter which counts from a zero count to an Nth-bit count value, which represents a largest future time for the instruction issue unit to issue a first instruction; and

wherein the N-bit counter returns to a zero count after reaching the Nth-bit value.

3 . The processor of claim 1 further comprising:

a read control unit having registers storing time count entries specifying when operands may be read and transported on a read bus, and wherein the read control unit further accesses a register scoreboard to determine availability of a first register in a register file, wherein if a write time of the first register is the same as the time count then data is forwarded from the first register instead of being read from the register file.

4 . The processor of claim 3 further comprising:

a write control unit having a plurality of write bus control registers, each write bus control register storing a time count entry specifying when result data may be transported on a write bus and written to a second register of the register file;

wherein the write control unit further accesses the register scoreboard to clear a valid bit if the write time stored in the write bus control register is the same as the time count.

5 . The processor of claim 4 wherein the execution queue stores a plurality of instructions, and each instruction includes a first read time which is represented by a future time count wherein the execution queue dispatches instructions to at least one functional unit and wherein the read control unit is synchronized with the first read time in the execution queue.

6 . The processor of claim 5 wherein the execution queue includes a replay bit corresponding to each instruction in the execution queue, the execution queue operating to:

respond to setting of the replay bit for a particular instruction by updating a read time for the particular instruction with a new read time corresponding to a future time count;

dispatch the particular instruction to at least one functional unit to cause replay of the particular instruction by causing access of the time-resource matrix to determine availability of resources; and

set an unknown bit corresponding to the particular instruction if at least one resource to execute the particular instruction is not available at the new read time.

7 . The processor of claim 6 wherein the execution queue stores one or more load/store instructions and dispatches each load/store instruction to a load-store unit, wherein each load/store instruction requires multiple clock cycles to complete in the load-store unit and a load/store instruction remains designated as valid in the execution queue until the load/store instruction completes or replays in the load-store unit, wherein a time to replay the load/store instruction is known or estimated.

8 . The processor of claim 7 wherein, the dispatch logic:

determines that load data for a load instruction will be delayed and sets a replay bit for the load instruction in the execution queue;

updates a read time corresponding to the load instruction based on an estimated latency time and the time count; and

sets an unknown bit corresponding to the load instruction if data to be loaded by the load instruction is not received within the estimated latency time.

9 . The processor of claim 8 wherein the dispatch logic sets an unknown bit corresponding to a first instruction of the execution queue to cause the first instruction to be replayed in accordance with a retire order of the first instruction.

10 . The processor of claim 9 wherein the instruction repeatedly accesses the time-resource matrix for available resources until resources are available to permit dispatch of the instruction to a functional unit in a next cycle.

11 . The processor of claim 7 further comprising a load/store unit that comprises a data bank queue for a data bank of the data cache wherein a valid entry in the data bank queue has higher priority to access the data bank of the data cache than a first load/store instruction to the same data bank wherein a number of valid entries of the data bank queue is used to determine a new write time for replay of the first load/store instruction.

12 . The processor of claim 10 wherein the data bank queue comprises a multiplex to select a valid entry in the data bank queue or an address corresponding to the first load/store instruction.

13 . A processor comprising:

a clock circuit;

a time counter storing a time count representing a specific time of operation of the processor, wherein the time count is incremented by the clock circuit;

a time-resource matrix coupled to a register scoreboard and the time counter for storing information relating to available resources for each time count of the time counter and wherein the time-resource matrix comprises busy signals of the resources based on the time count;

an instruction issue unit coupled to the time counter for receiving a first load/store instruction, and issuing or stalling the first load/store instruction at a preset execution time as represented by the time count, based on availability of the available resources as provided by the time-resource matrix;

an execution queue coupled to the time counter and the instruction issue unit to receive the first load/store instruction from the instruction issue unit, and dispatch the first load/store instruction to a functional unit when the preset execution time matches the time count;

dispatch logic to track the first load/store instruction through a load-store unit pipeline and replay the first load/store instruction if the first load/store instruction cannot be completed by an expected cycle wherein the execution queue replays the load instruction by determining availability of write buses using the busy signals;

the register scoreboard storing a write time of a register in a register file, wherein the write time is a future time specified by the time count;

an instruction decode unit coupled to the register scoreboard, the instruction decode unit reading a write time for each source operand of a selected instruction from the register scoreboard, and using the write times corresponding to the selected instruction to determine an execution time for the selected instruction; and

wherein the available resources include at least one of a plurality of read buses, a plurality of write buses, and a plurality of functional units.

14 . The processor of claim 13 further comprising a load/store unit that comprises a data bank queue for a data bank of a data cache wherein a valid entry in the data bank queue has higher priority to access the data bank of the data cache than a first load/store instruction to the same data bank wherein a number of valid entries of the data bank queue is used to determine a new write time for replay of the first load/store instruction.

15 . A computer program product for issuing an instruction, the computer program product stored on a non-transitory computer readable storage medium and including instructions for causing a computer system to execute a method that is executable by a processor, the method comprising:

issuing a load/store instruction to an execution queue or stalling execution of the load/store instruction in an instruction issue unit;

executing the load/store instruction at a future time depending on availability of resources specified in a time-resource matrix, wherein the future time is a time defined by a time count from a periodically incremented time counter;

replaying the load/store instruction if the load/store instruction cannot be completed at the future time;

operating the time counter to provide a maximum time count corresponding to a latest future time to issue an instruction;

storing a write time of a register of a register file wherein the write time is a future time defined by the time count; and

storing information corresponding to available resources for each time count in the time-resource matrix, wherein the resources comprise at least one of a plurality of read buses, a plurality of write buses, and a plurality of functional units;

wherein the time-resource matrix further comprise a busy signal for each resource based on the time count.

16 . The computer program product of claim 15 wherein the method further comprises:

storing in a register of a read control unit a read time that specifies when data may be read from a first register of a register file and transported on a read bus; and

storing in a register of a write control unit a write time that specifies when result data may be transported on a write bus and written to a second register of the register file.

17 . The computer program product of claim 16 wherein the method further comprises:

storing a plurality of instructions in an execution queue, wherein each instruction includes a read time defined by the time count; and

synchronizing the read time of each instruction in the execution queue with the read control unit.

18 . The computer program product of claim 17 , wherein the method further comprises:

operating the execution queue to dispatch load/store instructions to a load-store unit;

tracking each load/store instruction through the load-store unit; and

replaying any load/store instruction if such load/store instruction is not completed in the load-store unit at an expected time wherein a time to replay such load/store instruction is known or estimated for different types of delays.

19 . The computer program product of claim 18 , wherein the method further comprises:

providing for the load-store unit a data bank queue corresponding to a data bank of a data cache wherein a valid entry in the data bank queue has higher priority to access the data bank of the data cache than a first load/store instruction to the same data bank wherein a number of valid entries of the data bank queue is used to determine a new write time for replay of the first load/store instruction.

20 . The computer program product of claim 19 wherein the method further comprises:

replaying a load instruction to write load data back to the register file by determining if a write bus is available based on the busy signal of the time-resource matrix corresponding to the load instruction.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 30, 2023
From: TRAN, THANG MINH
To: SIMPLEX MICRO, INC.
Reel/Frame 065724/0579 →
Continuity (2)
Provisional Application 63451971 · Mar 14, 2023
Related Publication 20240311156A1 · Sep 19, 2024
References Cited (174)
US 5021985A · Hu et al. · 1991 [cited by applicant]
US 5185868A · Tran · 1993 [cited by applicant]
US 5187796A · Wang et al. · 1993 [cited by applicant]
US 5251306A · Tran · 1993 [cited by applicant]
US 5497467A · Wakui et al. · 1996 [cited by applicant]
US 5655096A · Branigin · 1997 [cited by applicant]
US 5689653A · Karp et al. · 1997 [cited by applicant]
US 5699536A · Hopkins et al. · 1997 [cited by applicant]
US 5799163A · Park et al. · 1998 [cited by applicant]
US 5802386A · Kahle et al. · 1998 [cited by applicant]
US 5809268A · Chan · 1998 [cited by applicant]
US 5835745A · Sager et al. · 1998 [cited by applicant]
US 5860018A · Panwar · 1999 [cited by applicant]
US 5870579A · Tan · 1999 [cited by applicant]
US 5881302A · Omata · 1999 [cited by applicant]
US 5903779A · Park · 1999 [cited by applicant]
US 5903919A · Myers · 1999 [cited by applicant]
US 5933618A · Tran et al. · 1999 [cited by applicant]
US 5958041A · Petolino, Jr. et al. · 1999 [cited by applicant]
US 5961630A · Zaidi et al. · 1999 [cited by applicant]
US 5964867A · Anderson et al. · 1999 [cited by applicant]
US 5974538A · Wilmot, II · 1999 [cited by applicant]
US 5996061A · Lopez-Aguado et al. · 1999 [cited by applicant]
US 5996064A · Zaidi et al. · 1999 [cited by applicant]
US 6003128A · Tran · 1999 [cited by applicant]
US 6016540A · Zaidi et al. · 2000 [cited by applicant]
US 6035389A · Grochowski et al. · 2000 [cited by applicant]
US 6035393A · Glew et al. · 2000 [cited by applicant]
US 6065105A · Zaidi et al. · 2000 [cited by applicant]
US 6247113B1 · Jaggar · 2001 [cited by applicant]
US 6282634B1 · Hinds et al. · 2001 [cited by applicant]
US 6304955B1 · Arora · 2001 [cited by applicant]
US 6425090B1 · Arimilli et al. · 2002 [cited by applicant]
US 6453424B1 · Janniello · 2002 [cited by applicant]
US 6591359B1 · Hass et al. · 2003 [cited by applicant]
US 6671799B1 · Parthasarathy · 2003 [cited by applicant]
US 6959379B1 · Wojcieszak et al. · 2005 [cited by applicant]
US 7069425B1 · Takahashi · 2006 [cited by applicant]
US 7434032B1 · Coon et al. · 2008 [cited by applicant]
US 8166281B2 · Gschwind et al. · 2012 [cited by applicant]
US 9256428B2 · Heil et al. · 2016 [cited by applicant]
US 9348590B1 · Kashyap et al. · 2016 [cited by applicant]
US 9354884B2 · Comparan et al. · 2016 [cited by applicant]
US 10339095B2 · Moudgill et al. · 2019 [cited by applicant]
US 10346171B2 · Gabor et al. · 2019 [cited by applicant]
US 10437595B1 · Kanapathipillai · 2019 [cited by examiner]
US 11062200B2 · Lie et al. · 2021 [cited by applicant]
US 11132199B1 · Tran · 2021 [cited by applicant]
US 11144319B1 · Battle et al. · 2021 [cited by applicant]
US 11163582B1 · Tran · 2021 [cited by applicant]
US 11188478B1 · Tran · 2021 [cited by applicant]
US 11204770B2 · Tran · 2021 [cited by applicant]
US 11263013B2 · Tran · 2022 [cited by applicant]
US 11467841B1 · Tran · 2022 [cited by applicant]
US 11829187B2 · Tran · 2023 [cited by applicant]
US 11954491B2 · Tran · 2024 [cited by applicant]
US 12061906B2 · Stephens et al. · 2024 [cited by applicant]
US 20010004755A1 · Levy et al. · 2001 [cited by applicant]
US 20030023646A1 · Lin et al. · 2003 [cited by applicant]
US 20030135712A1 · Theis · 2003 [cited by applicant]
US 20040073779A1 · Hokenek et al. · 2004 [cited by applicant]
US 20040168045A1 · Morris et al. · 2004 [cited by applicant]
US 20040236920A1 · Sheaffer · 2004 [cited by applicant]
US 20040243894A1 · Smith · 2004 [cited by examiner]
US 20050038980A1 · Rodgers et al. · 2005 [cited by applicant]
US 20050251657A1 · Boucher · 2005 [cited by applicant]
US 20060010305A1 · Maeda et al. · 2006 [cited by applicant]
US 20060095732A1 · Tran et al. · 2006 [cited by applicant]
US 20060218124A1 · Williamson et al. · 2006 [cited by applicant]
US 20060259800A1 · Maejima · 2006 [cited by applicant]
US 20060288194A1 · Lewis et al. · 2006 [cited by applicant]
US 20070028078A1 · Harris · 2007 [cited by examiner]
US 20070038984A1 · Gschwind et al. · 2007 [cited by applicant]
US 20070113058A1 · Tran et al. · 2007 [cited by applicant]
US 20070113059A1 · Tran · 2007 [cited by applicant]
US 20070255903A1 · Tsadik et al. · 2007 [cited by applicant]
US 20070260856A1 · Tran et al. · 2007 [cited by applicant]
US 20080114966A1 · Begon et al. · 2008 [cited by applicant]
US 20080294882A1 · Jayapala et al. · 2008 [cited by applicant]
US 20090113192A1 · Hall et al. · 2009 [cited by applicant]
US 20090158279A1 · Iino et al. · 2009 [cited by applicant]
US 20090217020A1 · Yourst · 2009 [cited by applicant]
US 20100049958A1 · Vaskevich et al. · 2010 [cited by applicant]
US 20100064106A1 · Yamada et al. · 2010 [cited by applicant]
US 20110099354A1 · Takashima et al. · 2011 [cited by applicant]
US 20110153987A1 · Luke et al. · 2011 [cited by applicant]
US 20110320765A1 · Karkhanis et al. · 2011 [cited by applicant]
US 20120047352A1 · Yamana · 2012 [cited by applicant]
US 20120060015A1 · Eichenberger et al. · 2012 [cited by applicant]
US 20120124344A1 · Jarvis · 2012 [cited by applicant]
US 20120151156A1 · Citron et al. · 2012 [cited by applicant]
US 20130151816A1 · Indukuru et al. · 2013 [cited by applicant]
US 20130297912A1 · Tran et al. · 2013 [cited by applicant]
US 20130298129A1 · Rabinovitch et al. · 2013 [cited by applicant]
US 20130346985A1 · Nightingale · 2013 [cited by applicant]
US 20140059328A1 · Gonion · 2014 [cited by applicant]
US 20140082626A1 · Busaba et al. · 2014 [cited by applicant]
US 20150026435A1 · Muff et al. · 2015 [cited by applicant]
US 20150089141A1 · Chen et al. · 2015 [cited by applicant]
US 20150100754A1 · Reid et al. · 2015 [cited by applicant]
US 20150212972A1 · Boettcher et al. · 2015 [cited by applicant]
US 20150227369A1 · Gonion · 2015 [cited by applicant]
US 20150331760A1 · Dalessandro · 2015 [cited by examiner]
US 20160092230A1 · Chen et al. · 2016 [cited by applicant]
US 20160092238A1 · Codrescu et al. · 2016 [cited by applicant]
US 20160275043A1 · Grochowski et al. · 2016 [cited by applicant]
US 20160283240A1 · Mishra et al. · 2016 [cited by applicant]
US 20160371091A1 · Brownscheidle et al. · 2016 [cited by applicant]
US 20170177345A1 · Ould-Ahmed-Vall et al. · 2017 [cited by applicant]
US 20170177354A1 · Ould-Ahmed-Vall · 2017 [cited by applicant]
US 20170185407A1 · Shwartsman · 2017 [cited by applicant]
US 20170357513A1 · Ayub et al. · 2017 [cited by applicant]
US 20170371657A1 · Mahurin et al. · 2017 [cited by applicant]
US 20180181400A1 · Scherbinin et al. · 2018 [cited by applicant]
US 20180196678A1 · Thompto · 2018 [cited by applicant]
US 20180253310A1 · Stephens · 2018 [cited by applicant]
US 20180321938A1 · Boswell et al. · 2018 [cited by applicant]
US 20190079764A1 · Diamond et al. · 2019 [cited by applicant]
US 20190243646A1 · Anderson · 2019 [cited by applicant]
US 20190303161A1 · Nassi et al. · 2019 [cited by applicant]
US 20200004534A1 · Gurram et al. · 2020 [cited by applicant]
US 20200004543A1 · Kumar et al. · 2020 [cited by applicant]
US 20200065111A1 · Bouzguarrou et al. · 2020 [cited by applicant]
US 20200089528A1 · Gutierrez et al. · 2020 [cited by applicant]
US 20200125498A1 · Betts et al. · 2020 [cited by applicant]
US 20200310796A1 · Pfister et al. · 2020 [cited by applicant]
US 20200319885A1 · Eyole et al. · 2020 [cited by applicant]
US 20200387382A1 · Tseng et al. · 2020 [cited by applicant]
US 20210026639A1 · Tekmen et al. · 2021 [cited by applicant]
US 20210200550A1 · Sivtsov et al. · 2021 [cited by applicant]
US 20210208891A1 · Wen et al. · 2021 [cited by applicant]
US 20210311743A1 · Tran · 2021 [cited by applicant]
US 20210326141A1 · Tran · 2021 [cited by applicant]
US 20210389979A1 · Tran · 2021 [cited by applicant]
US 20220066760A1 · Chang et al. · 2022 [cited by applicant]
US 20220326988A1 · Gunter et al. · 2022 [cited by applicant]
US 20230068637A1 · Feiste et al. · 2023 [cited by applicant]
US 20230130826A1 · Segger · 2023 [cited by applicant]
US 20230214218A1 · Battle et al. · 2023 [cited by applicant]
US 20230244490A1 · Tran · 2023 [cited by applicant]
US 20230244491A1 · Tran · 2023 [cited by applicant]
US 20230367599A1 · Waterman et al. · 2023 [cited by applicant]
US 20230393852A1 · Tran · 2023 [cited by applicant]
EP 0840213A2 · 1998 [cited by applicant]
EP 0902360A2 · 1999 [cited by applicant]
EP 0959575A1 · 1999 [cited by applicant]
WO 0010076A1 · 2000 [cited by applicant]
WO 0208894A1 · 2002 [cited by applicant]
WO 0213005A1 · 2002 [cited by applicant]
WO 2024015445A1 · 2024 [cited by applicant]
Anonymous: “RISC-V—Wikipedia”, Apr. 16, 2022 (Apr. 16, 2022), XP093142703, Retrieved from the Internet: URL:https://en.wikipedia.org/w/index.php?title=RISC-V&oldid=1083030760 [retrieved on Mar. 27, 2024]. [cited by applicant]
PCT/US2023/018970, International Preliminary Report on Patentability, Jul. 18, 2024. [cited by applicant]
PCT/US2023/018996, International Preliminary Report on Patentability, Jul. 19, 2024. [cited by applicant]
PCT/US2023/018996, Written Opinion of the International Preliminary Examining Authority, Apr. 8, 2024. [cited by applicant]
PCTUS2023081682, Written Opinion of the International Searching Authority, Mar. 22, 2024. [cited by applicant]
Written Opinion of The International Preliminary Examining Authority, PCTUS2023/018970, Mar. 25, 2024. [cited by applicant]
U.S. Appl. No. 17/588,315, filed Jan. 30, 2022, Thang Minh Tran. [cited by applicant]
U.S. Appl. No. 17/672,622, filed Feb. 15, 2022, Thang Minh Tran. [cited by applicant]
U.S. Appl. No. 17/697,865, filed Mar. 17, 2022, Thang Minh Tran. [cited by applicant]
U.S. Appl. No. 17/697,870, filed Mar. 17, 2022, Thang Minh Tran. [cited by applicant]
U.S. Appl. No. 17/713,569, filed Apr. 5, 2022, Thang Minh Tran. [cited by applicant]
U.S. Appl. No. 17/725,476, filed Apr. 20, 2022, Thang Minh Tran. [cited by applicant]
U.S. Appl. No. 17/829,909, filed Jun. 1, 2022, Thang Minh Tran. [cited by applicant]
Choi, W., Park, SJ., Dubois, M. (2009). Accurate Instruction Pre-scheduling in Dynamically Scheduled Processors. In: Stenström, P. (eds) Transactions on High-Performance Embedded Architectures and Compilers I. Lecture N… [cited by applicant]
Diavastos, Andreas & Carlson, Trevor. (2021). Efficient Instruction Scheduling using Real-time Load Delay Tracking. (Year: 2021). [cited by applicant]
J. S. Hu, N. Vijaykrishnan and M. J. Irwin, “Exploring Wakeup-Free Instruction Scheduling,” 10th International Symposium on High Performance Computer Architecture (HPCA'04), Madrid, Spain, pp. 232-232 (Year: 2004). [cited by applicant]
PCT/US23/27497: Written Opinion of the International Searching Authority. [cited by applicant]
Written Opinion of the International Searching Authority, PCT/S2022/052185. [cited by applicant]
Written Opinion of the International Searching Authority, PCT/US2023/018970. [cited by applicant]
Written Opinion of the International Searching Authority, PCT/US2023/018996. [cited by applicant]
H. O. Kultala et al., “Exposed datapath optimizations for loop scheduling,” 2017 International Conference on Embedded Computer Systems: Architectures, Modeling, and Simulation (SAMOS), Pythagorion, Greece, pp. 171-178 (… [cited by applicant]
PCT/US2024/02037, Written Opinion of the International Searching Authority, Dec. 11, 2024. [cited by applicant]
PCT/US2024/020737 International Search Report, Dec. 11, 2024. [cited by applicant]
Wang, Y., Jia, Z., Chen, R., Wang, M., Liu, D. and Shao, Z., Loop scheduling with memory access reduction subject to register constraints for DSP applications. Softw. Pract. Exper., pp. 999-1026. (Year: 2014). [cited by applicant]