Core mapping
阅读说明:本技术 核映射 (Core mapping ) 是由 G·T·莱蒂 D·L·斯泰尔斯 E·B·奈廷格尔 于 2018-04-27 设计创作,主要内容包括:所公开的技术总体上涉及外围设备访问。在本技术的一个示例中,所存储的配置信息被读取。所存储的配置信息与以下相关联:将多个独立执行环境映射到多个外围设备,使得多个外围设备中的外围设备具有多个独立执行环境中的对应独立执行环境。基于配置信息对可配置中断路由表进行编程。从外围设备接收中断。基于可配置中断路由表向对应独立执行环境路由中断。(The disclosed technology relates generally to peripheral access. In one example of the present technology, stored configuration information is read. The stored configuration information is associated with: the plurality of independent execution environments are mapped to the plurality of peripheral devices such that a peripheral device of the plurality of peripheral devices has a corresponding independent execution environment of the plurality of independent execution environments. The configurable interrupt routing table is programmed based on the configuration information. An interrupt is received from a peripheral device. Interrupts are routed to the corresponding independent execution environment based on a configurable interrupt routing table.)
1. An apparatus, comprising:
a device comprising at least one memory and at least one processor, the at least one memory adapted to store runtime data for the device, the at least one processor adapted to execute processor executable code that, in response to execution, enables the device to perform actions comprising:
reading the stored configuration information, the configuration information being associated with: mapping a plurality of independent execution environments to a plurality of peripheral devices such that the peripheral devices in the plurality of peripheral devices have corresponding independent execution environments in the plurality of independent execution environments;
programming a configurable interrupt routing table based on the configuration information;
receiving an interrupt from a peripheral device; and
routing the interrupt to the corresponding independent execution environment based on the configurable interrupt routing table.
2. The apparatus of claim 1, the acts further comprising:
setting a sticky lock bit associated with the configurable interrupt routing table after programming the configurable interrupt routing table; and
blocking write access to the configurable interrupt routing table while the sticky lock bit is set.
3. The apparatus of claim 1, wherein the configurable interrupt routing table comprises a plurality of configuration registers.
4. The apparatus of claim 1, the acts further comprising:
programming a configurable data management access table based on the configuration information.
5. A method, comprising:
reading the stored configuration information, the configuration information being associated with: mapping a plurality of independent execution environments to a plurality of peripheral devices such that the peripheral devices in the plurality of peripheral devices have corresponding independent execution environments in the plurality of independent execution environments;
programming a configurable route based on the configuration information;
receiving an interrupt from a peripheral device; and
routing the interrupt to the corresponding independent execution environment based on the configurable routing.
6. The method of claim 5, wherein the configurable routing comprises at least one of: a configurable interrupt routing table, a configurable data management access routing table, or a plurality of configuration registers.
7. The method of claim 5, further comprising:
setting a sticky lock bit associated with the configurable route after programming the configurable route; and
blocking write access to the configurable route while the sticky lock bit is set.
8. A processor-readable storage medium having stored thereon process executable code that, when executed by at least one processor, performs acts comprising:
reading the stored configuration information, the configuration information being associated with: mapping a plurality of cores in a multi-core integrated circuit to a plurality of peripheral devices such that the peripheral devices in the plurality of peripheral devices have corresponding cores in the plurality of cores;
configuring a configurable interrupt routing table based on the configuration information;
receiving an interrupt from a peripheral device; and
routing the interrupt to the corresponding independent execution environment based on the configurable interrupt routing table.
9. The processor-readable storage medium of claim 8, the acts further comprising:
setting a sticky lock bit associated with the configurable interrupt routing table after programming the configurable interrupt routing table; and
blocking write access to the configurable interrupt routing table while the sticky lock bit is set.
10. The processor-readable storage medium of claim 8, the acts further comprising:
programming a configurable data management access table based on the configuration information.
11. The processor-readable storage medium of claim 8, wherein the configurable interrupt routing table comprises a plurality of configuration registers.
12. The processor-readable storage medium of claim 10, the acts further comprising:
after programming the configurable data management access table, setting a sticky lock bit associated with the configurable data management access table; and
blocking write access to the configurable data management access table while the sticky lock bit is set.
13. The method of claim 5, wherein the configurable routing comprises a configurable interrupt routing table, and wherein the configurable interrupt routing table comprises a plurality of configuration registers.
14. The apparatus of claim 4, the acts further comprising:
after programming the configurable data management access table, setting a sticky lock bit associated with the configurable data management access table; and
blocking write access to the configurable data management access table while the sticky lock bit is set.
15. The apparatus of claim 1, wherein the plurality of independent execution environments comprise at least a first core and a second core, wherein the second core is not the first core.
Background
The internet of things ("IoT") generally refers to a system of devices that are capable of communicating over a network. These devices may include everyday items such as toasters, coffee makers, thermostat systems, washing machines, dryers, lights, automobiles, and the like. Network communication may be used for device automation, data capture, providing alerts, personalization of settings, and many other applications.
Disclosure of Invention
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Briefly, the disclosed technology relates generally to configurable peripheral access in an integrated circuit. In one example of the present technology, the stored configuration information may be read. In some examples, the stored configuration information is associated with: the plurality of independent execution environments are mapped to the plurality of peripheral devices such that a peripheral device of the plurality of peripheral devices has a corresponding independent execution environment of the plurality of independent execution environments. Based on the configuration information, a configurable interrupt routing table may be programmed. An interrupt may be received from a peripheral device. Based on the configurable interrupt routing table, interrupts may be routed to the corresponding independent execution environment.
In some examples of the disclosure, in a multi-core environment, some cores are configured to "own" some peripheral devices, rather than giving all cores access rights to all peripheral devices. Rather than hardwiring which cores own which peripherals, the core to peripheral mapping may be dynamically pre-programmable until a sticky lock bit is set, at which point the core to peripheral mapping is fixed until the device is restarted.
The mapping of cores to peripherals may be separate for each device type, and configuration information for cores to peripherals may be stored, for example, on flash memory or in another suitable location. The security code running in the secure world may read the configuration information and set the configuration register based on the configuration information. The secure world may program the core mapping and interrupt routing tables based on the configuration information. After programming the core mapping and interrupt routing tables, a sticky lock bit may be set so that the core mapping and interrupt routing are fixed until the device is restarted.
During operation, in some examples, the core mapping and interrupt routing tables are used as configured. In some examples, interrupts received from a peripheral device enter an intermediate routing block that sends the interrupt to the core that "owns" the peripheral device using a configured interrupt table. In some examples, the configured core routing and configured interrupt routing tables make it appear as if the core is hardwired to its corresponding peripheral device, but not actually.
The core to peripheral mapping may include interrupts and other sideband communications, such as Direct Memory Access (DMA) routing. In some examples, all communications that are point-to-point, typically in either direction between the core and the peripheral device, are routed via the core map such that the communications appear to be point-to-point, while actually being routed via the intermediate routing block.
Other aspects and applications of the disclosed technology will be understood after a reading and understanding of the attached drawings and description.
Drawings
Non-limiting and non-exhaustive examples of the present disclosure are described with reference to the following drawings. In the drawings, like reference numerals refer to like parts throughout the various figures unless otherwise specified. The figures are not necessarily to scale.
For a better understanding of the present disclosure, reference will be made to the following detailed description which should be read in connection with the accompanying drawings, wherein:
FIG. 1 is a block diagram illustrating one example of a suitable environment in which aspects of the present technology may be employed;
FIG. 2 is a block diagram illustrating one example of a suitable computing device in accordance with aspects of the disclosed technology;
FIG. 3 is a block diagram illustrating an example of a system for peripheral access;
FIG. 4 is a block diagram illustrating an example of a device for peripheral access; and
fig. 5 is a diagram illustrating an example data flow of a process for configuring access to a peripheral device, according to aspects of the present disclosure.
Detailed Description
The following description provides specific details for a thorough understanding and enabling description of various examples of the present technology. It will be understood by those skilled in the art that the techniques may be practiced without many of these details. In some instances, well-known structures and functions have not been shown or described in detail to avoid unnecessarily obscuring the description of the examples of the present technology. The terminology used in the present disclosure is intended to be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain examples of the technology. Although certain terms may be emphasized below, any term intended to be interpreted in any constrained manner will be explicitly and specifically defined in the detailed description section. Throughout the specification and claims, the following terms take at least the meanings explicitly associated herein, unless the context indicates otherwise. The meanings identified below do not necessarily limit the terms, but merely provide illustrative examples of the terms. For example, each of the terms "based on" and "according to" is not exclusive and is equivalent to the term "based at least in part on" and includes options based on other factors, some of which may not be described herein. As another example, the term "via" is not exclusive and is equivalent to the term "at least partially via" and includes options via additional factors, some of which may not be described herein. The meaning of "in … …" includes "in … …" and "on … …". The phrases "in one embodiment" or "in an example" as used herein do not necessarily refer to the same embodiment or example, although they may. The use of a particular text numeric indicator does not indicate that there is a lower value numeric indicator. For example, the statement "a widget selected from a group including a third foo and a fourth bar" does not by itself indicate that there are at least three foos, nor at least four bar elements. The singular reference is only for the clarity of reading and includes the plural references unless explicitly excluded. The term "or" is an inclusive "or" operator, unless explicitly stated otherwise. For example, the phrase "a or B" means "A, B or a and B". As used herein, the terms "component" and "system" are intended to encompass hardware, software, or various combinations of hardware and software. Thus, for example, a system or component may be a process, a process executing on a computing device, or a portion thereof.
Briefly, the disclosed technology relates generally to configurable peripheral access in an integrated circuit. In one example of the present technology, the stored configuration information may be read. In some examples, the stored configuration information is associated with: the plurality of independent execution environments are mapped to the plurality of peripheral devices such that a peripheral device of the plurality of peripheral devices has a corresponding independent execution environment of the plurality of independent execution environments. Based on the configuration information, a configurable interrupt routing table may be programmed. An interrupt may be received from a peripheral device. Based on the configurable interrupt routing table, interrupts may be routed to the corresponding independent execution environment.
In some examples of the disclosure, in a multi-core environment, some cores are configured to "own" some peripheral devices, rather than giving all cores access rights to all peripheral devices. Rather than hardwiring which cores own which peripherals, the core to peripheral mapping may be dynamically pre-programmable until a sticky lock bit is set, at which point the core to peripheral mapping is fixed until the device is restarted.
The mapping of cores to peripherals may be separate for each device type, and configuration information for cores to peripherals may be stored, for example, on flash memory or in another suitable location. The security code running in the secure world may read the configuration information and set the configuration register based on the configuration information. The secure world may program the core mapping and interrupt routing tables based on the configuration information. After programming the core mapping and interrupt routing tables, a sticky lock bit may be set so that the core mapping and interrupt routing are fixed until the device is restarted.
During operation, in some examples, the core mapping and interrupt routing tables are used as configured. In some examples, interrupts received from a peripheral device enter an intermediate routing block that sends the interrupt to the core that "owns" the peripheral device using a configured interrupt table. In some examples, the configured core routing and configured interrupt routing tables make it appear as if the core is hardwired to its corresponding peripheral device, but not actually.
The mapping of cores to peripherals may include interrupts and other sideband communications, such as DMA. In some examples, all communications that are point-to-point, typically in either direction between the core and the peripheral device, are routed via the core map such that the communications appear to be point-to-point, while actually being routed via the intermediate routing block.
Illustrative device/operating Environment
FIG. 1 is a diagram of an
As shown in fig. 1,
In some examples, one or more of the
Illustrative computing device
FIG. 2 is a diagram illustrating one example of a
Notwithstanding the above discussion, the operating
In
In
Moreover,
In the illustrated example,
Although computing
Some examples of
Illustrative System
Fig. 3 is a block diagram illustrating an example of a system (300) with configurable peripheral mapping.
The term "IoT device" refers to a device intended to utilize an IoT service. IoT devices may include virtually any device that connects to a network to use IoT services, including for telemetry collection or any other purpose. IoT devices include any device that can connect to a network to utilize IoT services. In various examples, the IoT device may communicate with the cloud, with a peer or local system, or with a combination of a peer and local system and the cloud, or in any other suitable manner. IoT devices may include everyday items such as toasters, coffee machines, thermostat systems, washing machines, dryers, lights, automobiles, and the like. IoT devices may also include, for example, various devices in a "smart" building, including lights, temperature sensors, humidity sensors, occupancy sensors, and the like. IoT services for IoT devices may be used for device automation, data capture, providing alerts, personalization of settings, and many other applications.
The term "IoT support service" refers to one device, a portion of at least one device, or a plurality of devices, such as a distributed system, in some examples, an IoT device connects to one device, a portion of at least one device, or a plurality of devices, such as a distributed system, over a network to obtain an IoT service. In some examples, the IoT support service is an IoT hub. In some examples, IoT hubs are excluded and IoT devices communicate with the application backend directly or through one or more intermediaries (intermediaries) without including IoT hubs, and software components in the application backend operate as IoT support services. The IoT device receives the IoT service via communication with the IoT support service. In some examples, the IOT support services may be embedded within the device, or embedded in the local infrastructure.
The
Each of
One or more of
Network 330 may include one or more computer networks, including wired and/or wireless networks, where each network may be, for example, a wireless network, a Local Area Network (LAN), a Wide Area Network (WAN), and/or a global network such as the internet. On an interconnected set of LANs, including LANs based on differing architectures and protocols, a router acts as a link between LANs, enabling messages to be sent from one to another. Moreover, the communication links within a LAN typically comprise twisted wire pairs or coaxial cable, while the communication links between networks may utilize analog telephone lines, full or partial dedicated digital lines (including T1, T2, T3, and T4), Integrated Services Digital Networks (ISDN), Digital Subscriber Lines (DSL), wireless links including satellite links, or other communication links known to those skilled in the art. In addition, remote computers and other related electronic devices can be remotely connected to either LANs or WANs via a modem and temporary telephone link. Network 330 may include various other networks such as one or more networks using local network protocols such as 6LoWPAN, ZigBee, and the like. Some IoT devices may connect to user devices via a network in network 330 that is different from other IoT devices. Essentially, network 330 includes any communication method by which information may travel between
As one example,
The
Illustrative apparatus
Fig. 4 is a block diagram illustrating an example of the
In some examples,
In some examples, the
In some examples, the CPU453 runs a high level operating system. In some examples, the CPU453 has two independent execution environments: a secure world execution environment and a normal world execution environment. The term "secure world" is used broadly to refer to a trusted environment and is not limited to a particular security feature. In some examples, the secure world execution environment of CPU453 is also part of the trusted computing base (base) of the system. For example, in some examples, the secure world execution environment of CPU453 is accessible without restriction to reprogram hardware protection mechanisms, such as firewalls in some examples. However, in some examples, the secure world execution environment of the CPU453 has no access to the interior of the core security complex of the
The radio block 457 may provide Wi-Fi communication. The
In some examples, IO subsystem 1461 and IO subsystem 2462 are I/O subsystems for general purpose I/O connectivity. In some examples, IO subsystem 1461 and IO subsystem 2462 each include an MCU.
The
Each of the cores may have a bidirectional mailbox to support inter-processor communication. The performance counters 475 may be configured to count read requests, write requests, and data type requests for performance monitoring. In some examples, the performance counter 475 may also be configured to measure latency from the core to the target, such as latency from the MCU 462 to the
In some examples, the interface at block 459 comprises two interactive integrated circuit sound (I2S) interfaces: one for audio input and one for audio output. In other examples, other interface configurations may be employed, and in various examples, block 459 may comprise any suitable interface.
In some examples, the
In some examples, when sideband communications are to travel from a core to a peripheral or from a peripheral to a core, the communications enter an intermediate block that routes the communications so that communications occur between the peripheral and the core to which the peripheral has been mapped according to a core mapping. In some examples, one or more intermediate routing tables, which have been configured with the core map, route communications.
In some examples, the kernel map is separate for each device type, but the same for each device of the same model. In some examples, the core map is stored in, for example, flash memory or other suitable location. For example, in some examples, the core map is stored in
After programming the core mapping and interrupt routing tables in the interrupt/DMA
In some examples, interrupt and DMA intermediate routes and any other associated intermediate routes are configured with the same core-to-peripheral mapping as each other. That is, in some examples, a peripheral is mapped to the same core regardless of which core the peripheral is mapped to, such that the core and peripheral appear to have a hardwired connection. That is, in these examples, the peripheral device maps to the same core across interrupt intermediate routes, DMA intermediate routes, and any other associated intermediate routes.
In some examples, some interrupts may be hardwired to a particular core, while other interrupts may be configurable in the manner discussed above. In some examples, the mailbox interrupt is hardwired. In some examples, when any of the I/O subsystems or mailboxes interrupts its associated core, the
In some examples, as explained in more detail below, the independent execution environment of the
In some examples, the MCU in the
In some examples, the secure world execution environment of CPU453 is also part of the trusted computing base of the system. For example, in some examples, the secure world runtime (secure world RT) of CPU453 is accessible without restriction to reprogram hardware protection mechanisms, such as firewalls in some examples. However, in some examples, the secure world RT does not have access to the interior of the core security complex of the
The normal world execution environment of the CPU453 can be configured to have limited access to on-chip resources such as memory. In some examples, various security and quality criteria (e.g., relatively high criteria) may be enforced for code running in the environment, but not as trusted as code running on an MCU in the
In some examples,
In some examples, each independent execution environment is managed by a single software component that executes in a separate execution environment referred to as the "parent" of the execution environment. In such an example, one exception may be that the hardware root of trust (the core security complex of
For example, in some examples, the MCU of the
In some examples, the independent execution environments are not only managed by software components from more trusted execution environments, but different functions are assigned to different independent execution environments, with more sensitive functions assigned to more trusted independent execution environments. In one particular example, an independent execution environment that is less trusted than the independent execution environment to which the function is assigned is restricted from accessing the function. In this way, in some examples, the independent execution environment implements deep defenses based on trust hierarchies.
For example, in some examples, the core security complex of the
In some examples, each level of the trust hierarchy has control over accepting or rejecting requests from a less trusted level, e.g., in terms of enabling support for the software they handle, except for the bottom level of the hierarchy (i.e., the least trusted), and the ability to level limit or audit requests from the less trusted level, as well as the ability to validate requests from a lower level, e.g., to ensure that the requests are correct and authentic. Also, as discussed previously, in some examples, each level of the hierarchy, except the top (i.e., most trusted) level, has a parent that is responsible for managing lower (i.e., less trusted) levels, including monitoring whether software on the lower level is functioning correctly.
In the example given above,
In addition to simply mapping a particular peripheral to a particular core, a particular peripheral may also be mapped to a particular independent execution environment. For example, the peripheral device may be mapped to a particular independent execution environment. For example, the peripheral may be mapped to a particular core, such as the MCU461, the MCU 462, or a secure MCU of the
Illustrative Process
For clarity, the processes described herein are described in terms of operations performed by specific devices or components of a system in a specific order. Note, however, that other processes are not limited to the order, devices, or components set forth. For example, some acts may be performed in a different order, performed in parallel, omitted, or supplemented by additional acts or features, whether or not such order, parallelism, acts, or features are described herein. Likewise, any of the techniques described in this disclosure may be incorporated into the described processes or other processes, whether or not the techniques are specifically described in connection with the processes. The disclosed processes may also be performed on or by other devices, components, or systems, whether or not such devices, components, or systems are described herein. These processes may also be embodied in various ways. For example, they may be embodied on an article of manufacture, e.g., as processor readable instructions stored in a processor readable storage medium or executed as a computer implemented process. As an alternative example, the processes may be encoded as processor-executable instructions and transmitted over a communication medium.
Fig. 5 is a diagram illustrating an example data flow of a process (580) for configuring access to a peripheral.
In the illustrated example, step 581 occurs first. At step 581, in some examples, the stored configuration information is read. In some examples, the stored configuration information is associated with: the plurality of independent execution environments are mapped to the plurality of peripheral devices such that a peripheral device of the plurality of peripheral devices has a corresponding independent execution environment of the plurality of independent execution environments.
As shown, step 582 occurs next in some examples. At step 582, the configurable route is programmed based on the configuration information. For example, the configurable routing may include a configurable interrupt routing table, a configurable data management access routing table, a plurality of configuration registers, and the like. As shown, step 583 occurs next in some examples. At step 583, an interrupt from a peripheral device may be received. As shown, step 584 next occurs in some examples. At step 584, in some examples, the interrupt is routed to the corresponding independent execution environment based on configurable routing (e.g., a configurable interrupt routing table).
The process may then proceed to a return block where other processing may resume.
Conclusion
While the above detailed description describes certain examples of the technology, and describes the best mode contemplated, no matter how detailed the above appears in text, the technology can be practiced in many ways. In practice, the details may vary, but still be covered by the techniques described herein. As noted above, particular terminology used when describing certain features or aspects of the technology should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects associated with the terminology. In general, the terms used in the following claims should not be construed to limit the technology to the specific examples disclosed herein, unless the detailed description explicitly defines such terms. Accordingly, the actual scope of the technology encompasses not only the disclosed examples, but also all equivalent ways of practicing or implementing the technology.
- 上一篇:一种医用注射器针头装配设备
- 下一篇:用于减少软件应用的启动时间的系统和方法