IP Library › Granted Patent US 12,443,412
Granted Patent B2
US 12,443,412 · App. 18/217,403 · Granted Oct 14, 2025

Method and apparatus for a scalable microprocessor with time counter

Inventor: Thang Minh Tran (Austin, TX)
Assignee: Simplex Micro, Inc.
G06F9/3838G06F1/12G06F9/3848
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,443,412
App. No.
18/217,403
Granted
Oct 14, 2025
Kind
B2
Abstract

A processor includes a time counter and at least one execution slice that is comprised of an instruction decode unit, a time-resource matrix unit, an issue unit, an execution queue, and a functional unit. An instruction is issued to the execution queue to execute at a future time depending on the availability of resources specified in the time-resource matrix, wherein the future time is a time defined by a time count from a periodically incremented time counter.

Claims (60)

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; and

an execution slice comprising,

a time-resource matrix unit,

an instruction issue unit coupled to the time counter for receiving a first instruction, and if the time-resource matrix indicates available resources at a preset execution time then issuing the first instruction with the preset execution time based on the time count, and

a functional unit, and an execution queue coupled to the time counter and the instruction issue unit for receiving the first instruction from the instruction issue unit, and dispatching the first instruction to the functional unit when the preset execution time corresponds to the time count.

2. A processor as in claim 1 further comprising:

a clock circuit, wherein the time counter increments the time count with each clock cycle of the clock circuit;

wherein the time counter comprises an N-bit counter wherein an Nth-bit count value represents a largest future time for the instruction issue unit to issue an instruction; and

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

3. The processor of claim 2 further comprising a register scoreboard storing a write time of a register in a register file, wherein the write time is a future time of the time count.

4. The processor of claim 3 further comprising:

an instruction decode unit coupled to the register scoreboard, wherein the instruction decode unit reads at least one write time for source operands of an instruction from the register scoreboard and uses the at least one write time to determine an execution time for the instruction.

5. The processor of claim 4 wherein the time-resource matrix unit comprises:

a plurality of time-resource registers, wherein each time-resource register stores information relating to available resources for a time count of the N-bit time counter; and

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

6. The processor of claim 2 wherein the execution slice further comprises:

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 as stored in the register scoreboard is the same as the time count data is forwarded instead of being read from the register file.

7. The processor of claim 6 wherein the execution slice further comprises:

a write control unit having a plurality of write bus control registers, wherein each write bus control register stores 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, and wherein the write control unit further accesses the register scoreboard to clear a valid bit if the write time stored in a selected write bus control register is the same as the time count.

8. The processor of claim 7 :

wherein the execution queue stores a plurality of instructions, and each instruction includes a read time which is represented by a future time count; and

wherein the execution queue dispatches instructions to at least one functional unit and the read time of the execution queue is synchronized with a read time of the read control unit.

9. The processor of claim 8 :

wherein the execution queue is coupled to a load/store port and a data cache tag array;

wherein the execution queue dispatches instructions to the load/store port and tag array; and

wherein the load/store port and tag array are further coupled to a data cache data array and a load/store unit.

10. The processor of claim 9 further comprising:

a plurality of execution slices wherein each execution slice is configured with a plurality of resources and is configured to receive a plurality of instructions.

11. 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 register scoreboard storing a write time of a register in a register file, wherein the write time is a future time of the time count; and

an execution slice comprising,

resources that include at least one of a plurality of read buses, a plurality of write buses, and a plurality of functional units;

a time-resource matrix that stores for each time count of the timer resources that are available at the corresponding time count;

an instruction issue unit coupled to the time counter and the tine-resource matrix and receiving a first instruction, and issuing or stalling the first instruction based on availability as provided by the time-resource matrix of one or more of the resources at a preset execution time based on the time count;

an execution queue coupled to the time counter, and the instruction issue unit, the execution queue receiving the first instruction from the instruction issue unit, and dispatching the first instruction to a functional unit when the preset execution time matches the time count; and

an instruction decode unit coupled to the register scoreboard, the instruction decode unit reading from the register scoreboard write times for source operands of the first instruction, and using the write times to determine an execution time for the first instruction.

12. A computer program product for issuing an instruction to a coprocessor, 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 that includes an execution slice comprising an instruction decode unit, a time-resource matrix unit, an issue unit, an execution queue, and a functional unit, the method comprising:

issuing an instruction to the execution queue;

accessing the time-resource matrix to determine availability of resources at a future time; and

executing the instruction at the future time if resources required to execute the instruction at the future time;

wherein the future time is a time defined by a time count from a periodically incremented time counter.

13. The computer program product of claim 12 wherein the time counter provides a maximum time count corresponding to a latest future time to issue an instruction.

14. The computer program product of claim 13 wherein the method further comprises:

storing a write time of a first register in a register file wherein the write time is the future time defined by the time count.

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

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.

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 register file and transported on a read bus.

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

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 the register file.

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

storing a plurality of instructions in the execution queue, wherein each instruction includes a read time defined by the time count and wherein the read time is synchronized with the read time of the read control unit.

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

the execution queue dispatching instructions to at least one functional unit.

20. The computer program product of claim 19 wherein the execution queue is coupled to a load/store port and a data cache tag array the method further comprising:

the execution queue dispatching instructions to the load/store port and tag array and wherein the load/store port and tag array are further coupled to a data cache data array and a load/store unit.

21. The computer program product of claim 20 wherein the processor includes a plurality of execution slices wherein each execution slice is configured to receive a plurality of instructions and is configured with a plurality of resources.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 6, 2023
From: TRAN, THANG MINH
To: SIMPLEX MICRO, INC.
Reel/Frame 064175/0423 →
Continuity (4)
Continuation In Part 17672622 · Feb 15, 2022
Continuation In Part 17588315 · Jan 30, 2022
Provisional Application 63429343 · Dec 1, 2022
Related Publication 20230350685A1 · Nov 2, 2023
References Cited (139)
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 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 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 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 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 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 examiner]
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 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 20070038984A1 · Gschwind et al. · 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 20090158279A1 · Iino et al. · 2009 [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 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 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 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 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 20200004534A1 · Gurram et al. · 2020 [cited by applicant]
US 20200004543A1 · Kumar 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 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 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]
PCT/US23/27497: Written Opinion of the International Searching Authority. [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]
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]
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]