IP Library Granted Patent US 11,009,841
Granted Patent B2
US 11,009,841 · App. 15/019,097 · Granted May 18, 2021

Initialising control data for a device

Inventors: Håkan Persson (Skåne, SE); Matthew Lucien Evans (Cambridge, GB)
Assignee: ARM Limited
G05B19/042G05B2219/23425G05B2219/25365
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,009,841
App. No.
15/019,097
Granted
May 18, 2021
Kind
B2
Abstract

A method for initialising control data for a device comprises determining whether an identification value stored in a control storage location of the device has a first value or second value. When the identification value has the first value, space is allocated in the memory for storing the control data and an address of the allocated space in memory is written to a control data pointer storage location of the device. When the identification value has the second value, the allocation of space in memory is omitted and the control data pointer storage location comprises a preset address indicative of a location for storing the control data in local storage provided within the device.

Claims (42)

1. A method for initializing non-CPU control data for controlling operations performed by a non-CPU device having access to a memory via a bus or interconnect, wherein the memory is also accessible to a CPU via said bus or interconnect and the non-CPU device and the CPU are separated by said bus or interconnect, the non-CPU device comprising at least one of a memory management unit, a direct memory access controller, a USB controller or a peripheral controller, and the method comprising:

determining, on initialization of the non-CPU device, whether an identification value stored in one or more capability identification registers of the non-CPU device has a first value or a second value, wherein said CPU separated from the non-CPU device by said bus or interconnect is permitted to inspect said one or more capability identification registers of the non-CPU device, said identification value being visible to software executing on said CPU separated from the non-CPU device by said bus or interconnect, and said identification value indicating whether the non-CPU control data is to be stored in said memory or in local storage provided within the non-CPU device, wherein the non-CPU device is configured to use the non-CPU control data for controlling said operations, and the memory and the local storage are separated by said bus or interconnect;

when the identification value visible to the software executing on said CPU separated from the non-CPU device by said bus or interconnect has the first value, on initialization of the non-CPU device, allocating space for storing the non-CPU control data in said memory accessible to the non-CPU device via the bus or interconnect, and writing an address of the allocated space in said memory to a control data pointer storage location of the non-CPU device; and

when the identification value visible to the software executing on said CPU separated from the non-CPU device by said bus or interconnect has the second value, on initialization of the non-CPU device, omitting allocating the space in said memory accessible to the non-CPU device via the bus or interconnect for storing the non-CPU control data, wherein when the identification value visible to the software executing on said CPU separated from the non-CPU device by said bus or interconnect has the second value, the control data pointer storage location specifies a preset address indicative of a location for storing the non-CPU control data in local storage provided within the non-CPU device, and the non-CPU control data is not stored in said memory accessible to the non-CPU device via the bus or interconnect.

2. The method of claim 1 , wherein the preset address comprises a fixed address.

3. The method of claim 1 , wherein the non-CPU device comprises presetting circuitry configured to preset the address in the control data pointer storage location when the identification value has the second value.

4. The method of claim 1 , comprising setting an internal pointer based on the address of the allocated space in memory when the identification value has the first value, and setting the internal pointer based on the preset address in the control data pointer storage location when the identification value has the second value;

wherein subsequent accesses to the control data are controlled using the internal pointer.

5. The method of claim 1 , wherein the local storage comprises one or more registers of the device.

6. The method of claim 1 , wherein the local storage comprises a local memory within the device.

7. The method of claim 1 , wherein the non-CPU device comprises a memory management unit for managing access to memory by at least one further device.

8. The method of claim 7 , wherein the control data comprises a plurality of control data entries corresponding to different contexts or different further non-CPU devices for which access to memory is controlled by the memory management unit.

9. The method of claim 1 , wherein the control data comprises a plurality of types of control data.

10. The method of claim 9 , wherein the control storage location is configured to store an identification value for at least two of the types of control data; and

the method comprises determining, for each of said at least two types of control data, whether the corresponding identification value has the first value or the second value, allocating the space in memory for a type of control data for which the corresponding identification value has the first value, and omitting allocating the space in memory for a type of control data for which the corresponding identification value has the second value.

11. The method of claim 10 , wherein at least two of the types of control data share a corresponding identification value.

12. The method of claim 10 , wherein the non-CPU device comprises a memory management unit, and the plurality of types of control data include at least two of:

address translation control data for controlling address translation performed by the memory management unit;

a command queue for tracking commands received by the memory management unit; and

an event queue for tracking events detected by the memory management unit.

13. The method of claim 1 , wherein the non-CPU device comprises a cache for caching at least some of the control data from the allocated space in memory when the identification value has the first value.

14. The method of claim 1 , wherein:

the non-CPU device comprises a system memory management unit (SMMU) configured to manage access to memory for at least one peripheral device separated from the CPU by the bus or interconnect; and

the non-CPU control data comprises SMMU control data for controlling operations of the SMMU.

15. The apparatus of claim 14 , wherein SMMU control data comprises at least one of:

a stream table storing information for controlling address translation performed by the SMMU for each of a plurality of streams of transactions received by the SMMU;

a command queue for tracking address translation commands received by the SMMU; and

an event queue for tracking events detected by the SMMU.

16. An apparatus comprising:

a non-CPU device comprising at least one of a memory management unit, a direct memory access controller, a USB controller or a peripheral controller;

local storage circuitry configured to store data within said non-CPU device;

one or more capability identification registers in the local storage circuitry configured to store an identification value having one of a first value and a second value, wherein a CPU separated from the non-CPU device by a bus or interconnect is permitted to inspect said one or more capability identification registers of the non-CPU device; and

control circuitry configured to determine, on initialization of the non-CPU device, whether the identification value has the first value or the second value, said identification value being visible to the software executing on said CPU separated from the non-CPU device by said bus or interconnect, and said identification value indicating whether control data is to be stored in a memory accessible to the non-CPU device via said bus or interconnect or in the local storage circuitry provided within the non-CPU device, wherein the non-CPU device is configured to use the control data for controlling said operations, the memory and the local storage circuitry are separated by said bus or interconnect, and the memory is also accessible to the CPU via said bus or interconnect;

wherein when the identification value visible to the software executing on said CPU separated from the non-CPU device by said bus or interconnect has the first value, the control circuitry is configured, on initialization of the non-CPU device, to allocate space in said memory accessible to the non-CPU device via the bus or interconnect for storing the control data and to write an address of the allocated space in said memory to a control data pointer storage location of the non-CPU device; and

when the identification value visible to the software executing on said CPU separated from the non-CPU device by said bus or interconnect has the second value, the control circuitry is configured, on initialization of the non-CPU device, to omit allocating the space in said memory accessible to the non-CPU device via the bus or interconnect for storing the control data, and the control data pointer storage location specifies a preset address indicative of a location for storing the control data in the local storage circuitry within said non-CPU device, and the control data is not stored in said memory accessible to the non-CPU device via the bus or interconnect.

17. An apparatus comprising:

a non-CPU device comprising at least one of a memory management unit, a direct memory access controller, a USB controller or a peripheral controller;

means for locally storing data within said non-CPU device;

means for storing an identification value having one of a first value and a second value, wherein a CPU separated from the non-CPU device by a bus or interconnect is permitted to inspect said means for storing an identification value; and

control means for determining, on initialization of the non-CPU device, whether the identification value has the first value or the second value, said identification value being visible to the software executing on said CPU separated from the non-CPU device by said bus or interconnect, and said identification value indicating whether control data is to be stored in a memory accessible to the non-CPU device via said bus or interconnect or in the means for locally storing data provided within the non-CPU device, wherein the non-CPU device is configured to use the control data for controlling said operations, the memory and the means for locally storing data are separated by said bus or interconnect, and the memory is also accessible to the CPU via said bus or interconnect;

wherein when the identification value visible to the software executing on said CPU separated from the non-CPU device by said bus or interconnect has the first value, the control means is configured, on initialization of the non-CPU device, to allocate space in said memory accessible to the non-CPU device via the bus or interconnect, for storing the control data and write an address of the allocated space in said memory to a control data pointer storage location of the non-CPU device; and

when the identification value visible to the software executing on said CPU separated from the non-CPU device by said bus or interconnect has the second value, the control means is configured, on initialization of the non-CPU device, to omit allocating the space in said memory accessible to the non-CPU device via the bus or interconnect for storing the control data, and the control data pointer storage location specifies a preset address indicative of a location for locally storing the control data in said means for locally storing data within said non-CPU device, and the control data is not stored in said memory accessible to the non-CPU device via the bus or interconnect.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2016
From: PERSSON, HAKAN; EVANS, MATTHEW LUCIEN
To: ARM LIMITED
Reel/Frame 037693/0008 →
Priority Claims (1)
GB 1503508.2 · Mar 2, 2015 · national
Continuity (1)
Related Publication 20160259310A1 · Sep 8, 2016