IP Library Granted Patent US 11,782,871
Granted Patent B2
US 11,782,871 · App. 17/701,582 · Granted Oct 10, 2023

Method and apparatus for desynchronizing execution in a vector processor

Inventor: Christopher I. W. Norrie (Castro Valley, CA)
Assignee: Microchip Technology Inc.
G06F15/8061
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 11,782,871
App. No.
17/701,582
Granted
Oct 10, 2023
Kind
B2
Abstract

In one implementation a vector processor unit having preload registers for at least some of vector length, vector constant, vector address, and vector stride. Each preload register has an input and an output. All the preload register inputs are coupled to receive a new vector parameters. Each of the preload registers' outputs are coupled to a first input of a respective multiplexor, and the second input of all the respective multiplexors are coupled to the new vector parameters.

Claims (52)

1. A vector processor unit comprising:

a plurality of memory access control preload registers, each memory access control preload register having an input and an output, all the memory access control preload register inputs coupled to receive a new vector parameters;

a plurality of multiplexors, each multiplexor having a first input, a second input, a switching input, and an output, each of the memory access control preload register outputs coupled to the first input of a respective multiplexor, each of the second input of the respective multiplexor coupled to receive the new vector parameters;

a multiplexor control, each of the multiplexor switching inputs responsive to the multiplexor control;

a plurality of memory access control registers, each memory access control register having an input and an output, each of the memory access control register inputs coupled to the respective multiplexor outputs; and

a memory access control, the memory access control having a plurality of inputs, the plurality of memory access control register outputs coupled to the respective memory access control inputs.

2. The vector processing unit of claim 1 wherein the plurality of memory access control preload registers is selected from the group consisting of a vector length preload register, a vector constant preload register, a vector address preload register, and a vector stride preload register; and

wherein the plurality of memory access control registers is selected from the group consisting of a vector length register, a vector constant register, a vector address register, and a vector stride register.

3. The vector processing unit of claim 1 wherein:

the plurality of memory access control preload registers comprise a vector length preload register, a vector constant preload register, a vector address preload register, and a vector stride preload register; and

wherein the plurality of memory access control registers comprise a vector length register, a vector constant register, a vector address register, and a vector stride register.

4. A method comprising:

(a) fetching a next instruction;

(b) determining if there is a desynchronization contention with the next instruction;

(c) when there is the desynchronization contention with the next instruction then waiting for any desynchronized operations to complete;

(h) determining if the next instruction can execute desynchronously;

(i) when the next instruction can execute desynchronously then initiating desynchronous execution and then return to (a);

(j) when the next instruction cannot execute desynchronously then initiating synchronous execution and then return to (a),

wherein the desynchronization contention with the next instruction is determined by the next instruction not being 100% under control of a pipeline control.

5. The method of claim 4 comprising inserted in alphabetical order:

(d) determining if there is an asynchronous contention with the next instruction;

(e) when there is the asynchronous contention with the next instruction then waiting for any asynchronous operations to complete;

(f) determining if the next instruction can execute asynchronously;

(g) when the next instruction can execute asynchronously then initiating asynchronous execution and then return to (a).

6. A method comprising:

(a) determining if a first vector instruction is currently executing;

(b) when the first vector instruction is not currently executing then returning to (a);

(c) when the first vector instruction is currently executing then accessing a memory access control for the first vector instruction using vector parameters stored in registers;

(d) determining if a second vector instruction is waiting to execute;

(e) when the second vector instruction is not waiting to execute then returning to (a);

(f) when the second vector instruction is waiting to execute then loading new vector parameters into preload registers for use with the second vector instruction;

(g) determining if the first vector instruction has finished execution;

(h) when the first vector instruction has not finished execution then returning to (g);

(i) when the first vector instruction has finished execution then switching a multiplexor to a preload position so as to copy contents of the preload registers into the registers;

(j) switching the multiplexor to a non-preload position; and

(k) executing the second vector instruction, denoting the second vector instruction as the first vector instruction, and returning to (a).

7. The method of claim 6 comprising the multiplexor non-preload position connecting to a new vector parameters.

8. A method comprising:

(a) determining if a desynchronized vector instruction is currently executing;

(b) when the desynchronized vector instruction is not currently executing proceed to (c);

(c) allowing new desynchronized vector instructions to execute in addition to allowing non-desynchronized instructions to execute;

(d) using parameters stored in memory access control registers for accessing a memory access control for vector instructions;

(e) determining if an instruction is attempting to modify one or more memory access control registers;

(f) when the instruction is not attempting to modify the one or more memory access control registers then proceeding to (c);

(g) when the instruction is attempting to modify the one or more memory access control registers then modifying one or more corresponding memory access control preload registers;

(h) disallowing new desynchronized vector instructions from executing but continuing to allow non-desynchronized instructions to execute;

(i) determining if all desynchronized vector instructions have completed execution;

(j) when all the desynchronized vector instructions have not completed execution then proceeding to (d);

(k) when all the desynchronized vector instructions have completed execution then proceeding to (l);

(l) moving any modified memory access control preload registers parameters into the one or more corresponding memory access control registers; and

(m) allowing instructions that modify memory access control register(s) parameters to no longer modify the corresponding memory access control preload registers parameter(s), then proceeding to (c).

9. The method of claim 8 wherein at ( 1 ) moving any modified memory access control preload register(s) parameters into the corresponding memory access control register(s) is by switching a multiplexor.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2022
From: NORRIE, CHRISTOPHER I. W.
To: MICROCHIP TECHNOLOGY INC.
Reel/Frame 059346/0006 →
Continuity (4)
Provisional Application 63180601 · Apr 27, 2021
Provisional Application 63180634 · Apr 27, 2021
Provisional Application 63180562 · Apr 27, 2021
Related Publication 20220342844A1 · Oct 27, 2022