A system and method are disclosed for determining whether to allow or deny an access request based upon one or more descriptors at a local memory protection unit and based upon one or more descriptors a system memory protection unit. When multiple descriptors of a memory protection unit apply to a particular request, the least-restrictive descriptor will be selected. system access information is stored at a cache of a local core in response to a cache line being filled. The cached system access information is merged with local access information, wherein the most-restrictive access is selected.
|
14. A system comprising:
a memory device; and
a processor core including a local memory protection unit, the local memory protection unit to determine first permission information allowing a first access to the memory device in response to determining a first accessibility indicator at a first region descriptor at the local memory protection unit allowing the first access is less restrictive than a second accessibility indicator at a second region descriptor at the local memory protection unit denying the first access; and
a system memory protection unit coupled externally to the processor core, the system memory protection unit to determine second permission information denying the first access based on a third accessibility indicator denying the first access, the local memory protection unit to deny the first access in response to determining the second access permission denying the first access is more restrictive than the first access permission allowing the first access.
10. A method comprising:
determining a first region descriptor at a first memory protection unit at a first processor core includes a first accessibility indicator specifying a request to write to a first address within a first region is not permitted;
determining a second region descriptor at the first memory protection unit includes a second accessibility indicator specifying the request to write to the first address within a second region is permitted;
determining a first access permission allowing the request based on the second accessibility indicator in response to determining the second accessibility indicator is less restrictive than the first accessibility indicator ;
determining a third region descriptor at a second memory protection unit external to the first processor core includes a third accessibility indicator specifying the request to write to the first address within a third region is not permitted;
determining a second access permission denying the request based on the third accessibility indicator; and
denying the request at the first memory protection unit based on the second access permission in response to determining the second access permission denying the request is more restrictive than the first access permission allowing the request.
1. A method comprising:
receiving a first access request to write to a first memory, the first access request including a first address;
determining a first region descriptor at a local memory protection unit includes a first accessibility indicator specifying that writing to locations within a first region including the first address is not permitted;
determining a second region descriptor at the local memory protection unit includes a second accessibility indicator specifying that writing to locations within a second region including the first address is permitted;
determining a first access permission allowing the first access request based on the second accessibility indicator in response to determining the second accessibility indicator is less restrictive than the first accessibility indicator;
determining a third region descriptor at a global memory protection unit includes a third accessibility indicator specifying that writing to locations within a third region including the first address is not permitted; and
determining a second access permission denying the first access request based on the third accessibility indicator; and
denying the first access request at the local memory protection unit based on the second access permission in response to determining the second access permission denying the first access request is more restrictive than the first access permission allowing the request,
wherein the first region descriptor and the second region descriptor are provided at the local memory protection unit included at a first processor core, and the third region descriptor is provided at the global memory protection unit included in a processor system, the global memory protection unit outside the first processor core.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
providing an access exception indicator to a processor core associated with the first access request in response to denying the first access request.
11. The method of
determining whether to allow or deny an access request based upon the least-restrictive of the third accessibility indicator and the fourth accessibility indicator.
12. The method of
13. The method of
15. The system of
16. The system of
17. The system of
18. The system of
|
The present application is related to co-pending U.S. patent application Ser. No. 13/033,317, entitled “Memory Protection in a Data Processing System,” and filed on even date herewith, the entirety of which is incorporated by reference herein.
The present disclosure relates generally to data processing systems, and more particularly to providing memory protection services in data processing systems.
Data processing systems often include one or more memory protection units (MPUs) to regulate access to memory devices. A MPU can intercept memory access requests issued by a device and determine whether the requesting device has requisite authority to access the memory. A MPU can be configured to grant or deny access to individual address regions by associating each region with corresponding access privileges using descriptors. In systems with multiple processor cores, each processor core can have its own local MPU that controls memory accesses initiated by that core using one or more local descriptors. In addition, a global MPU may grant or deny accesses initiated by each of the multiple processor cores, and other bus masters, using one or more global descriptors. However, the number of descriptors needed to support many non-contiguous ranges of memory having different access authorities can require significant resource space.
The present disclosure may be better understood, and its numerous features and advantages made apparent to those skilled in the art, by referencing the accompanying drawings.
A memory access request is typically associated with execution by a processor device of a load instruction to retrieve information from a particular memory location, or execution of a store instruction to write information to a particular memory location. An address accompanies the memory access request to identify a location within a memory to be accessed. A load or store instruction can be included in a software program, and the software program can be executed in a supervisor mode or in a user mode. The execution of a software program can be referred to as a process, and a read or write access request can be associated with a process identifier (PID) assigned to the particular process being executed.
Information accessed during a memory read operation can include instructions or can include data information, while information associated with a memory write operation is generally data information. Accordingly, memory access requests can be characterized based on values of one or more request attributes. Examples of request attributes include an address attribute for indicating an address of a location to be accessed; a read attribute for indicating a request is a read request; a write attribute for indicating a request is a write request; a supervisor attribute for indicating a request is issued in supervisor mode; a user attribute for indicating a request is issued in user mode, a PID attribute for identifying a PID associated with a request; an instruction attribute for indicating that requested information is an instruction; and the like. Any number of request attributes can be associated with a memory access request.
A MPU generally includes one or more region descriptors, each region descriptor associated with a particular range of contiguous addresses (a region). Each region descriptor can include permission information identifying individual accessibility indicators, if any, that apply to locations included in a respective region. Therefore, individual region descriptors can be used to provide a specific degree of accessibility to corresponding address regions. An accessibility indicator is determined based on a corresponding value of a descriptor attribute. A region descriptor can include additional descriptor attributes whose values together determine if a region descriptor is valid and applicable with respect to a particular access request. Examples of descriptor attributes include an upper-bound address attribute and a lower-bound address attribute for indicating a range of addresses for which accessibility indicators provided by the region descriptor apply; a validity attribute for indicating whether or not the descriptor is valid; a SR attribute for indicating that locations within the region can be read by a process executed in supervisor mode; a SW attribute for indicating locations within the region can be written to by a process executed in supervisor mode; a UR attribute for indicating locations within the region can be read by a process executed in user mode; a UW attribute for indicating locations within the region can be written to by a process executed in user mode; attributes for indicating locations within the region can only be accessed by a process having a particular PID or having a PID included within specified ranges of PID values; and the like.
A region descriptor can include additional descriptor attributes that are not associated with accessibility indicators or with determining the applicability of a region descriptor with respect to a particular access request, as described below. For example, a guarded attribute can be included within a region descriptor to identify one or more locations whose state is volatile or whose state may change in response to or following an access, such a FIFO (a first-in first-out information buffer). Similarly, a cache-inhibit attribute can be included within a region descriptor to designate a corresponding range of addresses as non-cacheable, e.g., to indicate data retrieved from that regions should not be stored by a cache memory.
A memory access policy can allow or restrict access to particular locations at a memory based upon one or more accessibility indicators included in one or more region descriptors. For example, a store instruction executed by a process having a particular PID and executed in a supervisor mode can cause a memory access request to be issued that includes request indicators identifying the values of one or more of these request attributes. For example, the value of an address attribute is an address identifying a memory location in which to store information accompanying the access request. A write attribute is asserted to identify the access request as a write access request. A supervisor attribute is asserted to identify that a process issuing the request is a supervisor process. A value of a PID attribute identifies the PID associated with the process issuing the request. Continuing the present example, the access request including request indicators can be received at a MPU. The MPU can determine whether the value of the address associated with the access request is included within an address range specified by the upper and lower bound address attributes associated with one or more region descriptors. The MPU can further qualify the applicability of a region descriptor based on other accessibility indicators provided by the region descriptor, such as a value of a PID attribute, an instruction attribute, and the like. Having determined that a particular region descriptor is valid and applicable to the present access request, the MPU can allow the access to proceed or deny the request based on request indicators associated with the request and accessibility indicators associated with the region descriptor. In the present example, if the SW descriptor attribute at an applicable region descriptor is asserted, the MPU can allow the access. However, if the SW attribute is not asserted, the request can be denied.
A MPU may support a larger or a smaller number of region descriptors based on various cost and performance trade-offs. In an embodiment of the present disclosure, address ranges specified by two or more region descriptors can overlap. Therefore, a memory address associated with a memory access request can be included within the address range associated with more than one region descriptor. In a particular embodiment of the present disclosure, if multiple region descriptors included within a single MPU are determined to be applicable with respect to a particular access request based on values of descriptor attributes included in each region descriptor and values of request attributes associated with the request, the access can be allowed or denied based on a least-restrictive policy determined by accessibility indicators provided at all of the applicable region descriptors. For example, if two region descriptors are applicable to a particular access request and one descriptor is found to deny the access request but the other descriptor allows the access request, the access request is allowed, thereby allowing further processing of the access request. For example, when a read access is allowed, processing of the read access request will continue until the requested information is returned to the requesting source or until another process, such as another MPU, terminates the access request. When a read access is denied, processing of the read access is terminated. This behavior is in contrast to a most-restrictive policy wherein if two region descriptors are applicable to a particular request and one descriptor is found to deny the access but the other descriptor allows the access, the access is denied. In another embodiment, if multiple region descriptors included at different MPUs are determined to be applicable with respect to a particular access request, the effect is for an access to be allowed or denied based on a most-restrictive policy determined by accessibility indicators provided at all of the applicable region descriptors.
For example, a first region descriptor contained within a MPU can be configured to permit supervisor-write accesses to a large region of memory, while a second region descriptor at the same MPU can be configured to allow user-write accesses to a portion of the larger region. Based on a least-restrictive policy and based on an access request for which both region descriptors are applicable, either a supervisor-write access or a user-write access is allowed. For another example, a first region descriptor within a first MPU can be configured to permit supervisor-write accesses to a large region of memory, while a second region descriptor at a different MPU can be configured to disallow supervisor-write accesses to a portion of the larger region. Based on a most-restrictive policy and based on an access request for which both region descriptors are applicable, a supervisor-write access is denied, while for a least-restrictive policy a supervisor-write access is allowed.
In accordance with another embodiment, when a memory access request issued by a processor core is successfully completed, and the completion also results in a cache line at the processor core being filled (a line-fill), access permission information associated with the memory access request that is maintained at a global MPU at the time of the access can be stored in the cache line of the local processor core that is being filled. A subsequent memory access request that hits to the same cache line can be allowed or denied by a MPU local to the processor core based in part on the global permission information stored in the cache line, and based in part on permission information maintained in a local MPU included at the processor core.
A MPU can associate access permission information with specific memory addresses or with regions of memory addresses. Upon receipt of a memory access request directed towards a particular memory address, a MPU can evaluate whether the request attributes associated with the request satisfy access requirements associated with that memory address based on one or more accessibility indicators included in one or more region descriptors.
As used herein, a memory location is intended to refer to any data storage location having a unique system address. Such locations, including memory devices, peripheral devices, and the like, are included within a system address space. Similarly, the phrase memory access request is used herein to refer to any request to access a storage location based on a unique system address. For simplicity, memory-mapped storage locations and corresponding access requests described herein are referred to as memories and memory access requests, respectively.
Data processing system 100 includes a first processor core 10 identified as CPU 0, a second processor core 12 identified as CPU N, an interconnect 20, a global MPU 30, a memory device 40, and a slave device 42. The processor core 10 includes a cache 50, which further includes a data cache 51 and an instruction cache 52; a local MPU 60, which further includes region descriptors 62 and a MPU control module 64; a data processing logic module 70; and a bus interface unit (BIU) 80. The processor core 12 includes similar sub-components (not shown), and each processor core can include additional modules (not shown for clarity).
The global MPU includes region descriptors 32 and a MPU control module 34. The processor core 10 and the processor core 12 can communicate with the global MPU 30 via the interconnect 20. In particular, interconnect 20 may conduct signals to provide REQUEST INFORMATION 90, PERMISSION INFORMATION 92, and REQUEST ATTRIBUTES 94. The REQUEST INFORMATION 90 includes a memory address (ADDRESS), write data (WDATA), and read data (RDATA). The memory device 40 can provide storage locations accessible via memory access requests issued by the processor core 10 or the processor core 12. The memory device 40 can include any of a variety of memory types, including dynamic random access memory (DRAM), static random access memory (SRAM), and the like. The slave device 42 represents a memory mapped device, e.g., an input/output (I/O) device, which can be a target of a memory access request issued by the processor core 10 or the processor core 12. For clarity,
During operation, processor cores 10 and 12 can access the memory 40 to obtain instructions, to retrieve data information, or to store data information. For example, the data processing logic module 70 at the processor core 10 may issue a memory access request to retrieve data information at a particular memory address at the memory 40. Before transmitting the memory access request external to the processor core 10, local MPU 60 can determine if the requesting device (or the software process from which the request originates) possesses suitable request indicators to allow the access. Furthermore, the processor core 10 can determine whether the desired data information is available within the data cache 51. If the local MPU 60 determines that the request is allowed, and the desired data information is not present at the data cache 51 (a cache miss), the memory access request is provided to the BIU 80. The BIU 80 is configured to forward the memory access request over the interconnect 20 to the global MPU 30. The BIU 80 can initiate a memory-read access request by transmitting a memory address via signal ADDRESS, a read command signal (not shown), and the REQUEST ATTRIBUTES 94 identifying values of other attributes associated with the request, such as request indicators. These signals are propagated via the interconnect 20 to the global MPU 30. The global MPU 30, operating in a similar manner as the local MPU 60, can further determine if the access request includes privileges necessary to access the memory location specified by the address. Having approved the access request, the global MPU 30 can access the desired location at the memory device 40 or the slave device 42 and return the requested data information to the BIU 80 and then data processing logic module 70 via the signal RDATA over the interconnect 20. In some embodiments, the global MPU 30 may not handle the actual transfer of data, but instead act as an access gate to memory 40 and slave device 42.
In a similar manner, the data processing logic module 70 at the processor core 10 may issue a memory access request to store data information to a particular memory address at the memory 40. Before transmitting the memory access request external to the processor core 10, local MPU 60 can determine whether to allow or deny the access based on values of request attributes associated with the request. If the local MPU 60 determines that request indicators accompanying the request meet the requirements of accessibility indicators maintained by the local MPU 60, the memory access request is provided to the BIU 80.
The BIU 80 can initiate a memory-write access request by transmitting a memory address via signal ADDRESS, the data information to be stored at the memory 40 via the signal WDATA, a write command signal (not shown), and the REQUEST ATTRIBUTES 94 identifying privileges associated with the request. The global MPU 30, operating in a similar manner as the local MPU 60, can further determine if the access request includes privileges necessary to store information at the memory location specified by the address. Having approved the access request, the global MPU 30 can access the desired location at the memory device 40, and store the data information provided by the processor core 10.
A memory access request to read or to write to the memory 40 can include additional information that can be communicated to the global MPU 30 via the signal REQUEST ATTRIBUTES 94 to indicate various request attributes associated with the access request. The REQUEST ATTRIBUTES 94 can include information identifying the source of the request and the type of the request, as described above. For example, the REQUEST ATTRIBUTES 94 can include an indication that the request is associated with a process running in supervisor mode or user mode, an indication that the request is to perform a read operation or a write operation, and the like. The REQUEST ATTRIBUTES 94 can include other information that can further characterize an associated memory access request in a particular way.
As described above, a MPU, such as the local MPU 60 and the global MPU 30, can maintain respective permission information associated with one or more address regions. The local MPU 60 enforces protections on instruction fetches and data read and write accesses by comparing a memory address associated with the memory access request with each entry in the local MPU 60 (stored within a region descriptor 62) to determine a match. If the local MPU 60 identifies a region descriptor corresponding to the memory address, accessibility indicators and other descriptor attributes included in that region descriptor can be evaluated. In one embodiment, the local MPU 60 provides permission information for a relatively small number of memory address regions compared to the number of regions that can be supported by the global MPU 30. Accessibility indicators can relate to any number of request attributes that together define aspects of a protection policy. For example, a region descriptor can designate that locations included within a particular memory address region are write protected, in which case a request to store information, e.g., a request with an attribute that indicates information is to be stored, at a location within the region is denied while a request to retrieve information, e.g., a request with an attribute that indicates information is to be read, from a location within the region is allowed. Similarly, a region descriptor can designate that locations included within a memory address region are accessible only to access requests associated with an attribute that indicates the access request was issued by a process running in supervisor mode.
The global MPU 30 also may be referred to as a system MPU. In one embodiment, global MPU 30 supports a greater number of entries (based on the number of region descriptors 32) than the local MPU 60. The global MPU 30 can evaluate all memory access requests communicated over the interconnect 20, and determines whether each requested access should be allowed or denied based on permission information included therein. These memory access requests can be issued by the processor core 10, the processor core 12, or by other system devices coupled to the interconnect 20 (not shown). A system device issuing a memory access request, such as the processor core 10, can be referred to as a bus master. The global MPU 30 monitors access requests from all bus masters and enforces protections on a per-master basis. Each region descriptor in the global MPU 30 defines an address range, and permission information for each potential bus master. Access protections are enforced on each access request by comparing request attributes associated with an access produced by a bus master to the permission information (accessibility indicators) stored by the global MPU 30. The MPU 30 can either allow or deny the requested access in a manner similar to that previously described with reference to the local MPU 60. If the access is allowed, the request can be forwarded to a memory controller (not shown) that performs the requested memory access transaction at the memory device 40, at the slave device 42, or at another memory mapped device (not shown). If the global MPU 30 denies the access request based on permission information included therein, the global MPU 30 can instead provide an access termination error response or another form of exception indicator to the device or processor core that initiated the access request.
In an embodiment, the global MPU 30 provides permission information to a processor core. In particular, in response to a successfully completed memory access, and in response to initiating a cache line refill operation for a cache included in the processor core from which the access request originated, the global MPU 30 provides permission information associated with the accessed memory location to the processor core. The permission information is stored in the cache line along with other tag and data information. In response to a subsequent access request that hits to that particular cache line, the access can be allowed or denied based on both the permission information stored in the cache line and permission information stored in the local MPU. In an embodiment, if permission information applicable to an access request is provided by a cache memory and by a local MPU, the more restrictive policy is utilized. In an embodiment, if two or more region descriptors included in a local MPU each apply to an access, the descriptor providing the least-restrictive access policy can initially prevail. The access can then be allowed or denied based on the more restrictive of the prevailing policy from the local MPU and permission information provided by the cache memory.
As previously described, a particular address associated with a memory access request may be included within more than one memory address region specified by corresponding MPU region descriptors.
The local region descriptor 210 provides accessibility indicators associated with a region of memory address space extending from an address 202 (A1) to an address 205 (A4). In particular, the local region descriptor 210 specifies that locations within this region can be both read and written by a process having supervisor privileges (supervisor-read SR=1 and supervisor-write SW=1), but cannot be read or written by a process having user privileges (user-read UR=0 and user-write UW=0). The global region descriptor 220 provides accessibility indicators associated with a region of memory address space extending from an address 203 (A2) to an address 204 (A3), which overlaps and is a subset of the region specified by the local region descriptor 210. The global region descriptor 220 specifies that locations within this region can be read, but not written by a process having supervisor privileges (supervisor-read SR=1 and supervisor-write SW=0), and can be read but not written, by a process having user privileges (user-read UR=1 and user-write UW=0).
The combined (comprehensive) permission information 230 includes a region 231 extending from the address 204 (A3) to the address 205 (A4), a region 232 extending from the address 203 (A2) to the address 204 (A3), and a region 233 extending from the address 202 (A1) to the address 203 (A2). Access permissions associated with the regions 231 and 233 are determined based only on the accessibility indicators associated with the local region descriptor 210 because no other region descriptor, local or global, defines alternate access permissions for these regions. Therefore, the access permissions governing the region 231 and region 233 are SR=1, SW=1, UR=0, and UW=0 (supervisor requests to perform both write and read operations are allowed, while user requests to read or write are not allowed). Addresses corresponding to region 232 are included within regions specified by both the local region descriptor 210 and the global region descriptor 220. The combined permissions associated with the region 232 are determined based on a most-restrictive policy by selecting the more restrictive accessibility indicators specified by either of the two applicable region descriptors. For example, the local region descriptor 210 does not permit user-read accesses while the global region descriptor does allow user-read accesses. Based on a most-restrictive policy, user-read accesses are denied. Therefore, the access permissions associated with region 232 are SR=1, SW=0, UR=0, and UW=0 (only supervisor-read requests are allowed).
The operation of local MPU 60 and global MPU 30 may be better understood with reference to
Field 425 relates to an instruction attribute, INST, which can be asserted to identify that the region descriptor is only valid for instruction accesses, e.g., access requests wherein a corresponding instruction request attribute is also asserted. Accordingly, a corresponding instruction attribute is asserted at region descriptors included in set 302 (instruction region descriptors), and negated in region descriptors included in set 304 (data region descriptors). Field 426 relates to a plurality of accessibility attributes including a SX attribute (supervisor execute), a SW attribute (supervisor write), and a SR attribute (supervisor read), which can be individually asserted to identify the types of supervisor level access requests that are allowed by the descriptor to locations included within the address region specified by region descriptor 410. For example, if the SW attribute is asserted, an access request identified as both a supervisor access and a write access (by assertion of corresponding request attributes accompanying the request) is permitted by the descriptor to store information to locations within the associated memory address region. Similarly, if the SR attribute is asserted, an access request identified as both a supervisor access and a read access is permitted by the descriptor to read locations with the associated region. Attribute SX identifies whether locations within the associated region can be executed. Field 427 relates to a plurality of accessibility attributes including a UX attributes (user execute), a UW attribute (user write), and a UR attribute (user read), which individually identify the types of user level access requests that are permitted by the descriptor to locations corresponding to region descriptor 410.
Field 428 relates to a cache-inhibit region attribute, I. The cache-inhibit region attribute can be asserted to instruct a requesting device to not store information retrieved from locations within the associated region in a cache device, such as data cache 51 and instruction cache 52 of
During operation of a MPU, such as local MPU 60 and global MPU 30, an incoming memory access request is evaluated. For example, REQUEST INFORMATION 90 and REQUEST ATTRIBUTES 94 received from BIU 80 can be evaluated to determine an address of a location to be accessed, a PID associated with the request, whether the requesting device or process has supervisor or only user privileges, whether the request is a read access or write access, and whether the request is an instruction access or a data access. A region descriptor can include additional fields corresponding to other request attributes or to identify or further qualify an access request in a desired way. The MPU examines each valid region descriptor included within the MPU to determine if any region descriptor is relevant with respect to the received access request. If the MPU identifies a region descriptor that matches the incoming access request, the MPU either allows or denies the access based on the request attributes and based on permissions specified by the descriptor. For example, if a user-mode request to write to address XYZ is received, and a valid region descriptor defines an address region that includes address XYZ, the requested access can be allowed if the UW attribute is asserted, and denied if the UW attribute is not asserted. Furthermore, if a region descriptor is determined to have governance over an access, the access can be identified as a cache-inhibit access or a guarded access based on the values of the I and G fields in the descriptor, respectively.
As described above, a single MPU can include more than one descriptor that matches a particular memory access request. For example, two region descriptors included in a MPU can specify memory address regions that overlap so that an address associated with a memory access request can be included within the address bounds defined by both descriptors.
The local region descriptor 510 provides accessibility indicators associated with a region of memory address space extending from an address 502 (A1) to an address 507 (A6). In particular, local region descriptor 510 specifies that locations within this region can be both read and written by a process having supervisor privileges (supervisor-read SR=1 and supervisor-write SW=1), and can be read but not written by a process having user privileges (user-read UR=1 and user-write UW=0). The local region descriptor 520 provides accessibility indicators associated with a region of memory address space extending from an address 503 (A2) to an address 504 (A3), which overlaps and is a subset of the region specified by the local region descriptor 510. The local region descriptor 520 specifies that locations within this region can be both read and written by a process having supervisor privileges (supervisor-read SR=1 and supervisor-write SW=1), and can be both read and written by a process having user privileges (user-read UR=1 and user-write UW=1). The global region descriptor 530 provides accessibility indicators associated with a region of memory address space extending from an address 505 (A4) to an address 506 (A5), which overlaps and is a subset of the region specified by the local region descriptor 510. The global region descriptor 530 specifies that locations within this region can be read but not written by a process having supervisor privileges (supervisor-read SR=1 and supervisor-write SW=0), and can be read but not written by a process having user privileges (user-read UR=1 and user-write UW=0).
The combined access information 540 includes a region 541 extending from the address 506 (A5) to the address 507 (A6), a region 542 extending from the address 505 (A4) to the address 506 (A5), a region 543 extending from the address 504 (A3) to the address 505 (A4), a region 544 extending from the address 503 (A2) to the address 504 (A3), and a region 545 extending from the address 502 (A1) to the address 503 (A2). Access permissions associated with the regions 541, 543, and 545 are determined based on the accessibility indicators associated with the local region descriptor 510 because no other region descriptor, local or global, defines alternate access permissions for these regions. Therefore, the access permissions governing regions 541, 543, and 545 are SR=1, SW=1, UR=1, and UW=0. Addresses corresponding to region 542 are included within regions specified by both the local region descriptor 510 and the global region descriptor 530. The combined permissions associated with the region 542 are determined on the basis of a most-restrictive policy. Therefore, the accessibility indicators associated with region 542 are SR=1, SW=0, UR=1, and UW=0. Accordingly, the global descriptor 530 provides a smaller region 542 having more restrictive permissions that those provided by the larger local region descriptor 510.
Addresses corresponding to region 544 are included within regions specified by both the local region descriptor 510 and the local region descriptor 520. The combined permissions associated with the region 544 are determined based on a least-restrictive policy. Therefore, the access permissions associated with region 544 are SR=1, SW=1, UR=1, and UW=1. Accordingly, the local descriptor 520 provides a smaller region 544 having less restrictive permissions that those provided by the larger local region descriptor 510.
The local region descriptor 610 provides accessibility indicators associated with a region of memory address space extending from an address 602 (A1) to an address 607 (A6). In particular, accessibility indicators included in the local region descriptor 610 specify that locations within this region can be both read and written by a process having supervisor privileges (supervisor-read SR=1 and supervisor-write SW=1), and can be both read and written by a process having user privileges (user-read UR=1 and user-write UW=1). The first global region descriptor 620 provides accessibility indicators associated with a region of memory address space extending from an address 603 (A2) to an address 606 (A5), which overlaps and is a subset of the region specified by the local region descriptor 610. Accessibility indicators included in the first global region descriptor 620 specify that locations within this region can be read but not written by a process having supervisor privileges (supervisor-read SR=1 and supervisor-write SW=0), and can be read but not written by a process having user privileges (user-read UR=1 and user-write UW=0). The second global region descriptor 630 provides accessibility indicators associated with a region of memory address space extending from an address 604 (A3) to an address 605 (A4), which overlaps and is a subset of both the region specified by the local region descriptor 610 and the region specified by the global region descriptor 620. Accessibility indicators included in the global region descriptor 630 specify that locations within this region can be both read and written by a process having supervisor privileges (supervisor-read SR=1 and supervisor-write SW=1), and can be read but not written by a process having user privileges (user-read UR=1 and user-write UW=0).
The combined access information 640 includes a region 641 extending from the address 606 (A5) to the address 607 (A6), a region 642 extending from the address 605 (A4) to the address 606 (A5), a region 643 extending from the address 604 (A3) to the address 605 (A4), a region 644 extending from the address 603 (A2) to the address 604 (A3), and a region 645 extending from the address 602 (A1) to the address 603 (A2). Access permissions associated with regions 641 and 645 are determined based on the accessibility indicators associated with the local region descriptor 610 because no other region descriptor, local or global, defines alternate access permissions for these regions. Therefore, the access permissions governing the region 641 and 645 are SR=1, SW=1, UR=1, and UW=1. Addresses corresponding to region 642 and 644 are included within regions specified by both the local region descriptor 610 and the first global region descriptor 620. The combined permissions associated with each of regions 642 and 644 are determined based on a most-restrictive policy. Therefore, the access permissions associated with regions 642 and 644 are SR=1, SW=0, UR=1, and UW=0. Accordingly, the global descriptor 620 provides two smaller regions 642 and 644 having more restrictive permissions that those provided by the larger local region descriptor 610.
Addresses corresponding to region 643 are included within regions specified by the local region descriptor 610, the first global region descriptor 620, and the second global region descriptor 630. The combined permissions associated with region 643 are first determined by the region descriptors 620 and 630 based on a least-restrictive policy because these two region descriptors are included within the same MPU. Next, permissions specified by the local region descriptor 610 are compared to the permissions previously determined based on the global region descriptors 620 and 630, and final combined permissions are determined based on a most-restrictive policy. Therefore, the access permissions associated with region 643 are SR=1, SW=1, UR=1, and UW=0. In this particular example, the first global region descriptor 620 specifies that no writes of any kind can be allowed within the address range between the address 603 (A2) and the address 606 (A5); however, the global region descriptor 630 has re-opened supervisor write accessibility within the address region extending from the address 604 (A3) to the address 605 (A4).
At block 730, the second MPU determines second access permissions based on the least-restrictive accessibility indicators specified by one or more descriptors included in the second MPU. For example, an address included within the region between the address 604 (A3) and the address 605 (A4) of
At block 740, the requested memory access can be allowed or denied based on the most-restrictive of the first and second access permissions. Continuing the previous example, and still referring to
In an embodiment, a least-restrictive policy can be administered by selecting the least-restrictive of two or more descriptors and determining combined permissions based solely on permissions granted by the least-restrictive descriptor. Similarly, a most-restrictive policy can be administered by selecting the most-restrictive of two or more descriptors and determining combined permissions based solely on permissions granted by the most-restrictive descriptor. One skilled in the art will appreciate that other permission attributes can be substituted or included with those described above without departing from the scope of the present disclosure. The determination of the relative degree of restriction can be based on specific needs and operation of a particular system.
As described above, a region descriptor can include descriptor attributes identifying whether locations included within an associated range of addresses are cache-inhibited or guarded. In an embodiment, if a region is identified as a cache-inhibited region, the cache-inhibit attribute of an access is determined based on the protocol described above. For example, if two or more region descriptors specify an address range that includes the address associated with a request, a least-restrictive policy is used to determine whether the access is cache-inhibited. However, if a region is identified as a guarded region, a most-restrictive policy is always used to determine the guarded attribute of an access. Accordingly, a small guarded region can be defined within a relatively larger non-guarded region. The small guarded region can include more restrictive permissions than the larger region, and memory access requests associated with addresses included within the smaller guarded region can be allowed or denied based on the more restrictive permission policy provided by the smaller region. Operation when one or more region descriptors includes a cache-inhibit attribute or a guarded attribute is described below with reference to
The techniques described above can be used to minimize the total number of regions descriptors required to implement a desired protection policy. The number of region descriptors included in a local MPU can be reduced further by storing a portion of permission information maintained by a global MPU in a cache memory included in a processor core, such as in the data cache 51 and the instruction cache 52 of data processing system 100 of
As described above, the original memory access request that resulted in the cache-line fill of the present example may have been allowed based on permission information, in part, maintained by a global MPU. Typically, global permission information associated with the original request would be replicated at the local MPU in order for the processor core to regulate access to the cached data information. Instead, according to a particular embodiment of the present disclosure, permission information governing the original memory access request, and originally maintained by a global MPU, can be stored in the cache line along with the requested information. The global permission information stored in a cache line can include one or more individual accessibility indicators associated with the original access, or may include other accessibility indicators, e.g., one or more encoded representations of the global accessibility indicators. In response to a subsequent memory access request and the determination that the requested information resides in a cache memory (a cache hit), the permission information previously stored in the associated cache line can be evaluated along with applicable permission information provided by a local MPU, and both sets of permission information can be used to determine whether the subsequent access should be allowed or whether the request should be denied. This allows the enforcement of the policy of applying the most-restrictive set of permissions provided by both a local MPU and a global MPU, without the requirement of querying the global MPU for every access. Since accesses that result in a cache hit are not propagated to the global MPU via the BIU, but instead are satisfied directly by the cache, storage of the global access permissions information in the cache line corresponding to the access address allows for proper enforcement of the desired policies.
In an embodiment, permission information can be stored in each cache line included in an instruction cache and in a data cache. Because, in one embodiment, a cache line can include multiple information words, the permission information applies equally to all the words within a respective cache line. In an alternate embodiment, a plurality of permission information may be stored in order to allow specific access permission information to be applied to individual words or other units of storage within a cache line. In yet another embodiment, a cache line may contain only a single word of information. In an embodiment, permission information stored in each cache line of an instruction cache or data cache can include a supervisor-only access control flag (SO). The SO flag is updated on completion of a cache line-fill operation based on permission information provided by a global MPU. The SO flag is asserted to indicate that a device or software process having only user-level privileges cannot access data or instruction information included in the corresponding cache line. For example, the SO flag is asserted if either the SW or the SR global accessibility indicator is asserted, and the UW and the UR accessibility indicators are both negated. Furthermore, permission information stored in each cache line of a data cache also includes a supervisor-write (SW) access control flag and a user-write (UW) access control flag. The SW and UW flags are updated on completion of a cache line-fill operation by a data cache based on permission information provided by a global MPU. The SW flag is asserted to indicate that data information can be stored at an associated location and in the respective cache line if the requesting device or software process has supervisor privileges. Similarly, the UW flag is asserted to indicate that data information can be stored if the requesting device or software process has user privileges.
Upon receipt at a data cache of a memory request, and in response to determining that the location associated with the request is represented at the data cache and is valid (a cache hit), values of the SO, SW and UW flags stored in a cache line corresponding to the request address can be evaluated to determine whether the access should be allowed or whether an access violation exception should be signaled. For example, if a cache hit occurs in response to a supervisor-level request to perform a write operation and the stored SW bit of a cache line associated with the request address is cleared, an exception is generated and the access is aborted. Similarly, if a cache hit occurs in response to a user-level request to perform a read or a write operation and the stored SO bit is set, indicating supervisor-only permissions for the addressed location, an exception is generated and the access is aborted. Similarly, if a cache hit occurs in response to a user-level request to perform a write operation and the stored UW bit is cleared or the stored SO bit is set, an exception is generated and the access is aborted.
The operation of the cache permission information flags can be better understood with reference to
The column 801 represents the permission information flag SO (supervisor-only), the column 802 represents the flag SW (supervisor-write), and the column 803 represents the flag UW (user-write). The rows 810-815 illustrate permissible combinations of the flags, and the column 804 provides a description of allowed accesses based on each respective combination of flags. During operation of data processing system 100 of
The row 810 corresponds to the flag combination: SO=0; SW=0; and UW=0. A cache line having this particular combination of flags can be read but not written by both a supervisor level request and by a user level request. Because permission flag SO is not asserted, information stored in the corresponding cache line is not limited to only supervisor level requests. Permission flag SW is not asserted, indicating that information stored in the corresponding cache line cannot be written by a request having supervisor level privileges. Similarly, permission flag UW is not asserted, indicating that information stored in the corresponding cache line cannot be written by a request having user level privileges. The row 811 corresponds to the flag combination: SO=0; SW=0; and UW=1. A cache line having this particular combination of flags can be read but not written by a supervisor level request, but can be written and read by a user level request. One skilled in the art will appreciate that this combination, wherein a user level request has less restrictive access privileges than a supervisor level request, is typically not encountered in practice.
The row 812 corresponds to the flag combination: SO=0; SW=1; and UW=0. A cache line having this particular combination of flags can be read or written by a supervisor level request, but can be only be read by a user level request. The row 813 corresponds to the flag combination: SO=0; SW=1; and UW=1. A cache line having this particular combination of flags can be read or written by both a supervisor level request and by a user level request. The row 814 corresponds to the flag combination: SO=1; and SW=0. Because the flag SO is asserted (supervisor-only), the value of flag UW is ignored. A cache line having this particular combination of flags can be read by a supervisor level request, but cannot be read or written by a user level request. The row 815 corresponds to the flag combination: SO=1; and SW=1. A cache line having this particular combination of flags can be both read and written by a supervisor level request, but cannot be read or written by a user level request. While the present example includes three permission flags, SO, SW, and UW respectively, the permission information and the encoding of the permission information can vary from the illustrated values without departing from the scope of the present disclosure. For example, the global MPU 30 of data processing system 100 can maintain a fewer or a greater number of permission attributes and the global MPU can provide another set of permission information for storing in a cache of a processor core in response to a successful memory access to fill a cache line.
Each of cache arrays 901 and 902 include a plurality of cache lines, such as the cache line 910. Each cache line includes a plurality of fields including an address tag, TAG 911, a valid bit, V 912, permission information flags, FLAGS 913, a replacement flag, R 914, lockout flags, LO 915, and one or more information words 916. In this particular example, each cache line includes eight information words included contained in four doublewords, DOUBLEWORD0, DOUBLEWORD1, DOUBLEWORD2, and DOUBLEWORD3. The amount of information included in a cache line can vary without departing from the scope of the present disclosure. For example, a cache line can include a single byte of information, a single word of information, or any number of information words. During operation of cache memory 900, an address or a portion of an address can be stored in the tag field 911, which uniquely identifies the information 916. In the present example, the address stored in the tag field 911 represents the address corresponding to the block of stored doublewords.
The valid bit 912, if asserted, indicates that the corresponding cache line includes valid information. If the valid bit is negated, the corresponding cache line is invalid and does not supply data to satisfy an access request. The permission flags 913 includes permission information flags SO, SW, and UW if the cache is a data cache, and includes only a permission information flag SO if the cache is an instruction cache, as described above with reference to the table 800 of
The operation of a cache having cache line permission information can be better understood with reference to
The method 1000 begins at block 1010 where a memory access request including a memory address is provided to a memory protection unit. For example, the processor core 10 of data processing system 100 of
The method 1100 begins at block 1110 where a memory access request is received by a cache memory included in a processor core, and where an address included with the request is associated with a cache line in the cache. For example, the processor core 10 of data processing system 100 of
In an alternate embodiment, the less restrictive of the two sets of permission information may be used. In yet another embodiment, the selection of least-restrictive or most-restrictive policies may be based on one or more attributes of the access request, or on the type of instruction that caused the access request to be generated. For instance, certain cache management instructions may generate access addresses to be used in maintaining the state of one or more caches in data processing system 100. In one embodiment, the selection of least-restrictive or most-restrictive attribute policies may differ for one or more of these cache management instructions than for a normal load or store instruction access request. In another embodiment, the selection of least-restrictive or most-restrictive attribute policies may differ for accesses generated using a supervisor mode indication versus a user mode indication, such that for instance, a supervisor mode access uses the least-restrictive access policy, while the user mode access uses the most-restricted access policy. By combining access permissions information from a plurality of MPUs, data processing system 100 may obtain additional flexibility at reduced cost relative to prior systems.
The local region descriptor 1210 provides accessibility indicators associated with a region of memory address space extending from an address 1202 (A1) to an address 1207 (A6). In addition, local region descriptor 1210 specifies that accesses performed to locations within this region are not identified as cache-inhibited or guarded accesses (CI=0 and G=0). The local region descriptor 1220 provides accessibility indicators associated with a region of memory address space extending from an address 1203 (A2) to an address 1204 (A3), which overlaps and is a subset of the region specified by the local region descriptor 1210. The local region descriptor 1220 specifies that accesses performed to locations within this region are identified as both cache-inhibited accesses and as guarded accesses (CI=1 and G=1). The global region descriptor 1230 provides accessibility indicators associated with a region of memory address space extending from an address 1205 (A4) to an address 1206 (A5), which overlaps and is a subset of the region specified by the local region descriptor 1210. The global region descriptor 1230 specifies that access performed to locations within this region are identified as cache-inhibited accesses, but not as guarded accesses (CI=1 and G=0).
The combined access information 1240 includes a region 1241 extending from the address 1206 (A5) to the address 1207 (A6), a region 1242 extending from the address 1205 (A4) to the address 1206 (A5), a region 1243 extending from the address 1204 (A3) to the address 1205 (A4), a region 1244 extending from the address 1203 (A2) to the address 1204 (A3), and a region 1245 extending from the address 1202 (A1) to the address 1202 (A2). Access permissions associated with the regions 1241, 1243, and 1245 are determined based on the accessibility indicators associated with the local region descriptor 1210 because no other region descriptor, local or global, defines alternate access permissions for these regions. Furthermore, accesses to locations within regions 1241, 1243, and 1245 are not identified as cache-inhibited accesses or as guarded accesses based on corresponding descriptor attributes specified by the local region descriptor 1210. Addresses corresponding to region 1242 are included within regions specified by both the local region descriptor 1210 and the global region descriptor 1230. The combined permissions associated with the region 1242 are determined on the basis of a most-restrictive policy. Furthermore, accesses to locations within region 1242 are identified as cache-inhibited accesses but not as guarded accesses because the cache-inhibit attribute is asserted in the global region descriptor 1230, based on the use of a most-restrictive policy.
Addresses corresponding to region 1244 are included within regions specified by both the local region descriptor 1210 and the local region descriptor 1220. The combined access permissions associated with the region 1244 are determined based on a least-restrictive policy because both region descriptors are local region descriptors. However, accesses to locations included within the region 1244 are identified as both cache-inhibited accesses and as guarded accesses because the guarded attribute in the local region descriptor 1220 is asserted. Accesses to locations included within the region 1244 are also identified as cache-inhibited accesses because the cache-inhibited attribute in the local region descriptor 1220 is asserted. If the guarded attribute at the local region descriptor 1220 was not asserted, a least-restrictive policy would have prevailed and accesses to locations included within the region 1244 would not be identified as cache-inhibited accesses. Guarded regions override the normal least-restrictive policy applied to multiple-matching descriptors from the same MPU for an access request. Note that in some embodiments, alternate region attributes may be implemented, and may utilize a most-restrictive policy for multiple matching descriptors in the same MPU, in contrast to the normal policy of least-restrictive. In addition, certain attributes may override other attributes, such as the guarded attribute override of the cache-inhibit attribute illustrated in the example of
Other embodiments, uses, and advantages of the disclosure will be apparent to those skilled in the art from consideration of the specification and practice of the disclosure disclosed herein. The specification and drawings should be considered exemplary only, and the scope of the disclosure is accordingly intended to be limited only by the following claims and equivalents thereof.
Note that not all of the activities or elements described above in the general description are required, that a portion of a specific activity or device may not be required, and that one or more further activities may be performed, or elements included, in addition to those described. Still further, the order in which activities are listed is not necessarily the order in which they are performed.
Also, the concepts have been described with reference to specific embodiments. However, one of ordinary skill in the art appreciates that various modifications and changes can be made without departing from the scope of the present disclosure as set forth in the claims below. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of the present disclosure.
Benefits, other advantages, and solutions to problems have been described above with regard to specific embodiments. However, the benefits, advantages, solutions to problems, and any feature(s) that may cause any benefit, advantage, or solution to occur or become more pronounced are not to be construed as a critical, required, or essential feature of any or all the claims.
Moyer, William C., Circello, Joseph C.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
4325120, | Dec 21 1978 | Intel Corporation | Data processing system |
4672538, | Oct 31 1983 | NEC Corporation | Method of dynamically changing formation of addresses in memory of a data processing system |
4774653, | Aug 07 1985 | Hewlett-Packard Company | Hybrid hardware/software method and apparatus for virtual memory address translation using primary and secondary translation buffers |
4949238, | Feb 18 1987 | Kabushiki Kaisha Toshiba | Apparatus for detecting memory protection violation |
5577230, | Aug 10 1994 | AGERE Systems Inc | Apparatus and method for computer processing using an enhanced Harvard architecture utilizing dual memory buses and the arbitration for data/instruction fetch |
5649159, | Aug 31 1994 | NXP, B V F K A FREESCALE SEMICONDUCTOR, INC | Data processor with a multi-level protection mechanism, multi-level protection circuit, and method therefor |
5666509, | Mar 24 1994 | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | Data processing system for performing either a precise memory access or an imprecise memory access based upon a logical address value and method thereof |
5889952, | Aug 14 1996 | Microsoft Technology Licensing, LLC | Access check system utilizing cached access permissions |
6101590, | Oct 10 1995 | Micro Unity Systems Engineering, Inc. | Virtual memory system with local and global virtual address translation |
6412043, | Oct 01 1999 | Renesas Electronics Corporation | Microprocessor having improved memory management unit and cache memory |
6449699, | Mar 29 1999 | International Business Machines Corporation | Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems |
6449700, | Sep 05 1997 | Oracle America, Inc | Multiprocessing computer system employing a cluster protection mechanism |
6591340, | Oct 01 1999 | Renesas Technology Corporation | Microprocessor having improved memory management unit and cache memory |
6718426, | Jul 19 2000 | Hitachi, Ltd. | Cache memory apparatus and central processor, hand-held device and arithmetic processor using the same |
6810471, | Jun 25 2001 | DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT | Memory protection method and circuit specifying attributes on access |
6836836, | Jan 19 2001 | Sony Corporation | Memory protection control device and method |
6898697, | Mar 29 2002 | Advanced Micro Devices, Inc.; Advanced Micro Devices, INC | Efficient method for mode change detection and synchronization |
7353535, | Mar 31 2003 | Microsoft Technology Licensing, LLC | Flexible, selectable, and fine-grained network trust policies |
7805588, | Oct 20 2005 | Qualcomm Incorporated | Caching memory attribute indicators with cached memory data field |
20020065996, | |||
20020078239, | |||
20020199076, | |||
20030135709, | |||
20030191846, | |||
20040049600, | |||
20050060606, | |||
20060149911, | |||
20070011419, | |||
20070079093, | |||
20070277009, | |||
20080163353, | |||
20080250228, | |||
20080306954, | |||
20090007219, | |||
20090138963, | |||
20090204777, | |||
20100107243, | |||
WO9849623, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Feb 23 2011 | Freescale Semiconductor, Inc. | (assignment on the face of the patent) | / | |||
Feb 23 2011 | CIRCELLO, JOSEPH C | Freescale Semiconductor, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025872 | /0887 | |
Feb 28 2011 | MOYER, WILLIAM C | Freescale Semiconductor, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025872 | /0887 | |
Jan 16 2012 | Freescale Semiconductor, Inc | CITIBANK, N A , AS COLLATERAL AGENT | SECURITY AGREEMENT | 027621 | /0928 | |
May 21 2013 | Freescale Semiconductor, Inc | CITIBANK, N A , AS NOTES COLLATERAL AGENT | SECURITY AGREEMENT | 030633 | /0424 | |
Nov 01 2013 | Freescale Semiconductor, Inc | CITIBANK, N A , AS NOTES COLLATERAL AGENT | SECURITY AGREEMENT | 031591 | /0266 | |
Dec 07 2015 | CITIBANK, N A | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517 ASSIGNOR S HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 053547 | /0421 | |
Dec 07 2015 | CITIBANK, N A | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517 ASSIGNOR S HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 053547 | /0421 | |
Dec 07 2015 | CITIBANK, N A | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292 ASSIGNOR S HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 041703 | /0536 | |
Dec 07 2015 | CITIBANK, N A , AS COLLATERAL AGENT | Freescale Semiconductor, Inc | PATENT RELEASE | 037357 | /0285 | |
Dec 07 2015 | CITIBANK, N A | MORGAN STANLEY SENIOR FUNDING, INC | ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 037486 | /0517 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT | 051029 | /0001 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212 ASSIGNOR S HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT | 042762 | /0145 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212 ASSIGNOR S HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT | 051029 | /0387 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145 ASSIGNOR S HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT | 051145 | /0184 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058 ASSIGNOR S HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT | 042985 | /0001 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058 ASSIGNOR S HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT | 039361 | /0212 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145 ASSIGNOR S HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT | 051145 | /0184 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058 ASSIGNOR S HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT | 051030 | /0001 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212 ASSIGNOR S HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT | 051029 | /0387 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT | 051029 | /0001 | |
Feb 18 2016 | NXP B V | MORGAN STANLEY SENIOR FUNDING, INC | SECURITY AGREEMENT SUPPLEMENT | 038017 | /0058 | |
May 25 2016 | Freescale Semiconductor, Inc | MORGAN STANLEY SENIOR FUNDING, INC | SUPPLEMENT TO THE SECURITY AGREEMENT | 039138 | /0001 | |
Jun 22 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP B V | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST | 052915 | /0001 | |
Jun 22 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP B V | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST | 052915 | /0001 | |
Jun 22 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP B V | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 040928 | /0001 | |
Sep 12 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP, B V F K A FREESCALE SEMICONDUCTOR, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST | 052917 | /0001 | |
Sep 12 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP, B V , F K A FREESCALE SEMICONDUCTOR, INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 040925 | /0001 | |
Sep 12 2016 | MORGAN STANLEY SENIOR FUNDING, INC | NXP, B V F K A FREESCALE SEMICONDUCTOR, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST | 052917 | /0001 | |
Nov 07 2016 | Freescale Semiconductor, Inc | NXP USA, INC | MERGER SEE DOCUMENT FOR DETAILS | 040652 | /0241 | |
Nov 07 2016 | Freescale Semiconductor, Inc | NXP USA, INC | CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241 ASSIGNOR S HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME | 041260 | /0850 | |
Feb 17 2019 | MORGAN STANLEY SENIOR FUNDING, INC | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536 ASSIGNOR S HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 048734 | /0001 | |
Feb 17 2019 | MORGAN STANLEY SENIOR FUNDING, INC | SHENZHEN XINGUODU TECHNOLOGY CO , LTD | CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536 ASSIGNOR S HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS | 048734 | /0001 | |
Sep 03 2019 | MORGAN STANLEY SENIOR FUNDING, INC | NXP B V | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 050744 | /0097 |
Date | Maintenance Fee Events |
Dec 18 2018 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Dec 19 2022 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 25 2018 | 4 years fee payment window open |
Feb 25 2019 | 6 months grace period start (w surcharge) |
Aug 25 2019 | patent expiry (for year 4) |
Aug 25 2021 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 25 2022 | 8 years fee payment window open |
Feb 25 2023 | 6 months grace period start (w surcharge) |
Aug 25 2023 | patent expiry (for year 8) |
Aug 25 2025 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 25 2026 | 12 years fee payment window open |
Feb 25 2027 | 6 months grace period start (w surcharge) |
Aug 25 2027 | patent expiry (for year 12) |
Aug 25 2029 | 2 years to revive unintentionally abandoned end. (for year 12) |