IP Library Granted Patent US 9,753,859
Granted Patent B2
US 9,753,859 · App. 14/874,460 · Granted Sep 5, 2017

Input output value prediction with physical or virtual addressing for virtual environment

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 9,753,859
App. No.
14/874,460
Granted
Sep 5, 2017
Kind
B2
Abstract

Method and system embodying the method for input/output value determination at a processor core, comprising generating an I/O instruction comprising at least a physical or a virtual address; comparing the address with a relevant database of I/O devices addresses. When the comparing is successful determining the I/O device or a state on the I/O device to receive the I/O instruction in accordance with the address; setting a value of a first register to a value identifying the determined I/O device or the state on the I/O device; predicting a value to be set in a second register in accordance with the address; and setting a value of a third register. Providing I/O instruction other than a request I/O instruction to the I/O device or the state on the I/O device, which sets a register to a value according to the I/O instruction and reports the value to the processor core.

Claims (184)

1. A method for input/output (I/O) value determination at a processor core, comprising:

generating an I/O instruction comprising at least a physical address;

comparing the physical address from the I/O instruction with a database of physical addresses assigned to I/O devices and when the comparing is successful

determining the I/O device or a state on the I/O device to receive the I/O instruction in accordance with the physical address;

setting a value in a first register to a value identifying the determined I/O device or the state on the I/O device;

predicting a value to be set in a second register in accordance with the physical address; and

setting a value in a third register.

2. The method as claimed in claim 1 , wherein when the comparing is unsuccessful:

abstaining from setting values in any of the first, the second, and the third registers.

3. The method as claimed in claim 1 , wherein the determining an I/O device or a state on the I/O device to receive the I/O instruction in accordance with the physical address, comprises:

examining a value of a first subset of bits of the physical address; and

determining the I/O device or the state of the I/O device according to the value of the first subset of bits.

4. The method as claimed in claim 1 , wherein predicting a value to be set in a second register in accordance with the physical address, comprises:

determining values of a second and third subsets of bits of the physical address;

setting the value in the second register to a first value if the third subsets of bits equals a first predetermined value; and

setting the value in the second register to a second value if the third subsets of bits equals a second predetermined value.

5. The method as claimed in claim 1 , further comprising:

determining a type of the I/O instruction;

when the type of I/O instruction is other than a request I/O instruction providing the I/O instruction to the I/O device; and

setting a value of a register at the I/O device according to the provided I/O instruction.

6. The method as claimed in claim 5 , when the type of I/O instruction is a request I/O instruction, comprising:

comparing the identifier of the I/O device or the state on the I/O device with the value in the first register, and when the comparing is successful

abstaining from forwarding the request I/O instruction to the I/O device; and

reading the value in the second register.

7. The method as claimed in claim 6 , wherein when the comparing is unsuccessful, comprising:

providing the request I/O instruction to the I/O device;

reading a value in the register at the I/O device; and

reporting the value together with an identifier of the I/O device or the state of the I/O device providing the value to the processor core.

8. The method as claimed in claim 1 , further comprising:

monitoring a value or change thereof in a register at the I/O device; and

providing the value or a change thereof together with an identifier of the I/O device or the state on the I/O device providing the value to the processor core upon detecting the change.

9. The method as claimed in claim 1 , further comprising:

setting values in the first, the second, and the third registers in accordance with the value provided by an I/O device.

10. The method as claimed in claim 1 , wherein the I/O device or a state on the I/O device to receive the I/O instruction comprises a work order module; and

the I/O instruction comprises a request to operate on a work tag.

11. A method for input/output (I/O) value determination at a processor core, comprising:

generating an I/O instruction comprising at least a virtual address;

comparing the virtual address from the I/O instruction with a database of virtual addresses mapped to I/O devices and when the comparing is successful

determining the I/O device or a state on the I/O device to receive the I/O instruction in accordance with a physical address corresponding to the virtual address;

setting a value in a first register to a value identifying the determined I/O device or the state on the I/O device;

predicting a value to be set in a second register in accordance with the physical address; and

setting a value in a third register.

12. The method as claimed in claim 11 , wherein when the comparing is unsuccessful, further comprising:

translating the virtual address to a physical address;

comparing the physical address from the I/O instruction with a database of physical addresses assigned to I/O devices and when the comparing is successful

updating the database of virtual addresses;

determining the I/O device or a state on the I/O device to receive the I/O instruction in accordance with the physical address;

setting a value in a first register to a value identifying the determined I/O device or the state on the I/O device;

predicting a value to be set in a second register in accordance with the physical address; and

setting a value in a third register.

13. The method as claimed in claim 12 , wherein the comparing is unsuccessful:

abstaining from setting values in any of the first, the second, and the third registers.

14. The method as claimed in claim 11 , wherein when the comparing is unsuccessful, further comprising:

translating the virtual address to a physical address;

comparing the physical address from the I/O instruction with a database of physical addresses assigned to I/O devices and when the comparing is successful

updating the database of virtual addresses;

regenerating the I/O instruction comprising at least a virtual address;

comparing the virtual address from the regenerated I/O instruction with a database of virtual addresses mapped to I/O devices;

determining the I/O device or a state on the I/O device to receive the regenerated I/O instruction in accordance with a physical address corresponding to the virtual address;

setting a value in a first register to a value identifying the determined I/O device or the state on the I/O device;

predicting a value to be set in a second register in accordance with the physical address; and

setting a value in a third register.

15. The method as claimed in claim 14 , wherein the comparing is unsuccessful:

abstaining from setting values in any of the first, the second, and the third registers.

16. The method as claimed in claim 11 , wherein the determining an I/O device or a state on the I/O device to receive the I/O instruction in accordance with the physical address, comprises:

examining a value of a first subset of bits of the physical address; and

determining the I/O device or the state of the I/O device according to the value of the first subset of bits.

17. The method as claimed in claim 11 , wherein predicting a value to be set in a second register in accordance with the physical address, comprises:

determining values of a second and third subsets of bits of the physical address;

setting the value in the second register to a first value if the third subsets of bits equals a first predetermined value; and

setting the value in the second register to a second value if the third subsets of bits equals a second predetermined value.

18. The method as claimed in claim 11 , further comprising:

determining a type of the I/O instruction;

when the type of I/O instruction is other than a request I/O instruction providing the I/O instruction to the I/O device; and

setting a value in a register at the I/O device according to the provided I/O instruction.

19. The method as claimed in claim 18 , wherein when the type of I/O instruction is a request I/O instruction, comprising:

comparing the identifier of the I/O device or the state on the I/O device with the value in the first register, and when the comparing is successful

abstaining from forwarding the request I/O instruction to the I/O device; and

reading the value in the second register.

20. The method as claimed in claim 19 , wherein when the comparing is unsuccessful, comprising:

providing the request I/O instruction to the I/O device;

reading a value in the register at the I/O device; and

reporting the value together with the identifier of the I/O device or the state of the I/O device providing the value to the processor core.

21. The method as claimed in claim 11 , further comprising:

monitoring a value or change thereof in a register at the I/O device; and

providing the value or a change thereof together with an identifier of the I/O device or the state on the I/O device providing the value to the processor core upon detecting the change.

22. The method as claimed in claim 21 , further comprising:

setting values in the first, the second, and the third registers in accordance with the value provided by an I/O device.

23. The method as claimed in claim 11 , the I/O device or a state on the I/O device to receive the I/O instruction comprises a work order module; and

the I/O instruction comprises a request to operate on a work tag.

24. A apparatus for input/output (I/O) value determination, comprising:

a processor core configured to generate an I/O instruction comprising at least a physical address;

a comparator configured to compare the physical address from the I/O instruction with a database of physical addresses assigned to I/O devices; and

a controller configured to receive the result from the comparator and when the comparison is successful

determine the I/O device or a state on the I/O device to receive the I/O instruction in accordance with the physical address;

set a value of a first register to a value identifying the determined I/O device or the state on the I/O device;

predict a value to be set in a second register in accordance with the physical address; and

set a value in a third register.

25. The apparatus as claimed in claim 24 , wherein when the comparison is unsuccessful:

the controller is configured to abstain from setting values in any of the first, the second, and the third registers.

26. The apparatus as claimed in claim 24 , wherein the controller determines the I/O device or a state on the I/O device to receive the I/O instruction in accordance with the physical address by being further configured to:

examine a value of a first subset of bits of the physical address; and

determine the I/O device or the state of the I/O device according to the value of the first subset of bits.

27. The apparatus as claimed in claim 24 , wherein the controller predicts a value to be set in a second register in accordance with the physical address by being further configured to:

determine values of a second and third subsets of bits of the physical address;

set the value in the second register to a first value if the third subsets of bits equals a first predetermined value; and

set the value in the second register to a second value if the third subsets of bits equals a second predetermined value.

28. The apparatus as claimed in claim 24 , wherein the controller is further configured to:

determining a type of the I/O instruction;

when the type of I/O instruction is other than a request I/O instruction provide the I/O instruction to the I/O device; and

set a value of a register at the I/O device according to the provided I/O instruction.

29. The apparatus as claimed in claim 28 , wherein the controller is further configured to:

compare the identifier of the I/O device or the state on the I/O device with the value in the first register, and when the comparison is successful

abstain from forwarding the request I/O instruction to the I/O device; and

read the value in the second register.

30. The apparatus as claimed in claim 29 , wherein when the comparison is unsuccessful, the controller is configured to provide the request I/O instruction to the I/O device; and

wherein a controller at the I/O device is configured to

read a value in the register at the I/O device; and

report the value together with an identifier of the I/O device or the state of the I/O device providing the value to the processor core.

31. The apparatus as claimed in claim 24 , wherein controller at the I/O device is further configured to:

monitor a value or change thereof in a register at the I/O device; and

provide the value or a change thereof together with an identifier of the I/O device or the state on the I/O device providing the value to the processor core upon detecting the change.

32. The apparatus as claimed in claim 24 , wherein the controller is further configured to:

set values in the first, the second, and the third registers in accordance with the value provided by an I/O device.

33. The apparatus as claimed in claim 24 , wherein the I/O device or a state on the I/O device to receive the I/O instruction comprises a work order module; and

the I/O instruction comprises a request to operate on a work tag.

34. An apparatus for input/output (I/O) value determination, comprising:

a processor core configured to generate an I/O instruction comprising at least a virtual address;

a comparator configured to compare the virtual address from the I/O instruction with a database of virtual addresses mapped to I/O devices; and

a controller configured to receive the result from the comparator and when the comparison is successful

determine the I/O device or a state on the I/O device to receive the I/O instruction in accordance with a physical address corresponding to the virtual address;

set a value in a first register to a value identifying the determined I/O device or the state on the I/O device;

predict a value to be set in a second register in accordance with the physical address; and

set a value in a third register.

35. The apparatus as claimed in claim 34 , wherein when the comparing is unsuccessful:

the controller is further configured to translate the virtual address to a physical address;

the comparator is further configured to compare the physical address from the I/O instruction with a database of physical addresses assigned to I/O devices and when the comparing is successful

the controller is further configured to

update the database of virtual addresses;

determine the I/O device or a state on the I/O device to receive the I/O instruction in accordance with the physical address;

set a value in a first register to a value identifying the determined I/O device or the state on the I/O device;

predict a value to be set in a second register in accordance with the physical address; and

set a value in a third register.

36. The apparatus as claimed in claim 35 , wherein the comparing is unsuccessful:

the controller is further configured to abstain from setting values in any of the first, the second, and the third registers.

37. The apparatus as claimed in claim 34 , wherein when the comparing is unsuccessful, further comprising:

the controller is further configured to translate the virtual address to a physical address;

the comparator is further configured to compare the physical address from the I/O instruction with a database of physical addresses assigned to I/O devices and when the comparing is successful

the controller is further configured to update the database of virtual addresses;

the processor core is further configured to regenerate the I/O instruction comprising at least a virtual address;

the comparator is further configured to comparing the virtual address from the regenerated I/O instruction with a database of virtual addresses mapped to an I/O device; and

the controller is further configured to

determine the I/O device or a state on the I/O device to receive the regenerated I/O instruction in accordance with a physical address corresponding to the virtual address;

set a value in a first register to a value identifying the determined I/O device or the state on the I/O device;

predict a value to be set in a second register in accordance with the physical address; and

set a value in a third register.

38. The apparatus as claimed in claim 37 , wherein the comparing is unsuccessful:

the controller is further configured to abstain from setting values in any of the first, the second, and the third registers.

39. The apparatus as claimed in claim 34 , wherein the controller determines the I/O device or a state on the I/O device to receive the I/O instruction in accordance with the physical address by being further configured to:

examine a value of a first subset of bits of the physical address; and

determine the I/O device or the state of the I/O device according to the value of the first subset of bits.

40. The apparatus as claimed in claim 34 , wherein the controller predicts a value to be set in a second register in accordance with the physical address, by being further configured to:

determine values of a second and third subsets of bits of the physical address;

set the value in the second register to a first value if the third subsets of bits equals a first predetermined value; and

set the value in the second register to a second value if the third subsets of bits equals a second predetermined value.

41. The apparatus as claimed in claim 34 , wherein the controller is further configured to:

determine a type of the I/O instruction;

when the type of I/O instruction is other than a request I/O instruction provide the I/O instruction to the I/O device; and

set a value in a register at the I/O device according to the provided I/O instruction.

42. The apparatus as claimed in claim 41 , wherein when the type of I/O instruction is a request I/O instruction, the controller is further configured to:

compare the identifier of the I/O device or the state on the I/O device with the value in the first register, and when the comparing is successful

abstain from forwarding the request I/O instruction to the I/O device; and

read the value in the second register.

43. The apparatus as claimed in claim 42 , wherein when the comparing is unsuccessful, the controller is further configured to provide the request I/O instruction to the I/O device; and

a controller at the I/O device is configured to

read a value in the register at the I/O device; and

report the value together with the identifier of the I/O device or the state of the I/O device providing the value to the processor core.

44. The apparatus as claimed in claim 34 , wherein the controller at the I/O device is configured to:

monitor a value or change thereof in a register at the I/O device; and

provide the value or a change thereof together with an identifier of the I/O device or the state on the I/O device providing the value to the processor core upon detecting the change.

45. The apparatus as claimed in claim 44 , wherein the controller is further configured to:

set values in the first, the second, and the third registers in accordance with the value provided by an I/O device.

46. The apparatus as claimed in claim 34 , wherein the I/O device or a state on the I/O device to receive the I/O instruction comprises a work order module; and

the I/O instruction comprises a request to operate on a work tag.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Dec 12, 2019
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 051260/0567 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2015
From: SNYDER, WILSON PARKHURST, II; BERTONE, MICHAEL SEAN
To: CAVIUM, INC.
Reel/Frame 036721/0844 →