Enforcing unique page table permissions with shared page tables
阅读说明:本技术 以共享页表实施独特页表权限 (Enforcing unique page table permissions with shared page tables ) 是由 戴维·汉森 阿肖克·拉吉 于 2020-02-27 设计创作,主要内容包括:本公开涉及以共享页表实施独特页表权限。一种处理器包括处理器核心;用于存储第一权限过滤器的过滤器寄存器;以及耦合到处理器核心、过滤器寄存器和与第一权限过滤器相关联的第一外围设备的存储器管理单元(MMU),其中该MMU包括逻辑电路来管理共享页表,该共享页表包括与处理器核心和第一外围设备相对应的条目,其中逻辑电路用于:接收来自第一外围设备的对第一存储器页的存储器访问请求;确定第一条目的权限比特的集合是否匹配第一权限过滤器的比特的第一组合;如果权限比特的集合匹配第一权限过滤器的比特的第一组合,则准许存储器访问请求;并且如果权限比特的集合不匹配比特的第一组合,则引起页故障。(The disclosure relates to enforcing unique page table permissions with shared page tables. A processor includes a processor core; a filter register for storing a first entitlement filter; and a Memory Management Unit (MMU) coupled to the processor core, the filter register, and a first peripheral associated with the first permission filter, wherein the MMU includes logic circuitry to manage a shared page table, the shared page table including entries corresponding to the processor core and the first peripheral, wherein the logic circuitry is to: receiving a memory access request from a first peripheral for a first memory page; determining whether the set of permission bits of the first entry matches a first combination of bits of the first permission filter; granting the memory access request if the set of permission bits matches a first combination of bits of the first permission filter; and if the set of permission bits does not match the first combination of bits, a page fault is caused.)
1. A processor, comprising:
a processor core;
a filter register for storing a first authority filter; and
a Memory Management Unit (MMU) coupled to the processor core, the filter register, and a first peripheral associated with the first permission filter, wherein the MMU includes logic circuitry to manage a shared page table including entries corresponding to the processor core and the first peripheral, wherein the logic circuitry is to:
receiving a memory access request from the first peripheral for a first memory page;
determining whether a set of permission bits of a first entry of the shared page table matches a first combination of bits of the first permission filter, wherein the first combination of bits of the first permission filter defines access permissions for the first peripheral device;
in response to the set of permission bits of the first entry matching a first combination of bits of the first permission filter, grant the memory access request; and is
Causing a page fault in response to the set of permission bits of the first entry not matching the first combination of bits of the first permission filter.
2. The processor of claim 1, wherein the set of permission bits of the first entry comprises one or more software bits defining access permissions to the first memory page.
3. The processor of claim 1, wherein the set of permission bits of the first entry comprises a first set of software bits and a second set of hardware bits, wherein the set of permission bits defines access permissions to the first memory page.
4. The processor of any of claims 1-3, wherein the filter register is to store a second permission filter associated with a second peripheral coupled to the MMU, wherein the logic is further to:
receiving a second memory access request from the second peripheral for the first memory page;
determining whether a set of rights bits of the first entry matches a second combination of bits of the second rights filter, wherein the second combination of bits defines access rights for the second peripheral, wherein the first combination of bits is different from the second combination of bits;
in response to the set of permission bits of the first entry matching a second combination of bits of the second permission filter, grant the second memory access request; and is
Causing a page fault in response to the set of permission bits of the first entry not matching a second combination of bits of the second permission filter.
5. The processor of any one of claims 1-3, wherein the logic circuitry is further to:
receiving a second memory access request from the processor core for the first memory page;
determining whether a set of permission bits of the first entry indicates access permissions of the processor core to the first memory page;
in response to the set of permission bits of the first entry indicating access permissions of the processor core to the first memory page, granting the second memory access request; and is
Causing a page fault in response to the set of permission bits of the first entry indicating that the processor core does not have access permission to the first memory page.
6. The processor of any one of claims 1-3, wherein the logic circuitry comprises:
a first comparator to compare a first combination of bits of the first permission filter with a set of permission bits of a first entry of the shared page table and to provide an output comprising an intermediate set of bits that the first combination of bits and the set of permission bits have in common; and
a second comparator to compare the intermediate set of bits of the output of the first comparator with the first combination of bits of the first permission filter, wherein the memory access request is granted if the intermediate set of bits of the output of the first comparator matches the first combination of bits of the first permission filter.
7. The processor of any one of claims 1-3, wherein the logic circuitry comprises a comparator to compare a first bit of a combination of bits of the first permission filter with a corresponding second bit of the set of permission bits of the first entry, wherein the memory access request is granted if the first bit matches the corresponding second bit.
8. The processor of any of claims 1-3, further comprising a root entry table, wherein the root entry table maps to a context table, wherein the context table comprises a first context entry in which the first peripheral device is associated with the first permission filter.
9. The processor of claim 8, wherein the first peripheral and second peripheral are both associated with the first permission filter in the first context entry.
10. A system, comprising:
a memory to store a shared page table;
a first peripheral coupled to the memory;
a second peripheral coupled to the memory; and
a Memory Management Unit (MMU) coupled to the memory, the first peripheral, and the second peripheral, wherein the MMU comprises:
a first permission filter, wherein the first permission filter comprises a first combination of bits defining access permissions of the first peripheral to a first memory page associated with a first entry of the shared page table; and
a second permission filter, wherein the second permission filter includes a second combination of bits defining access permissions of the second peripheral to the first memory page associated with the first entry of the shared page table, wherein the first combination of bits is different from the second combination of bits.
11. The system of claim 10, wherein the MMU further comprises logic to:
receiving a memory access request from the first peripheral for the first memory page, wherein the first memory page is associated with a first entry of the shared page table;
determining whether the set of permission bits of the first entry matches a first combination of bits of the first permission filter;
in response to the set of permission bits of the first entry matching a first combination of bits of the first permission filter, grant the memory access request; and is
Causing a page fault in response to the set of permission bits of the first entry not matching the first combination of bits of the first permission filter.
12. The system of claim 11, wherein the set of permission bits of the first entry comprises: a first set of software bits defining access rights of the first peripheral device to the first memory page and access rights of the second peripheral device to the first memory page, and a second set of hardware bits defining access rights of a legacy device to the first memory page.
13. The system of claim 11, wherein the logic circuitry is further to:
receiving a second memory access request from the second peripheral for the first memory page;
determining whether the set of permission bits of the first entry matches a second combination of bits of the second permission filter;
in response to the set of permission bits of the first entry matching a second combination of bits of the second permission filter, grant the memory access request; and is
Causing a page fault in response to the set of permission bits of the first entry not matching a second combination of bits of the second permission filter.
14. The system of any of claims 10-13, wherein a first software bit of the first entry indicates write permission of the first peripheral to the first memory page and a second software bit indicates write permission of the second peripheral to the first memory page.
15. The system of any of claims 11-13, wherein the logic circuitry further comprises logic to update the shared page table to indicate that the first permission filter has been applied to the first entry.
16. The system of any of claims 11-13, wherein the logic circuitry is further to:
receiving a second memory access request from a Central Processing Unit (CPU) for the first memory page;
determining whether the second set of hardware bits of the first entry indicates that the CPU is permitted to access the first memory page;
responsive to the second set of hardware bits indicating that the CPU is allowed to access the first memory page, grant the second memory access request; and is
Causing a page fault in response to the second set of hardware bits indicating that the CPU is not allowed to access the first memory page.
17. A method of operation, comprising:
receiving a memory access request for a first memory page from a first device associated with a first permission filter, wherein the first permission filter comprises a first combination of bits defining access permissions of the first device for the first memory page;
determining whether a set of permission bits of a first entry of a page table matches a first combination of bits of the first permission filter, wherein the page table is shared by the first device and a second device;
in response to the set of permission bits of the first entry matching a first combination of bits of the first permission filter, grant the memory access request; and is
Causing a page fault in response to the set of permission bits of the first entry not matching the first combination of bits of the first permission filter.
18. The method of claim 17, further comprising:
receiving a second memory access request to the first memory page from a second device associated with a second permission filter, wherein the second permission filter includes a second combination of bits defining access permissions of the second device to the first memory page;
determining whether the set of permission bits of the first entry matches a second combination of bits of the second permission filter;
in response to the set of permission bits of the first entry matching a second combination of bits of the second permission filter, grant the memory access request; and is
Causing a page fault in response to the set of permission bits of the first entry not matching a second combination of bits of the second permission filter.
19. The method of claim 17, wherein applying the first permission filter to the set of permission bits of the first entry of the page table comprises:
comparing a first combination of bits of the first permission filter to a set of permission bits of a first entry of the page table to provide an output comprising a set of bits of: the set of bits being common to a first combination of bits of the first permission filter and a set of permission bits of a first entry of the page table;
comparing the output set of bits to the first combination of bits of the first authority filter to determine whether the output set of bits and the first combination of bits of the first authority filter match; and is
In response to determining that the output matches a first combination of bits of the first permission filter, grant the memory access request to the first memory page.
20. The method of claim 17, further comprising: updating a first entry of the page table to indicate that the first permission filter has been applied to the first entry of the page table.
21. An apparatus comprising means for performing the method of any of claims 17-20.
22. An apparatus comprising a processor configured to perform the method of any one of claims 17-20.
Technical Field
The present disclosure relates to computer systems; and more particularly to memory access permissions of computer systems.
Background
A computer system may use a process called paging to map a virtual contiguous address space used by an application or process to physical addresses of memory where data is stored. Paging uses a data structure called a page table (page table) to map from a virtual address space to a physical address space. Devices peripheral to a Central Processing Unit (CPU) of a computer system may directly access memory without communicating with the CPU. These peripherals may also use page tables to map from virtual address space to physical address space in memory. The CPU may access the memory using a Memory Management Unit (MMU). The peripheral devices may use an input/output memory management unit (IOMMU) to directly access the memory of the computer system.
Disclosure of Invention
According to an aspect of the present disclosure, there is provided a processor including: a processor core; a filter register for storing a first authority filter; and a Memory Management Unit (MMU) coupled to the processor core, the filter register, and a first peripheral associated with the first permission filter, wherein the MMU includes logic circuitry to manage a shared page table including entries corresponding to the processor core and the first peripheral, wherein the logic circuitry is to: receiving a memory access request from the first peripheral for a first memory page; determining whether a set of permission bits of a first entry of the shared page table matches a first combination of bits of the first permission filter, wherein the first combination of bits of the first permission filter defines access permissions for the first peripheral device; in response to the set of permission bits of the first entry matching a first combination of bits of the first permission filter, grant the memory access request; and causing a page fault in response to the set of permission bits of the first entry not matching the first combination of bits of the first permission filter.
According to another aspect of the present disclosure, there is provided a system comprising: a memory to store a shared page table; a first peripheral coupled to the memory; a second peripheral coupled to the memory; and a Memory Management Unit (MMU) coupled to the memory, the first peripheral, and the second peripheral, wherein the MMU comprises: a first permission filter, wherein the first permission filter comprises a first combination of bits defining access permissions of the first peripheral to a first memory page associated with a first entry of the shared page table; and a second permission filter, wherein the second permission filter includes a second combination of bits defining access permissions of the second peripheral to the first memory page associated with the first entry of the shared page table, wherein the first combination of bits is different from the second combination of bits.
According to yet another aspect of the present disclosure, there is provided a method of operation comprising: receiving a memory access request for a first memory page from a first device associated with a first permission filter, wherein the first permission filter comprises a first combination of bits defining access permissions of the first device for the first memory page; determining whether a set of permission bits of a first entry of a page table matches a first combination of bits of the first permission filter, wherein the page table is shared by the first device and a second device; in response to the set of permission bits of the first entry matching a first combination of bits of the first permission filter, grant the memory access request; and causing a page fault in response to the set of permission bits of the first entry not matching the first combination of bits of the first permission filter.
Drawings
FIG. 1 is a system diagram illustrating a system on a chip for using a permission filter to provide unique access permissions to memory to devices using shared page tables, according to one implementation.
FIG. 2 is a block diagram illustrating a logical process flow for applying permission filters associated with different devices to enable unique access permissions to a memory, according to one implementation.
FIG. 3A is an example permission filter register storing several different permission filters according to one implementation.
FIG. 3B is an example page table illustrating a number of page table entries.
FIG. 3C is an example logic circuit for applying a permission filter to a page table entry according to one implementation.
FIG. 4A is a flow diagram illustrating an example method for using a permission filter to provide unique access permissions to a device using a shared page table, according to one implementation.
FIG. 4B is a detailed flow diagram illustrating an example method for using a permission filter to provide unique access permissions to a device using a shared page table, according to one implementation.
FIG. 5A is a block diagram illustrating an in-order pipeline and a register renaming stage, out-of-order issue/execution pipeline, according to one implementation.
Fig. 5B is a block diagram illustrating a micro-architecture of a processor or integrated circuit that may implement hardware support for a multi-key encryption engine according to an implementation of the present disclosure.
FIG. 6 illustrates a block diagram of a micro-architecture of a processor or integrated circuit implementing hardware support for a multi-key encryption engine, according to an implementation of the present disclosure.
FIG. 7 is a block diagram of a computer system according to one implementation.
FIG. 8 is a block diagram of a computer system according to another implementation.
FIG. 9 is a block diagram of a system-on-chip in accordance with one implementation.
FIG. 10 illustrates another implementation of a block diagram of a computing system.
FIG. 11 illustrates another implementation of a block diagram of a computing system.
Detailed Description
Peripheral devices of a computer system may be able to directly access the memory of the system. To access memory directly, the peripheral may need to consult a page table to map to a physical address of memory. A page table may refer to any memory translation structure such as a hash table, tree, table, and so forth. Currently, if a device is accessing memory using the same page table as the CPU, the device must have the same access rights, or "view" (view), to the memory as the CPU. This means that if the CPU has access to both reads and writes of pages of memory, there are also devices that use the same page table. To address this problem, each device may use a separate page table to allow different memory access rights. However, using separate page tables is wasteful because there are two copies of the same structure in the system. Therefore, it would be advantageous for different devices to use a shared page table to access memory and to define different access rights for devices sharing the same page table.
Disclosed are systems and methods for enforcing unique page table permissions with shared page tables. For each device, or CPU, accessing the memory of the system, a separate filter may be used to determine the memory access rights of each device or CPU to a page of memory from a single page table. A memory access permission filter may be associated with a device or CPU to allow the device or CPU to have its own particular view of memory. The filter may include one or more bits, referred to as "software bits," that define which bits of the page table entry indicate permissions for a particular device or CPU.
For example, in one implementation, the first bit may be a bit that allows write permission for the first device. If the first bit of the page table entry is set, then the first device has write permission, but if the first bit is not set, then the first device does not have write permission. The CPU may use a second bit that identifies the authority of the CPU. Alternatively, the CPU may not use such a filter, but only use bits read by hardware (e.g., conventional dirty/write/current bits). Thus, the CPU may ignore the first bit, or other software bit, in determining the authority of the CPU. In this way, the first device may have one view of the memory, i.e. write permission, while the CPU has another view of the memory when the first bit is set.
Furthermore, with additional bits or combinations of bits to determine access rights of the device and CPU, the unique rights may be extended to any number of additional devices or CPUs. For example, a first device may have write permission if a first bit is set, a second device may have write permission if a second bit is set, and a third device may have write permission if a third bit is set, and so on.
FIG. 1 is a block diagram illustrating a
IOMMU 120 may include one or
The CPU112 may include one or more processor cores. The
The filter registers 124A-B may store one or more entitlement filters associated with one or more of the devices 130A-B and the
The filter logic 126A-B may include logic to compare the permission filter to the permission bits of the page table entry and provide an output consisting of the same bits of the permission filter and the page table entry (i.e., a logical AND of the permission filter and the page table entry). Once the output from this comparison is determined, the output can be compared to a rights filter to determine if the device or CPU has the appropriate rights. If the output and the rights filter are the same, the device or CPU has the appropriate rights. If the output and the permission filter are different, the device or CPU does not have the appropriate permissions and the memory access request will cause a page fault and fail. After the filter is applied to the page table entries, the filter logic 126A-B may update the page table entries. In one example, if the request fails, the filter logic may update the page table entry to provide the appropriate permissions to the device or CPU. The page table entry may be updated in the following cases: there is preferably a notification to allow memory optimization, media wear optimization, etc. before providing access to the device or CPU. In addition, the page table may be updated to indicate that a permission filter is applied for a device or CPU. For example, if a permission filter for a first device is used, the page table may be updated to prevent a second device from accessing the same memory. Although depicted as part of the
Devices 130A-B may be coupled to
The page table 142 may refer to a memory translation data structure such as a hash table, a data tree, or any other data structure. The page table 142 may map consecutive virtual memory addresses used by an application or process to addresses in physical memory. The page table 142 may include a plurality of page table entries. Each page table entry may correspond to a mapping between a virtual page of memory and a physical page of memory. Each page of memory may include several smaller blocks of memory. When a process executing on a device or CPU requests access to memory, the process may request access to memory using a virtual address, which must be translated into a physical address. The
FIG. 2 is a flow diagram illustrating a logical process flow 200 of applying a permission filter to one or more devices and CPUs using shared page tables. Device a 210, device B214, and
The filter logic 222 may be similar or identical to the logic of the filter logic circuits 126A-B described with reference to FIG. 1. The filter logic 222 may apply different permission filters to the page table entries of the page tables 220 used by device a 210, device B214, and
In one implementation, notification before the device or CPU first writes to a page may be preferable (e.g., for memory optimization or to optimize media wear or write bandwidth). Initially, the permission bits of the page table entry may not allow the device or CPU to write to the page. However, after applying the filter and the write request fails, the filter logic may update the page table entry permission bits to give the device or CPU write permission to the page. For example, if the software bit "X" of
In one implementation, each device or CPU may have an assigned bit (which the associated filter will include). If the assigned bit is set in the page table entry, the device or CPU will have write permission to the page of memory associated with that page table entry. In another implementation, a device or CPU may be assigned a combination of bits that must be set in a page table entry to allow write permission for the device or CPU. In another implementation, more than one device or CPU may be assigned the same rights filter and thus be assigned the same rights. The MMU or IOMMU may include a root entry table that maps I/O devices to specified domains based on device IDs, I/O buses associated with the devices, and so on. A domain may be associated with a context table that provides devices or CPUs access to page tables associated with each device or CPU. The context table may include one or more context entries that provide each device or CPU access to a particular page table. In one implementation, the context entry may also define a permission filter to be associated with the device or CPU of the context entry. The permission filter may then be applied to the page table entry when the device or CPU requests access to a page of memory. Multiple devices and/or CPUs may be associated with a single context entry and multiple devices and/or CPUs may be associated with a single permission filter within a context entry.
FIG. 3A is an example filter register storing several entitlement filters. Fig. 3A depicts 7 different filters, each using a different combination of three software bits (XYZ) along with 3 hardware bits (DWP-Dirty/Write/Present). The filter register may store any number of filters and is not limited by the depiction of fig. 3A. Each filter includes a unique combination of three software bits, which in this example would allow seven different devices and/or CPUs to have independent views of memory. This scheme can be extended to an arbitrarily large number of bits and thus to an arbitrarily large number of independent views of the memory.
As an example, filter 1 may be associated with a device. Whenever the device requests a write to a page of memory, the page table entry corresponding to that page of memory will be retrieved. If the "X" permission bit of the page table entry is set, the device has permission to write to the page of memory. However, if the "X" permission bit is not set, the device will not have write permission to that page of memory. The same procedure applies to each filter. Furthermore, multiple devices and/or CPUs may be assigned the same filter if they require the same view of memory.
FIG. 3B is an example page table that includes several page table entries. As shown, each page table entry may include a physical address ([ ADDR ]) of a page of memory, and a set of bits that define memory access rights to the page of memory. The set of software bits of the page table entry may be set by software to provide access to the appropriate device and CPU. The set bit may be associated with a device or CPU that requires write permission to a page of memory, while other bits may not be set to prevent other devices or CPUs from writing to the page of memory.
For example, entry 1 has the "X" software bit set, while the "Y" and "Z" software bits are not set. Thus, any device or CPU associated with filter 1 of FIG. 3A (i.e., the "X" bit is set, but the others are not) will have permission to write to that page of memory. However, the device or CPU associated with the other filters of FIG. 3A may not have permission to write to the page of memory.
FIG. 3C is example logic circuitry for applying a permissions filter to a page table entry. The logic circuit IS depicted as a logical AND followed by an IS EQUAL comparator. The alternate depiction may be a logical AND for each bit of the input, followed by an ISEQUAL comparator. The initial inputs to the filter logic are the authority filter, e.g., from FIG. 3A, and the page table entry, e.g., from FIG. 3B. The initial inputs are subjected to a logical AND operation, meaning that all bits in the same location that are set in both inputs will also be set in the outputs. After the logical AND operation, the output of the logical AND operation AND the initially input authority filter are compared to determine if they are equal (i.e., if the bit set in one is also set in the other, AND the bit not set in one is not set in the other). If the result of the comparison is that the output and the rights filter are equal, then the device or CPU associated with that filter has the right to write to that page of memory.
For example, if filter 2 of fig. 3A ("_ Y _ DWP") AND entry 2 of fig. 3B ("[ ADDR ] _ Y _ DWP") are inputs to the filter logic circuit, the output of the AND operation will be "_ Y _ DWP" because the "Y" bit is set in both AND the "DWP" bit is set in both. Then to "equal? The inputs to the operation will be "_ Y _ DWP" (initial input/filter 1) AND "_ Y _ DWP" (output of logical AND). Both inputs have the same bit set and so the result will be that write permission is allowed.
In another example, if filter 7 of FIG. 3A ("XYZDWP") AND entry 1 of FIG. 3B ("ADDR ] X __ DWP") were the initial inputs to the filter logic circuit, the output of the AND operation would be the "X __ DWP" because the "X" bit AND the "DWP" bit are set in both. However, the "Y" and "Z" bits are set in filter 7, but not set in entry 1. Next, to "equal? The inputs to the operation will be the initial filter 7 "XYZDWP" AND the output of the logical AND operation ("X __ DWP"). "equal? "the result of the operation will result in a failure of the write request because the inputs are not the same; the "Y" AND "Z" bits are set in the filter 7, but are not set in the output of the logical AND operation. Thus, the result will be that write permission is not allowed.
FIG. 4A is an example flow diagram of a
At
At
At
FIG. 4B is an example flow diagram of a method 420 of using a permission filter to provide independent permissions to memory to devices and CPUs using shared page tables. At block 422, a Memory Management Unit (MMU) may receive a direct memory access request for a page of memory from a peripheral or CPU. The MMU may be an input/output MMU that controls memory accesses by peripheral devices or may be an MMU that controls CPU accesses to memory. The CPU or peripheral may request direct memory access through the MMU or IOMMU.
At block 424, the IOMMU may retrieve page table entries corresponding to pages of memory to be accessed by the peripheral or CPU. Retrieving page table entries may include page walks in which the IOMMU searches page tables for page table entries associated with virtual addresses provided by processes executing on a peripheral or CPU. Alternatively, if the page table entry is stored in a Translation Lookaside Buffer (TLB), the page table entry may be retrieved from the TLB.
At block 426, the IOMMU may identify a permission filter associated with the peripheral or CPU. The privilege filter associated with the device or CPU may be determined by consulting a context entry in the IOMMU or MMU for the peripheral or CPU. The context entry may map the peripheral or CPU to one or more page tables to be used by the peripheral or CPU. The context entry may also associate a peripheral or CPU with its permission filter to be used to access memory through the page table.
At block 428, the IOMMU may apply a permission filter to the page table entry. Applying the permission filter to the page table entry may include comparing the permission filter to the page table entry to provide an output consisting of bits set in both the permission filter AND the page table entry (i.e., a logical AND operation on each respective bit). The output of the logical AND operation AND the original entitlement filter may be compared to determine if they match, or in other words, are equal.
At block 430, the IOMMU may determine whether the peripheral or CPU has permission to write to a page of memory. The output of the comparison at
At block 432, the IOMMU may update the page table entries to provide the appropriate permissions to the peripheral or CPU to allow the peripheral or CPU to write to the pages of memory. This step may be optional and may be set to occur for a particular device or CPU in specified conditions. For example, it may be desirable to trigger a notification before access is allowed. The entry of the page table may initially deny access to the page, but then update the entry to provide access once the filter is first applied. Before allowing the device or CPU to access a page of memory, the notification may allow the system to do any number of housekeeping tasks, such as optimization for media wear. In another example, it may be desirable to update the page table after a first device or CPU has accessed a page of memory to deny access to certain devices or CPUs.
FIG. 5 is a block diagram illustrating the micro-architecture of a
The
The
Generally, architectural registers are visible from the outside of the processor or from the perspective of the programmer. The registers are not limited to any known particular type of circuitry. Various different types of registers are suitable so long as they are capable of storing and providing data as described herein. Examples of suitable registers include, but are not limited to, dedicated physical registers, dynamically allocated physical registers using register renaming, a combination of dedicated and dynamically allocated physical registers, and so forth.
While some implementations may include several execution units dedicated to a particular function or set of functions, other implementations may include only one execution unit or multiple execution units that all perform all functions. Scheduler unit(s) 556, physical register set(s)
The set of memory access units 564 is coupled to a
In one implementation, the
The
It should be appreciated that a core may support multithreading (performing two or more parallel sets of operations or threads), and may support multithreading in a variety of ways, including time sliced multithreading, simultaneous multithreading in which a single physical core provides a logical core for each thread for which the physical core is multithreading at the same time, or a combination of these (e.g., time sliced fetch and decode followed by simultaneous multithreading, such as, for example, a time sliced fetch and decode followed by simultaneous multithreadingAs in Hyperthreading technology).
Although register renaming is described in the context of out-of-order execution, it should be understood that register renaming may be used in an in-order architecture. While the illustrated implementation of the processor also includes separate instruction and data cache units and a shared L2 cache unit, alternative implementations may have a single internal cache, such as a level 1 (L1) internal cache, or multiple levels of internal cache, for both instructions and data. In some implementations, a system may include a combination of internal caches and external caches that are external to the core and/or processor. Alternatively, all caches may be external to the core and/or processor.
FIG. 5B is a block diagram illustrating an in-order pipeline and a register renaming stage, out-of-order issue/execution pipeline implemented by the
FIG. 6 illustrates a block diagram of a micro-architecture of a processor 600, the processor 600 including logic circuitry for a processor or integrated circuit implementing hardware support with shared page tables implementing exclusive page table permissions, according to an implementation of the present disclosure. In some implementations, an instruction according to one implementation may be implemented to operate on data elements having sizes of bytes, words, doublewords, quadwords, and so forth, as well as data types such as single and double precision integer and floating point data types. In one implementation, the in-order front end 601 is part of the processor 600 as follows: this portion takes the instructions to be executed and prepares them for later use in the processor pipeline. Implementations of page additions and content copying may be implemented in the processor 600.
The front end 601 may comprise several units. In one implementation, the instruction prefetcher 616 fetches instructions from memory and feeds them to the instruction decoder 618, which in turn decodes or interprets the instructions. For example, in one implementation, a decoder decodes a received instruction into one or more operations called "microinstructions" or "micro-operations" (also called micro-ops or uops) that a machine is capable of performing. In other implementations, the decoder parses the instruction into an opcode and corresponding data and control fields that are used by the micro-architecture to perform operations according to one implementation. In one implementation, trace cache 630 takes decoded uops and assembles them into program ordered sequences or traces in
Some instructions are converted into a single micro-op, while others require several micro-ops to complete the entire operation. In one implementation, if more than four micro-ops are needed to complete an instruction, the decoder 618 accesses the microcode ROM632 to perform the instruction. For one implementation, instructions may be decoded into a small number of micro-ops for processing at instruction decoder 618. In another implementation, instructions may be stored within the microcode ROM632 if several micro-ops are needed to complete an operation. Trace cache 630 references entry point Programmable Logic Arrays (PLAs) to determine the correct micro-instruction pointer for reading a micro-code sequence from micro-code ROM632 to complete one or more instructions according to one implementation. After the microcode ROM632 completes the micro-op ordering for an instruction, the front end 601 of the machine continues to begin fetching micro-ops from the trace cache 630.
The out-of-
The register sets 608, 610 are located between the schedulers 602, 604, 606 and the
The
In one implementation, the ALU operations go to high-speed ALU execution units 616, 618. The fast ALUs 616, 618 of one implementation may perform fast operations with an effective latency of half a clock cycle. For one implementation, most complex integer operations go to the
In one implementation, the uop schedulers 602, 604, 606 dispatch dependent operations before the parent load completes execution. Since uops are speculatively scheduled and executed in processor 600, processor 600 also includes logic to handle memory misses. If a data load misses in the data cache, there may be dependent operations in progress in the pipeline that leave the scheduler with temporarily incorrect data. The replay mechanism tracks and re-executes instructions that use incorrect data. Only dependent operations need to be replayed while independent operations are allowed to complete. The scheduler and replay mechanism of one implementation of the processor are also designed to capture instruction sequences for text string comparison operations.
The term "register" may refer to an on-board processor storage location that is used as part of an instruction to identify an operand. In other words, the registers may be those that are accessible from outside the processor (from the programmer's perspective). However, the registers of an implementation should not be limited in meaning to a particular type of circuit. Rather, the registers of an implementation are capable of storing and providing data, and performing the functions described herein. The registers described herein may be implemented by circuitry within a processor using any number of different techniques, such as dedicated physical registers, dynamically allocated physical registers using register renaming, a combination of dedicated and dynamically allocated physical registers, and so forth. In one implementation, the integer register stores 32-bit integer data. The register set of one implementation also includes eight multimedia SIMD registers for packed data.
For the purposes of this discussion, a register is understood to be a data register designed to hold packed data, such as a 64-bit wide MMX in a microprocessor enabled with MMX technology from Intel corporation of Santa Clara, CalifTMA register (also referred to as a "mm" register in some instances). These MMX registers, available in both integer and floating point form, may operate in conjunction with packed data elements accompanying SIMD and SSE instructions. Similarly, 128-bit wide XMM registers relating to SSE2, SSE3, SSE4, or above (collectively "SSEx") technologies may also be used to hold such packed data operands. In one implementation, the registers do not need to distinguish between the two data types when storing packed data and integer data. In one implementation, the integer and floating point are contained in the same set of registers or in different sets of registers. Further, in one implementation, the floating point and integer data may be stored in different registers or in the same register.
Implementations may be implemented in many different system types. Referring now to FIG. 7, a block diagram of a
Processors 770 and 780 are shown including integrated
Processors 770, 780 may exchange information with a chipset 790 via individual
Chipset 790 may be coupled to a
Referring now to FIG. 8, a block diagram of a third system 800 that can implement hardware support for implementing unique page table permissions with shared page tables is shown, according to an implementation of the present disclosure. Like elements in fig. 7 and 8 bear like reference numerals, and certain aspects of fig. 8 have been omitted from fig. 7 to avoid obscuring other aspects of fig. 7.
FIG. 8 illustrates that processors 870, 880 may include integrated memory and I/O control logic ("CL") 872 and 892, respectively. For at least one implementation, the CL 872, 882 may include, for example, an integrated memory controller unit as described herein. Additionally, CL 872, 892 may also include I/O control logic. FIG. 8 illustrates that memories 832, 834 are coupled to CL 872, 892, and that I/O devices 814 are also coupled to control logic 872, 892. Legacy I/O devices 815 are coupled to chipset 890. In one implementation, the CL 872 and 892 may include filter logic as described above to apply privilege filters associated with the I/O device 814 to enforce unique page table privileges for the I/O device 814. In another implementation, chipset 890 may include filter logic as described above.
Fig. 9 is an exemplary system on a chip (SoC)900 that may include one or more of cores 902a … 902N that may implement hardware support for implementing unique page table permissions with shared page tables. Other system designs and configurations known in the art for laptop computers, desktop computers, handheld PCs, personal digital assistants, engineering workstations, servers, network appliances, network hubs, switches, embedded processors, Digital Signal Processors (DSPs), graphics appliances, video game appliances, set-top boxes, microcontrollers, cellular telephones, portable media players, handheld devices, and various other electronic devices are also suitable. In general, many types of systems or electronic devices capable of containing the processors and/or other execution logic disclosed herein are generally suitable.
Within the exemplary SoC 900 of fig. 9, the dashed box is a feature on a more advanced SoC. The interconnect unit(s) 902 may be coupled to: an application processor 917 that includes a set of one or more cores 902A-N, and shared cache unit(s) 906; a system agent unit 910; bus controller unit(s) 916; an integrated memory controller unit(s) 914; a set of one or more media processors 920, which may include integrated graphics logic 908, an image processor 924 for providing still and/or video camera functionality, an audio processor 926 for providing hardware audio acceleration, and a video processor 928 for providing video encode/decode acceleration; a Static Random Access Memory (SRAM) unit 930; a Direct Memory Access (DMA) unit 932; and a display unit 940 for coupling to one or more external displays.
Turning next to fig. 10, an implementation of a system on a chip (SoC) design that can implement hardware support for enforcing unique page table permissions with shared page tables is described, according to an implementation of the present disclosure. As an illustrative example, SoC1000 is included in a User Equipment (UE). In one implementation, a UE refers to any device to be used by an end user to communicate, such as a handheld phone, a smart phone, a tablet, an ultra-thin notebook, a notebook with a broadband adapter, or any other similar communication device. The UE may connect to a base station or node, which may correspond in nature to a Mobile Station (MS) in a GSM network. Implementations of page addition and content copying may be implemented in
Here, SoC1000 includes 2 cores — 1006 and 1007. Similar to the discussion above,
In one implementation,
Further, the system illustrates peripherals for communication, e.g.
Module 1070,FIG. 11 illustrates a diagrammatic representation of a machine in the exemplary form of a computing system 1100 with a set of instructions within the computing system 1100 for causing the machine to implement hardware support for enforcing unique page table permissions with shared page tables in accordance with any one or more of the methodologies discussed herein. In alternative implementations, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the internet. The machine may operate in the capacity of a server or a client device in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a Personal Computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Additionally, while only a single machine is illustrated, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. Implementations of page addition and content copying may be implemented in the computing system 1100.
Computing system 1100 includes a
In one implementation, the
The computing system 1100 may also include a
The
The computer-
The following examples pertain to further implementations.
Example 1 is a processor, comprising: a processor core; a filter register for storing a first authority filter; and a Memory Management Unit (MMU) coupled to the processor core, the filter register, and a first peripheral associated with the first permission filter, wherein the MMU includes logic circuitry to manage a shared page table including entries corresponding to the processor core and the first peripheral, wherein the logic circuitry is to: receiving a memory access request from the first peripheral for a first memory page; determining whether a set of permission bits of a first entry of the shared page table matches a first combination of bits of the first permission filter, wherein the first combination of bits of the first permission filter defines access permissions for the first peripheral device; in response to the set of permission bits of the first entry matching a first combination of bits of the first permission filter, grant the memory access request; and causing a page fault in response to the set of permission bits of the first entry not matching the first combination of bits of the first permission filter.
In example 2, the subject matter of example 1, wherein the set of permission bits of the first entry comprises one or more software bits defining access permissions for the first memory page.
In example 3, the subject matter of any of examples 1-2, wherein the set of permission bits of the first entry comprises a first set of software bits and a second set of hardware bits, wherein the set of permission bits defines access permissions for the first memory page.
In example 4, the subject matter of any of examples 1-3, wherein the filter register is to store a second permission filter associated with a second peripheral coupled to the MMU, wherein the logic is further to: receiving a second memory access request from the second peripheral for the first memory page; determining whether a set of rights bits of the first entry matches a second combination of bits of the second rights filter, wherein the second combination of bits defines access rights for the second peripheral, wherein the first combination of bits is different from the second combination of bits; in response to the set of permission bits of the first entry matching a second combination of bits of the second permission filter, the second memory access request; and causing a page fault in response to the set of permission bits of the first entry not matching a second combination of bits of the second permission filter.
In example 5, the subject matter of any of examples 1-4, wherein the logic circuitry is further to: receiving a second memory access request from the processor core for the first memory page; determining whether a set of permission bits of the first entry indicates access permissions of the processor core to the first memory page; in response to the set of permission bits of the first entry indicating access permissions of the processor core to the first memory page, granting the second memory access request; and causing a page fault in response to the set of permission bits of the first entry indicating that the processor core does not have access permission to the page of memory.
In example 6, the subject matter of any of examples 1-5, wherein the logic circuitry comprises: a first comparator to compare a first combination of bits of the first permission filter with a set of permission bits of a first entry of the shared page table and to provide an output comprising an intermediate set of bits that the first combination of bits and the set of permission bits have in common; and a second comparator to compare the intermediate set of bits of the output of the first comparator with the first combination of bits of the first permission filter, wherein the memory access request is granted if the intermediate set of bits of the output of the first comparator matches the first combination of bits of the first permission filter.
In example 7, the subject matter of any of examples 1-6, wherein the logic circuitry includes a comparator to compare a first bit of a combination of bits of the first permission filter with a corresponding second bit of the set of permission bits of the first entry, wherein the first memory access request is granted if the first bit matches the corresponding second bit.
In example 8, the subject matter of any of examples 1-7, further comprising a root entry table, wherein the root entry table maps to a context table, wherein the context table includes a first context entry in which the first peripheral device is associated with the first permission filter.
In example 9, the subject matter of any of examples 1-8, wherein the first peripheral and second peripheral are both associated with the first permission filter in the first context entry.
Various implementations may have different combinations of the structural features described above. For example, all optional features of the processors and methods described above may also be implemented for the systems described herein and the specific details in the examples may be used anywhere in one or more implementations.
Example 10 is a system, comprising: a memory to store a shared page table; a first peripheral coupled to the memory; a second peripheral coupled to the memory; and a Memory Management Unit (MMU) coupled to the memory, the first peripheral, and the second peripheral, wherein the MMU comprises: a first permission filter, wherein the first permission filter comprises a first combination of bits defining access permissions of the first peripheral to a first memory page associated with a first entry of the shared page table; and a second permission filter, wherein the second permission filter includes a second combination of bits defining access permissions of the second peripheral to a first memory page associated with the first entry of the shared page table, wherein the first combination of bits is different from the second combination of bits.
In example 11, the subject matter of example 10, wherein the MMU further comprises logic to: receiving a memory access request from the first peripheral for the first memory page, wherein the first memory page is associated with a first entry of the shared page table; determining whether the set of permission bits of the first entry matches a first combination of bits of the first permission filter; in response to the set of permission bits of the first entry matching a first combination of bits of the first permission filter, grant the memory access request; and causing a page fault in response to the set of permission bits of the first entry not matching the first combination of bits of the first permission filter.
In example 12, the subject matter of any of examples 10-11, wherein the set of permission bits of the first entry includes a first set of software bits defining access permissions of the first peripheral device to the first memory page and access permissions of the second peripheral device to the first memory page, and a second set of hardware bits defining access permissions of legacy devices to the first memory page.
In example 13, the subject matter of any of examples 10-12, wherein the logic circuitry is further to: receiving a second memory access request from the second peripheral for the first memory page; determining whether the set of permission bits of the first entry matches a second combination of bits of the second permission filter; in response to the set of permission bits of the first entry matching a second combination of the second permission filter permission bits, grant the memory access request; and causing a page fault in response to the set of permission bits of the first entry not matching a second combination of bits of the second permission filter.
In example 14, the subject matter of any of examples 10-13, wherein a first software bit of the first entry indicates write permission of the first peripheral to the first memory page and a second software bit indicates write permission of the second peripheral to the first memory page.
In example 15, the subject matter of any of examples 10-14, wherein the logic circuitry further comprises logic to update a memory translation structure to indicate that the first permission filter has been applied to the first entry.
In example 16, the subject matter of any of examples 10-15, wherein the logic circuitry is further to: receiving a second memory access request from a Central Processing Unit (CPU) for the first memory page; determining whether the second set of hardware bits of the first entry indicates that the CPU is permitted to access the first memory page; responsive to the second set of hardware bits indicating that the CPU is allowed to access the first memory page, grant the second memory access request; and causing a page fault in response to the second set of hardware bits indicating that the CPU is not allowed to access the first memory page.
Various implementations may have different combinations of the structural features described above. For example, all optional features of the processors and methods described above may also be implemented for the systems described herein and the specific details in the examples may be used anywhere in one or more implementations.
Example 17 is a method, comprising: receiving a first memory access request to a first memory page from a first device associated with a first permission filter, wherein the first permission filter includes a first combination of bits defining access permissions of the first peripheral device to the first memory page; determining whether a set of permission bits of a first entry of a page table matches a first combination of bits of the first permission filter, wherein the page table is shared by the first device and a second device; in response to the set of permission bits of the first entry matching a first combination of bits of the first permission filter, grant the memory access request; and causing a page fault in response to the set of permission bits of the first entry not matching the first combination of bits of the first permission filter.
In example 18, the subject matter of example 17, further comprising: receiving a second memory access request to the first memory page from a second device associated with a second permission filter, wherein the second permission filter includes a second combination of bits defining access permissions of the second device to the first memory page; determining whether the set of permission bits of the first entry matches a second combination of bits of the second permission filter; in response to the set of permission bits of the first entry matching a second combination of bits of the second permission filter, grant the memory access request; and causing a page fault in response to the set of permission bits of the first entry not matching a second combination of bits of the second permission filter.
In example 19, the subject matter of any of examples 17-18, wherein applying the first permission filter to the set of permission bits of the first entry of the page table comprises: comparing a first combination of bits of the first permission filter to a set of permission bits of a first entry of the page table to provide an output comprising a set of bits of: the set of bits being common to a first combination of bits of the permission filter and a set of permission bits of a first entry of the page table; comparing the output set of bits to the first combination of bits of the first rights filter to determine whether the output set of bits and the first combination of bits of the first rights filter match; and in response to determining that the output and the permission filter match, grant the memory access request to the first memory page.
In example 20, the subject matter of any of examples 17-19, further comprising updating the first entry of the page table to indicate that the first permission filter has been applied to the first entry of the page table.
Example 21 is a system comprising means for performing a method as in any of examples 17-20.
Example 22 is at least one non-transitory machine-readable storage medium comprising a plurality of instructions that when executed implement a method as in any of examples 17-20 or implement an apparatus as in any of examples 17-20.
Example 23 is an apparatus comprising a processor configured to perform the method of any of examples 17 to-20.
While the present disclosure has been described with respect to a limited number of implementations, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present disclosure.
In the description herein, numerous specific details are set forth, such as examples of specific types of processor and system configurations, specific hardware structures, specific architectural and microarchitectural details, specific register configurations, specific instruction types, specific system components, specific measurements/heights, specific processor pipeline stages and operations, etc., in order to provide a thorough understanding of the present disclosure. However, it will be apparent to one skilled in the art that these specific details need not be employed to practice the present disclosure. In other instances, well known components or methods, such as specific and alternative processor architectures, specific logic circuits/code for described algorithms, specific firmware code, specific interconnect operation, specific logic configurations, specific manufacturing techniques and materials, specific compiler implementations, specific expression of algorithms in code, specific power down and gating techniques and logic, and other specific operational details of computer systems have not been described in detail in order to avoid unnecessarily obscuring the present disclosure.
Implementations are described with reference to determining validity of data in a cache line of a sector-based cache in a particular integrated circuit, such as a computing platform or microprocessor. Fruit of Chinese wolfberryThe present approach is also applicable to other types of integrated circuits and programmable logic devices. For example, the disclosed implementations are not limited to desktop computer systems or portable computers, e.g.UltrabooksTMAnd (4) a computer. And may also be used in other devices such as handheld devices, tablet devices, other thin notebooks, system on a chip (SoC) devices, and embedded applications. Some examples of handheld devices include cellular telephones, internet protocol devices, digital cameras, Personal Digital Assistants (PDAs), and handheld PCs. Embedded applications typically include microcontrollers, Digital Signal Processors (DSPs), systems on a chip, network computers (netpcs), set-top boxes, network hubs, Wide Area Network (WAN) switches, or any other system capable of executing the functions and operations taught below. It is described that the system may be any kind of computer or embedded system. The disclosed implementations are particularly useful for low end devices, such as wearable devices (e.g., watches), electronic implants, sensory and control infrastructure devices, controllers, supervisory control and data acquisition (SCADA) systems, and so forth. Additionally, the apparatus, methods, and systems described herein are not limited to physical computing devices, but may also relate to software optimization for energy conservation and efficiency. As will become readily apparent in the following description, the implementation of the methods, apparatus and systems described herein (whether in terms of hardware, firmware, software or a combination thereof) is crucial to the "green technology" future in balance with performance considerations.
Although implementations herein are described with reference to a processor, other implementations are applicable to other types of integrated circuits and logic devices. Similar techniques and teachings of implementations of the present disclosure may be applied to other types of circuits or semiconductor devices that may benefit from higher pipeline throughput and improved performance. The teachings of implementations of the present disclosure are applicable to any processor or machine that performs data manipulation. However, the present disclosure is not limited to processors or machines that perform 512-bit, 256-bit, 128-bit, 64-bit, 32-bit, or 16-bit data operations, but may be applied to any processor and machine in which manipulation or management of data is performed. Further, the description herein provides examples, and the accompanying drawings show various examples for the purpose of illustration. However, these examples should not be construed in a limiting sense as they are intended to provide only examples of implementations of the present disclosure and are not intended to provide an exhaustive list of all possible implementations of the present disclosure.
While the above examples describe instruction processing and distribution in the context of execution units and logic circuits, other implementations of the disclosure may be realized by data or instructions stored on a tangible medium readable by a machine, which when executed by the machine, cause the machine to perform functions consistent with at least one implementation of the disclosure. In one implementation, the functionality associated with implementations of the present disclosure is embodied in machine-executable instructions. The instructions may be used to cause a general-purpose or special-purpose processor programmed with the instructions to perform the steps of the disclosure. Implementations of the present disclosure may be provided as a computer program product or software which may include a machine or computer-readable medium having stored thereon instructions which may be used to program a computer (or other electronic devices) to perform one or more operations according to implementations of the present disclosure. Alternatively, the operations of implementations of the present disclosure may be performed by specific hardware components that contain fixed-function logic for performing the operations, or by any combination of programmed computer components and fixed-function hardware components.
Instructions for programming logic to perform implementations of the present disclosure may be stored within a memory in a system, such as a DRAM, cache, flash, or other storage. Further, the instructions may be distributed via a network or by way of other computer readable media. Thus, a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer) -without limitation, a floppy disk, an optical disk, a Compact-Disc Read-Only Memory (CD-ROM), and a magneto-optical disk, a Read-Only Memory (ROM), a Random Access Memory (RAM), an Erasable Programmable Read-Only Memory (EPROM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a magnetic or optical card, a flash Memory, or a tangible machine-readable storage device used in transmitting information over the Internet via an electrical, optical, acoustical or other form of propagated signal (e.g., a carrier wave, an infrared signal, a digital signal, etc.). Thus, a computer-readable medium includes any type of machine-readable medium suitable for storing or transmitting electronic instructions or information in a form readable by a machine (e.g., a computer).
A design may go through various stages, from creation to simulation to fabrication. Data representing a design may represent the design in a number of ways. First, as is useful in simulations, the hardware may be represented using a hardware description language or another functional description language. Furthermore, a circuit level model with logic and/or transistor gates may be generated at some stages of the design process. Furthermore, most designs, at some stage, reach a level of data representing the physical placement of various devices in the hardware model. In the case where conventional semiconductor fabrication techniques are used, the data representing the hardware model may be the data specifying the presence or absence of various features on different mask layers for masks used to produce the integrated circuit. In any representation of the design, the data may be stored in any form of a machine-readable medium. A memory or magnetic or optical storage such as a disk may be a machine readable medium for storing information transmitted via optical or electrical waves modulated or otherwise generated to transmit such information. When an electrical carrier wave indicating or carrying the code or design is transmitted, to the extent that copying, buffering, or re-transmission of the electrical signal is performed, a new copy is made. Thus, a communication provider or a network provider may store an article, at least temporarily, on a tangible machine-readable medium, such as information encoded in a carrier wave, which embodies techniques of implementations of the present disclosure.
A module, as used herein, refers to any combination of hardware, software, and/or firmware. As an example, a module includes hardware, such as a microcontroller, associated with a non-transitory medium to store code suitable for execution by the microcontroller. Thus, reference to a module in one implementation refers to hardware that is specifically configured to identify and/or execute code to be stored on non-transitory media. Furthermore, in another implementation, the use of modules refers to a non-transitory medium including code that is particularly adapted to be executed by a microcontroller to perform predetermined operations. As may be inferred, in another implementation, the term module (in this example) may refer to a combination of a microcontroller and non-transitory media. In general, module boundaries that are illustrated as separate are generally varying and may overlap. For example, the first and second modules may share hardware, software, firmware, or a combination thereof, while some separate hardware, software, or firmware may be retained. In one implementation, use of the term logic includes hardware, such as transistors, registers, or other hardware, such as programmable logic devices.
Use of the phrase "configured to" refers in one implementation to arranging, assembling, manufacturing, offering for sale, importing, and/or designing a device, hardware, logic, or element to perform a specified or determined task. In this example, a device or element thereof that is not operating is still "configured to" perform the specified task if it is designed, coupled, and/or interconnected to perform the specified task. As a purely illustrative example, a logic gate may provide a 0 or a 1 during operation. But logic gates "configured to" provide an enable signal to the clock do not include every possible logic gate that may provide a 1 or a 0. Instead, the logic gates are of a kind that are coupled in some way that the 1 or 0 output during operation enables the clock. It is again noted that use of the term "configured to" does not require operation, but instead focuses on the underlying state of the device, hardware, and/or element in which the device, hardware, and/or element is designed to perform a particular task when the device, hardware, and/or element is in operation.
Furthermore, use of the phrases "for," "capable of," and/or "operable to" in one implementation refers to a device, logic, hardware, and/or element that is designed in a manner that enables the use of the device, logic, hardware, and/or element in a specified manner. As above, it is noted that use of "for," "capable of," or "operable to" in one implementation refers to the potential state of a device, logic, hardware, and/or element, wherein the device, logic, hardware, and/or element is not operating, but is designed in a manner that enables use of the device in a specified manner.
A value, as used herein, includes any known representation of a number, state, logical state, or binary logical state. In general, the use of logic levels, logic values, or logical values is also referred to as 1's and 0's, which simply represents a binary logic state. For example, a 1 refers to a high logic level and a 0 refers to a low logic level. In one implementation, a memory cell, such as a transistor or flash memory cell, may be capable of holding a single logic value or multiple logic values. However, other representations of values in a computer system are used. For example, the decimal number ten may also be represented as a binary value of 1010 and a hexadecimal letter a. Accordingly, a value includes any representation of information that can be stored in a computer system.
Additionally, a state may be represented by a value or a portion of a value. As an example, a first value, e.g., a logical one, may represent a default or initial state, while a second value, e.g., a logical zero, may represent a non-default state. Further, the terms reset and set refer to default and updated values or states, respectively, in one implementation. For example, the default value may comprise a high logical value, i.e., reset, and the updated value may comprise a low logical value, i.e., set. Note that any combination of values may be utilized to represent any number of states.
The implementations of the methods, hardware, software, firmware or code set forth above may be implemented via instructions or code stored on a machine-accessible, machine-readable, computer-accessible or computer-readable medium which are executable by a processing element. A non-transitory machine-accessible/readable medium includes any mechanism that provides (i.e., stores and/or transmits) information in a form readable by a machine (e.g., a computer or electronic system). For example, non-transitory machine-accessible media include Random Access Memory (RAM), such as static RAM (sram) or dynamic RAM (dram); a ROM; a magnetic storage medium or an optical storage medium; a flash memory device; an electrical storage device; an optical storage device; an acoustic storage device; other forms of storage devices for storing information received from transitory (propagated) signals (e.g., carrier waves, infrared signals, digital signals); and the like, which are to be distinguished from non-transitory media from which information may be received.
Instructions for programming logic to perform implementations of the present disclosure may be stored within a memory in a system, such as a DRAM, cache, flash, or other storage. Further, the instructions may be distributed via a network or by way of other computer readable media. Thus, a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer) -without limitation, a floppy disk, an optical disk, a Compact-Disc Read-Only Memory (CD-ROM), and a magneto-optical disk, a Read-Only Memory (ROM), a Random Access Memory (RAM), an Erasable Programmable Read-Only Memory (EPROM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a magnetic or optical card, a flash Memory, or a tangible machine-readable storage device used in transmitting information over the Internet via an electrical, optical, acoustical or other form of propagated signal (e.g., a carrier wave, an infrared signal, a digital signal, etc.). Thus, a computer-readable medium includes any type of machine-readable medium suitable for storing or transmitting electronic instructions or information in a form readable by a machine (e.g., a computer).
Reference throughout this specification to "one implementation" or "an implementation" means that a particular feature, structure, or characteristic described in connection with the implementation is included in at least one implementation of the present disclosure. Thus, the appearances of the phrases "in one implementation" or "in an implementation" in various places throughout this specification are not necessarily all referring to the same implementation. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more implementations.
In the foregoing specification, a detailed description has been given with reference to specific exemplary implementations. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the disclosure as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense. Moreover, the foregoing use of implementations and other exemplary language does not necessarily refer to the same implementation or example, but may refer to different and distinct implementations, and possibly the same implementation.
Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. The blocks described herein may be hardware, software, firmware, or a combination thereof.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as "defining," "receiving," "determining," "issuing," "linking," "associating," "obtaining," "authenticating," "inhibiting," "executing," "requesting," "communicating" or the like, refer to the actions and processes of a computing system, or similar electronic computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computing system's registers and memories into other data similarly represented as physical quantities within the computing system memories or registers or other such information storage, transmission or display devices.
The word "example" or "exemplary" is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as "exemplary" or "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word "example" or "exemplary" is intended to present concepts in a concrete fashion. As used in this application, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or". That is, unless specified otherwise, or clear from context, "X includes a or B" is intended to mean any of the natural inclusive permutations. That is, if X comprises A; x comprises B; or X includes both A and B, then "X includes A or B" is satisfied under any of the foregoing circumstances. In addition, the articles "a" and "an" as used in this application and the appended claims should generally be construed to mean "one or more" unless specified otherwise or clear from context to be directed to a singular form. In addition, use of the terms "an implementation" or "one implementation" or "an implementation" or "one implementation" in various places is not intended to mean the same implementation or implementation unless so described. In addition, the terms "first," "second," "third," "fourth," and the like as used herein are intended to be used as labels to distinguish between different elements and may not necessarily have an ordinal meaning according to their numerical designation.
- 上一篇:一种医用注射器针头装配设备
- 下一篇:一种基于神经网络的服务器接口的兼容方法及系统