IP Library Granted Patent US 9,460,036
Granted Patent B2
US 9,460,036 · App. 14/248,511 · Granted Oct 4, 2016

Controlling bus access priority in a real-time computer system

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,460,036
App. No.
14/248,511
Granted
Oct 4, 2016
Kind
B2
Abstract

In a real-time application, one or more computational tasks execute according to a time schedule and use input data from input devices and/or output data from output devices. One or more of the input devices or output devices may be unscheduled devices that attempt to access the peripheral bus at unscheduled times. Such unscheduled bus access can cause the time schedule to become comprised. Various methods for arbitrating access to the bus to better integrate the bus access with the time schedule followed by the application are described.

Claims (48)

1. A non-transitory computer-readable memory medium storing program instructions executable by one or more processors to:

set a priority level for each respective device used in an application, including one or more scheduled devices that access a bus according to a first static time schedule that defines at least specific execution start times in the application, and one or more unscheduled devices that attempt to access the bus at times not defined by the first static time schedule, where the priority level for each respective device specifies a priority at which the respective device is allowed to access the bus;

launch the application, wherein the one or more scheduled devices and the one or more unscheduled devices attempt to access the bus while the application is running; and

change the priority level for at least one unscheduled device of the one or more unscheduled devices one or more times while the application is running.

2. The non-transitory computer-readable memory medium of claim 1 , wherein to change the priority level for the at least one unscheduled device of the one or more unscheduled devices one or more times while the application is running, the program instructions are executable by the one or more processors to:

while a first unscheduled device is accessing the bus, receive a request to access the bus from another device with a higher priority level; and

pre-empt the first unscheduled device, thereby preventing the first unscheduled device from continuing to access the bus in response to the request from the other device.

3. The non-transitory computer-readable memory medium of claim 1 , wherein the program instructions are executable by the one or more processors to:

receive input specifying a second static time schedule that defines specific times for the priority level for the one or more unscheduled devices to be changed;

wherein said changing the priority level for the at least one unscheduled device one or more times while the application is running comprises changing the priority level for the unscheduled device at the specific times defined by the second static time schedule.

4. The non-transitory computer-readable memory medium of claim 1 , wherein the one or more unscheduled devices are assigned a lower priority level than the one or more scheduled devices.

5. The non-transitory computer-readable memory medium of claim 2 , wherein said pre-empting the first unscheduled device results in partial transfer of data such that data written to system memory by the unscheduled device is not complete or is not coherent, wherein the program instructions are further executable by the one or more processors to:

set status information indicating a pre-empted state, thereby indicating that the data transferred by or to the first unscheduled device may not be safe to access, wherein the status information is useable by the application in determining how to treat the data.

6. The non-transitory computer-readable memory medium of claim 1 , wherein the program instructions are executable by the one or more processors to change the priority level for the at least one unscheduled device based on a state of the application.

7. The non-transitory computer-readable memory medium of claim 1 , wherein at least one of the respective devices is configured to change its own priority level based on its own state.

8. A method comprising:

setting a priority level for each respective device used in an application, including one or more scheduled devices that access a bus according to a first static time schedule that defines at least specific execution start times in the application, and one or more unscheduled devices that attempt to access the bus at times not defined by the first static time schedule, where the priority level for each respective device specifies a priority at which the respective device is allowed to access the bus;

launching the application, wherein the one or more scheduled devices and the one or more unscheduled devices attempt to access the bus while the application is running; and

changing the priority level for at least one unscheduled device of the one or more unscheduled devices one or more times while the application is running.

9. The method of claim 8 , wherein said changing the priority level for at least one unscheduled device of the one or more unscheduled devices one or more times while the application is running comprises:

while a first unscheduled device is accessing the bus, receiving a request to access the bus from another device with a higher priority level; and

pre-empting the first unscheduled device, thereby preventing the first unscheduled device from continuing to access the bus in response to the request from the other device.

10. The method of claim 8 , further comprising:

receiving input specifying a second static time schedule that defines specific times for the priority level for the one or more unscheduled devices to be changed;

wherein said changing the priority level for the at least one unscheduled device one or more times while the application is running comprises changing the priority level for the unscheduled device at the specific times defined by the second static time schedule.

11. The method of claim 8 , wherein the one or more unscheduled devices are assigned a lower priority level than the one or more scheduled devices.

12. The method of claim 9 , wherein said pre-empting the first unscheduled device results in partial transfer of data such that data written to system memory by the unscheduled device is not complete or is not coherent, the method further comprising:

setting status information indicating a pre-empted state, thereby indicating that the data transferred by or to the first unscheduled device may not be safe to access, wherein the status information is useable by the application in determining how to treat the data.

13. The method of claim 8 , further comprising:

changing the priority level for the at least one unscheduled device based on a state of the application.

14. The method of claim 8 , wherein at least one of the respective devices is configured to change its own priority level based on its own state.

15. A system, comprising:

one or more processors; and

a memory medium, coupled to the one or more processors, wherein the memory medium stores program instructions executable by the one or more processors to:

set a priority level for each respective device used in an application, including one or more scheduled devices that access a bus according to a first static time schedule that defines at least specific execution start times in the application, and one or more unscheduled devices that attempt to access the bus at times not defined by the first static time schedule, where the priority level for each respective device specifies a priority at which the respective device is allowed to access the bus;

launch the application, wherein the one or more scheduled devices and the one or more unscheduled devices attempt to access the bus while the application is running; and

change the priority level for at least one unscheduled device of the one or more unscheduled devices one or more times while the application is running.

16. The system of claim 15 , wherein to change the priority level for at least one unscheduled device of the one or more unscheduled devices one or more times while the application is running, the program instructions are executable by the one or more processors to:

while a first unscheduled device is accessing the bus, receive a request to access the bus from another device with a higher priority level; and

pre-empt the first unscheduled device, thereby preventing the first unscheduled device from continuing to access the bus in response to the request from the other device.

17. The system of claim 15 , wherein the program instructions are further executable by the one or more processors to:

receive input specifying a second static time schedule that defines specific times for the priority level for the one or more unscheduled devices to be changed;

wherein said changing the priority level for the at least one unscheduled device one or more times while the application is running comprises changing the priority level for the unscheduled device at the specific times defined by the second static time schedule.

18. The system of claim 15 , wherein the one or more unscheduled devices are assigned a lower priority level than the one or more scheduled devices.

19. The system of claim 16 , wherein said pre-empting the first unscheduled device results in partial transfer of data such that data written to system memory by the unscheduled device is not complete or is not coherent, wherein the program instructions are further executable by the one or more processors to:

set status information indicating a pre-empted state, thereby indicating that the data transferred by or to the first unscheduled device may not be safe to access, wherein the status information is useable by the application in determining how to treat the data.

20. The system of claim 15 , wherein the program instructions are further executable by the one or more processors to change the priority level for the at least one unscheduled device based on a state of the application.

21. The system of claim 15 , wherein at least one of the respective devices is configured to change its own priority level based on its own state.

Assignments (5)
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 057280/0028) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION
Reel/Frame 065231/0466 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 052935/0001) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
Reel/Frame 065653/0463 →
SECURITY INTEREST Recorded Jun 18, 2021
From: NATIONAL INSTRUMENTS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 057280/0028 →
SECURITY INTEREST Recorded Jun 14, 2020
From: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 052935/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 9, 2014
From: CHANDHOKE, SUNDEEP
To: NATIONAL INSTRUMENTS CORPORATION
Reel/Frame 032633/0771 →