The present invention relates generally to a system and method for storing computer system data, more particularly including performing transparent and/or automatic backups and snapshots of computer system mass storage devices such as SATA hard drives.
Conventional computing devices typically include one to many conventional types of connectable external devices such as mice, keyboards, wireless modems, thumb drives, hard drives, etc., as well as internal devices such as hard drives and SSD drives.
However, the specifications for many of the interfaces for these devices such as Serial AT Attachment (SATA), have no provision for backing up data written to SATA devices. One way to increase reliability of the data is by running specialized software applications. One disadvantage of this approach is lack of interoperability between operating systems—each operating system and file system requires a different backup application. Another disadvantage is the requirement to have a separate storage device for backup. That complicates system configuration. Also, system administrators require maintaining separate configuration of each system due to differences in software and hardware. Example prior art approaches include EP Application Number EP2407905 and EP Application Number EP2517144.
Performance is another issue. Software-based backup systems greatly impact CPU performance and cause many users to turn the backup program off.
Meanwhile, there are a number of applications that would greatly benefit from efficient mass storage data backups, such as applications for storing sensitive data on SATA mass storage devices. Accordingly there remains a need for efficient techniques for performing backups of mass storage devices such as SATA storage devices.
The present invention relates to providing automated functionality over computer system mass storage data, and more particularly relates to a system and method of performing automated and/or transparent data backup on either local or remote storage devices such as SATA storage devices. According to aspects of the invention, the system is transparent to operating system and application software layers. That makes it unnecessary to make any software modifications to the file system, device drivers, operating system, or applications, or installing specialized applications or external hardware. In embodiments, the snapshot functionality of the invention is implemented mostly or entirely in hardware, and is designed to not slow down performance of the rest of the system.
In accordance with these and other aspects, a computer system according to embodiments of the invention includes a mass storage device, a host processor executing an operating system and applications that create and use data stored on the mass storage device, and a secure processor that manages space on the mass storage device for storing one or both of snapshots and backup copies of the data, wherein the secure processor operates independently from and transparently to the host processor, and wherein the host processor cannot independently access the space managed by the secure processor.
These and other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures, wherein:
The present invention will now be described in detail with reference to the drawings, which are provided as illustrative examples of the invention so as to enable those skilled in the art to practice the invention. Notably, the figures and examples below are not meant to limit the scope of the present invention to a single embodiment, but other embodiments are possible by way of interchange of some or all of the described or illustrated elements. Moreover, where certain elements of the present invention can be partially or fully implemented using known components, only those portions of such known components that are necessary for an understanding of the present invention will be described, and detailed descriptions of other portions of such known components will be omitted so as not to obscure the invention. Embodiments described as being implemented in software should not be limited thereto, but can include embodiments implemented in hardware, or combinations of software and hardware, and vice-versa, as will be apparent to those skilled in the art, unless otherwise specified herein. In the present specification, an embodiment showing a singular component should not be considered limiting; rather, the invention is intended to encompass other embodiments including a plurality of the same component, and vice-versa, unless explicitly stated otherwise herein. Moreover, applicants do not intend for any term in the specification or claims to be ascribed an uncommon or special meaning unless explicitly set forth as such. Further, the present invention encompasses present and future known equivalents to the known components referred to herein by way of illustration.
According to general aspects, embodiments of the invention enable providing security functionality over otherwise unsecured SATA data and communications. According to one aspect, embodiments of the invention implement mass storage snapshots and/or backups. According to certain additional aspects, the security functions performed by embodiments of the invention can be logically transparent to the upstream host and to the downstream device.
In one non-limiting example configuration according to embodiments of the invention, secure computer 120 is a standalone computer system, similar to a conventional desktop, laptop or pad computer. In such an example, host 102 is implemented by a SATA host port in communication with a host CPU (e.g. x86), a conventional operating system such as Windows and associated device driver software. In accordance with certain aspects of the invention, in this example, the operation and functionality of subsystem 104 is completely transparent to the host CPU and associated operating system and application software. Moreover, the operating experience of secure computer 120 by a user is identical to the experience of a conventional desktop, laptop or pad computer, albeit with the additional background backup and security functionality of the present invention. So while the application software that can run on the computer is virtually unrestricted, use of devices 110 is strictly controlled by subsystem 106 which enforces security policies as will be described in more detail below.
In these and other embodiments, subsystem 104 is preferably an embedded system. As such, it runs a designated software system furnished together with an embedded processor, and cannot be modified by the end-user of the computer under any circumstances. According to aspects of the present invention, subsystem 104 is responsible for performing security functions such as performing transparent snapshots and/or backups of data on SATA device 110.
An example architecture for implementing subsystem 104 together with a host CPU in a secure computer 120 is described in U.S. Pat. No. 9,231,921, the contents of which are incorporated by reference herein. Those skilled in the art will understand how to implement the principles of the present invention in various configurations of secure computer 120 after being taught by the present disclosure.
SATA device 110 comprises a SATA standard interface included in internal or external storage devices such as disk drives, solid state drives, etc.
Although
Various aspects of the types of security functionality performed by secure SATA subsystem 104 that can be adapted for use in the present invention are described in more detail in co-pending application Ser. No. 13/971,582, the contents of which are incorporated herein by reference in their entirety.
Although
Channel 108 can be implemented in various ways, possibly depending on the number and type of devices to be managed by system 106. Channel 108 can be a separate direct point-to-point link between system 106 and subsystem 104. In other embodiments, channel 108 can be implemented by a transmission medium that is shared between many subsystems 104. In these and other embodiments, the medium can be any combination of wired or wireless media, such as Ethernet or Wireless LAN. In these and other embodiments, channel 108 can be implemented by various types and/or combinations of public and private networks using proprietary protocols or conventional protocols such as UDP or TCP. In some embodiments, data sent over communication channel 108 is encrypted such as being sent over a secure VPN connection to improve security.
According to general aspects, in embodiments of the invention, remote management system 106 is responsible for managing policies that can include lists of allowed devices as well as whether and how often to perform disk snapshots and/or backups. The remote management system 106 can further include functionality for specifying where to back up data within system 106, particular snapshot creation algorithms to use (e.g. time-based, activity-based, storage size-based, user-based, a combination of any of these, etc.), etc. Based on these lists, and devices attached to interfaces of computer 120, remote management system 106 sends appropriate configuration information to subsystem 104 via channel 108.
Accordingly, control messages 114 sent from Remote Management System 106 to one or more Secure SATA Subsystems 104 contain different configuration commands and settings such as snapshot schedules to be described in more detail below. Status messages 112 sent from one or more Secure SATA Subsystems 104 to Remote Management System 106 contain different notifications and alerts. An example of status messages 112 includes notifications of attached devices 110, creation of a new snapshot, status of snapshots, user activity levels, etc. Data messages 116 sent from one or more Secure SATA Subsystems 104 to Remote Management System 106 contain data from secure devices such as hard drive snapshots.
Various aspects of a remote management system and/or security policies that can be adapted for use in the present invention are described in more detail in U.S. Pat. No. 9,215,250, the contents of which are incorporated herein by reference in their entirety.
As mentioned previously, aspects of the invention include providing security functionality to otherwise unsecure SATA interfaces.
As can be seen in comparison to
As set forth above in connection with the more general example of
As shown in the example of
As further shown in the example of
Communication Channel 108 is responsible for secure transmission of configurations and settings from remote management system 106 to secure processor systems 304, and status and command messages between systems 304 and management system 106. Communication channel 108 is typically implemented using Ethernet. In embodiments of the present invention, channel 108 is also primarily responsible for carrying disk drive snapshot and/or backup data. This snapshot/backup data can be encrypted and optionally compressed before being sent to management system 106.
In this example, the hardware device associated with SATA device 410 is a physical storage device 414, such as a hard drive or SSD. SATA Device 410 is responsible for converting data carried by an industry-standard SATA protocol into a vendor-specific data format used by the physical Storage Device 414. SATA Device 410 is connected to the Secure processor system 404 via a connection 442 and 456 such as a SATA standard cable.
As shown, secure processor system 404 in this embodiment of the invention includes a snapshot manager 452. Manager 452 performs transparent snapshots and/or backups of the data passing between SATA Host 402 and Device 410. According to transparency aspects of the invention SATA driver 454 is shown to represent overall functionality of secure processor 404 for providing an otherwise normal connection between SATA host 402 and SATA device 410 via SATA connections 442 and 456.
As further shown in
In software layers above device driver 444 and file system 446 is operating system 448. Examples of Operating Systems are Linux, Mac OS, Windows, Android, or iOS. Applications 450 are shown in software layers above operating system 448.
As further shown in
It should be noted that embodiments of application 462 and secure processor 404 also have the capability to restore the contents of secure computer 120's HDD/SSD (to any given period of time) based on the cumulative snapshots sent over time as well as extract a single or group of files dating back to a given date (i.e. restoring a specific snapshot) using the snapshot management tables described in more detail below. This functionality is preferably exposed for control by a system administrator of system 106 and may also be granted to a given user of computer 120 (with the appropriate permissions).
Embodiments of secure processor 404 and manager 452 also implement a “Near/Far-line backup” strategy. In this strategy, recent snapshots are near-line archived (on the drive) and older snapshots are far-line archived over the network (on a backup server/NAS/SAN or even tape). Embodiments of secure processor 404 and manager 452 could also implement a larger drive (e.g. use of a “semi-virtual” drive that would provide more storage for less money). For example, a 1 TB drive in the secure computer 120 could be used to implement a (“semi-virtual”) 2 TB drive, with the extra 1 TB on a (farther out) backup server. This would leverage smart address (LBA) translation algorithms. It should be noted that this is different from using address translation for implementing snapshots as mentioned above.
Additional or alternative embodiments of secure processor 404 and manager 452 also implement context-based storage. There are different types of documents (or data types) that are used and stored on a PC, for instance: Word docs, pictures, music, video, email, etc. Embodiments of secure processor 404 and manager 452 store on a remote backup server smaller items that are easy and quick to retrieve (e.g. small emails, word docs or pdf files) and/or items that are less-frequently used (e.g. compress and store-off email archives from outlook). This would be done in the background, by the secure processor 404, transparently to the host CPU. The secure processor 404 would need awareness of the types of files being stored by the host's operating system 448 and application 450 behavior. This could be done by profiling drive accesses to learn various operating system or application behavior.
As described in more detail below, embodiments of snapshot manager 452 are responsible for managing used and unused memory blocks in drive 414 for snapshots, including generating a new snapshot, and deleting an existing snapshot. In embodiments, the local drive can only store a limited number of snapshots, and so over time, when a new snapshot needs to be created, an older one (typically the oldest one on the drive) can be backed-up on the backup server 106 (over the network) using application 462 and then deleted to make room for the new snapshot.
According to transparency aspects of the invention, SATA device core 502 and host core 504 operate as peer devices to corresponding SATA Host 402 and SATA Device 410. As such, from the protocol standpoint, they render the secure subsystem of the invention transparent to SATA host 402 and SATA device 410. According to aspects of the invention, cores 502 and 504 are standard full featured SATA cores. Those skilled in the art of SATA devices will understand how to implement SATA device core and host core 502, 504 after being taught by the present disclosure, as well as by existing and future SATA specifications.
Data buffers 508 (e.g. FIFOs) buffer data flowing to/from SATA host 402 and device 410. Buffer manager 506 performs overall buffer control functions, such as keeping track of available space, managing buffer reads and writes from different sources, etc.
Other components 510 include those that implement additional security functionality such as transparent encryption/decryption of SATA communications, virus scanning, etc., as described in more detail in co-pending application Ser. No. 13/971,732.
It should be noted that computer 120 and/or SATA complex 322 can include fewer components than those shown in
In example embodiments of the invention to be described in more detail below, snapshot manager 452 utilizes an address remapping scheme where the addresses to locations in HDD/SSD 414 for incoming SATA data transfer commands are remapped to alternative addresses. By changing the remapping, multiple snapshots and/or backups of data stored or used by the host processor can be created and stored in HDD/SSD 414, completely transparently to the host processor. Meanwhile, by keeping tables completely describing the remapping, snapshot manager 452 ensures that the host processor is able to access the most currently stored data, while maintaining previous snapshots in HDD/SSD 414. The snapshots can also be accessed by the secure processor system and sent to remote management system 106, either according to a specified schedule or on command from the remote management system 106.
As shown, partition 600 includes space 602 for storing data used by the secure CPU, snapshot management tables 604 and space 606 for host processor data, which is stored as two or more snapshots defined by tables 604 and managed by snapshot manager 452. It should be apparent that space 606 is the actual space that the host CPU reads and writes to drive 414. According to aspects of the invention, space 606 is a subset of the total physically available drive space. For example, if the secure computer 120 has a 2 TB drive, the host CPU may only “see” 1 TB of usable data space which is stored using snapshots in area 606, with the rest occupied by spaces 602 and 604. It should be further noted that, although spaces 602, 604 and 606 are all shown as contiguous spaces in
As mentioned above, the mapping of the alternative addresses is kept in tables. Snapshot manager 452 is responsible for saving the mapping tables to space 604 in HDD/SSD 414. During normal operations, the mapping tables are at least partially available to snapshot manager 452 in locally accessible memory. In embodiments, the translation tables are very large and thus the full tables need to be stored on the drive 414. Meanwhile, in order to speed up drive access, a sub-set of the tables are “cached” on-chip, within the SATA complex 322 (and/or the secure processor 304's DDR). From time-to-time, the cache needs to be written out (flushed) to the drive. If the address of the currently translated command is not in cache, then a new section of the table on the drive, that includes the desired translated address, is read to cache. It may be necessary to first flush a section of the cache to drive, to make room for the new section. There are multiple algorithms for determining which section to flush, for example, last recently used (LRU), etc., that are familiar to those skilled in the art and can be used in embodiments of the invention.
For read commands issued by the host processor system and intercepted by SATA device core 502, snapshot manager 452 uses the address received with the command to look up the translated address and forwards the translated address and read command to SATA host core 504. As needed, the incoming command may be broken up into multiple commands to the drive 414. For write commands intercepted by SATA device core 502, snapshot manager 452 retrieves an unused address from a stack of addresses to use as a remapped drive address for the write data and forwards the remapped address and write command to SATA host core 504. If the host processor 432 is writing to the same (logical) location on the drive a second or more times (i.e. for a given, active, snapshot) then the data is translated to the same location as the last write (no need to find an unused address). The stack of unused addresses is maintained by snapshot manager 452. When the secure processor determines that a new snapshot of data should be initiated, snapshot manager 452 will pause processing of commands from the host processor system and save the current translation tables in space 604. This may involve backing up the oldest snapshot to the backup server on system 106, deleting it and create a new snapshot, as set forth above. The translation table 604 caches are flushed to the drive periodically to maintain coherency. Coherent tables from the drive are also sent to the backup server.
As shown in the example of
Since SATA HDD/SSD accesses incur high latency, LTT, SRT, and LTT tables have cached copies in a local cache memory 728 accessible to snapshot manager. The actual implementation of the local cache memory depends on the chip architecture; it can be either on-chip memory or off-chip RAM. As shown in
Page is the smallest data unit used by snapshot manager 452 during address remapping. The remapping is performed from the actual LBA to an alternative LBA. Typically, a page size is several sectors (e.g. 512 bytes) of the physical drive, for example eight.
The mapping of pages is kept in LTT 720. Each snapshot corresponds to a single LTT (e.g. snapshot 0 to Ns−1). Manager 706 loads subset sections of the full LTT 722 from the drive 414 to cache 728 as needed, when SATA commands are processed by the snapshot manager. In embodiments, there are eight LLTTs 714 loaded in cache memory 728, and fully accessible by manager 706 and controller 702.
Each LTT 722 contains only remapped pages that have changed since the last snapshot. SRT 720 is used to indicate which pages are valid for any of the LTTs 722. Manager 704 loads portions of SRT 720 from drive 414 to cache 728 so they are accessible by managers 702 and 704. In embodiments, there are eight LSRTs 714 loaded into cache memory 728.
PMT 724 is used for remapping incoming pages into available physical pages during write transactions. Manager 708 loads portions of PMT 724 from drive 414 to cache memory 728 so they are accessible by manager 708 and controller 702.
In general operation of embodiments of manager 452, LTT Manager 706 accepts LBA requests associated with read and write commands from SATA device core 502 via snapshot controller 702 and performs address translation. LTT manager 706 queries the LSRT 712 on write operations to see if the current command has already been translated for the current snapshot. If not, LSRT 712 is updated and manager 706 instructs manager 708 to update LPMT 716.
LTT's 722 are the translation tables that map all host processor system command LBA's to drive 414 LBA's. For each snapshot that has been initiated, there is a unique LTT 0 to LTT Ns. There is a base snapshot LTT 0 that always defines the oldest version of data on the drive. The starting LBA and size for the base snapshot LTT is programmed to the snapshot registers 724 by the snapshot controller 702. Each subsequent snapshot LTT is saved at the next sequential LBA to form a large block of data on the drive that contains the LTT's for all possible snapshots. Snapshot controller 702 is responsible for programming the registers 724 that define the location of LTTs 722 on the drive 414.
Data buffer manager 710 and data buffers 726 are can be similar to those components described above in connection with
The number n of entries in each LTT is dependent on the virtual size of the drive as well as the granularity of the storage pages. Embodiments of the invention support one sector page size and eight sector page size. With 32 bits per entry in the LTT, the maximum physical drive support with one sector page size is 2 TB. The maximum physical drive size supported for 8 sector page size is 16 TB.
As mentioned above, manager 706 loads portions of LTTs 722 to local cache memory. In the example shown in
The LLTTs 714 will occasionally be saved to the drive LTTs 722 by the snapshot controller 702. The snapshot registers 718 define the current snapshot, and snapshot controller 702 uses the current snapshot information to save the LLTTs 714 to the proper area of the LTTs 722.
When the secure processor determines to discard a snapshot, embodiments of snapshot manager 424 effectively merges the deleted LTT with the base LTT. The secure processor via snapshot manager 424 scans the SRT 720 to determine which LBA's were updated with the discarded snapshot. The translated page addresses for those updated LBA's must be copied to the base snapshot LTT by secure processor 404. The replaced page address in the base snapshot LTT must be marked as available in the PMT 724 so that it may be used by LTT Manager 706 for new write commands. Once all required entries have been transferred to the base LTT, the secure processor 404 writes the snapshot control registers 718 to disable the discarded snapshot. Finally, the secure processor 404 causes the SRT 720 entries for the discarded snapshot to be cleared.
As shown in
SRT 720 identifies which LBA's have changed since the previous snapshot. Embodiments of SRT 720 support up to eight snapshots. Snapshot 0 is considered the base snapshot, and may not be discarded. As write commands are sent to the drive, only the translated address for the written LBA's are updated in the current snapshot LTT. The SRT has one bit that corresponds to each entry in all the LTT's. This means there is one bit per LTT entry and per snapshot. When an entry is updated in a LTT, the corresponding bit in the SRT that maps that update is set to a ‘1’ to record the change. For example 0x00001101 denotes snapshot numbers 3, 2 and 0 for this LBA. LTT Manager 706 causes the appropriate bits in the LSRT 712 to be set as write commands are executed.
Clearing of bits in SRT 720 is left to the secure processor. The secure processor will clear bits in the SRT when a snapshot is discarded. All bits in the SRT corresponding to the discarded snapshot should be cleared once all other tasks of merging the discarded snapshot with a base snapshot are complete.
In the example of
As shown in
PMT 724 is a table that defines which page addresses have been used to remap the drive 414 LBA's. There is one bit in PMT 724 for each page of the drive. When a bit is set in the PMT, the corresponding page address is marked as used (set to a ‘1’). When a bit is cleared in the PMT, the corresponding page address is marked as free (set to a ‘0’). Manager 704 and/or manager 708 in secure processor 404 loads a subset of the PMT into the local cache memory 728. As write commands are executed by the snapshot manager, the snapshot controller 702 scans the locally loaded LPMT 716 to find the next available page. When the next available page address is assigned to an LBA, the corresponding bit in LPMT 716 is automatically set by snapshot controller 702. Once the snapshot has scanned and used all available page addresses as defined in the local PMT, the snapshot controller 702 will interrupt the secure processor. The secure processor is then responsible for causing a new subset of the PMT 724 to be loaded in local memory 728.
The bits in the PMT 724 can only be cleared by the secure processor. The secure processor is responsible for causing the base snapshot LTT to be merged with the discarded snapshot LTT. In embodiments, the discarded snapshot is the oldest existing snapshot aside from the base snapshot. As LTT entries are copied from the discarded snapshot LTT to the base snapshot LTT, the replaced entries of the base LTT are freed up, and must be cleared in the corresponding PMT entries so that the freed page addresses may be used for future write commands.
The size of the PMT depends on the block size. For a block size of 1 sector, PMT table is 32 Mbytes to cover physical drive size of 512 GByte. For block size of 8 sectors, a 4 MByte PMT covers 4 TByte.
Although the present invention has been particularly described with reference to the preferred embodiments thereof, it should be readily apparent to those of ordinary skill in the art that changes and modifications in the form and details may be made without departing from the spirit and scope of the invention. It is intended that the appended claims encompass such changes and modifications.
The present application is a continuation of U.S. application Ser. No. 13/971,651 filed Aug. 20, 2013, now U.S. Pat. No. 9,384,150, the contents of which are incorporated herein by reference in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
4598170 | Piosenka et al. | Jul 1986 | A |
5191542 | Murofushi | Mar 1993 | A |
5724027 | Shipman et al. | Mar 1998 | A |
5946469 | Chidester | Aug 1999 | A |
6061794 | Angelo et al. | May 2000 | A |
6088802 | Bialick et al. | Jul 2000 | A |
6457164 | Hwang et al. | Sep 2002 | B1 |
6507914 | Cain et al. | Jan 2003 | B1 |
6546491 | Challener et al. | Apr 2003 | B1 |
6594780 | Shen et al. | Jul 2003 | B1 |
6725438 | Van Ginneken | Apr 2004 | B2 |
6782424 | Yodaiken | Aug 2004 | B2 |
6820160 | Allman | Nov 2004 | B1 |
6922817 | Bradfield et al. | Jul 2005 | B2 |
7120892 | Knol et al. | Oct 2006 | B1 |
7149992 | Chang et al. | Dec 2006 | B2 |
7240303 | Schubert et al. | Jul 2007 | B1 |
7320071 | Friedman et al. | Jan 2008 | B1 |
7330891 | Yodaiken | Feb 2008 | B2 |
7337100 | Hutton et al. | Feb 2008 | B1 |
7340700 | Emerson et al. | Mar 2008 | B2 |
7350204 | Lambert et al. | Mar 2008 | B2 |
7392324 | Cardone | Jun 2008 | B2 |
7396257 | Takahashi | Jul 2008 | B2 |
7469343 | Ray et al. | Dec 2008 | B2 |
7478235 | England et al. | Jan 2009 | B2 |
7516217 | Yodaiken | Apr 2009 | B2 |
7635272 | Poppe | Dec 2009 | B2 |
7677065 | Miao | Mar 2010 | B1 |
7882071 | Fachan | Feb 2011 | B2 |
7962755 | Pizano et al. | Jun 2011 | B2 |
7987497 | Giles et al. | Jul 2011 | B1 |
8127096 | Chatterjee et al. | Feb 2012 | B1 |
8402529 | Green et al. | Mar 2013 | B1 |
8429419 | Endrys | Apr 2013 | B2 |
8566934 | Srivastava et al. | Oct 2013 | B2 |
8606971 | Cain et al. | Dec 2013 | B2 |
8627106 | Pizano et al. | Jan 2014 | B2 |
8918619 | Yochai | Dec 2014 | B2 |
9384150 | Raskin et al. | Jul 2016 | B2 |
9417815 | Elisha | Aug 2016 | B1 |
20020007456 | Peinado et al. | Jan 2002 | A1 |
20020069396 | Bhattacharya et al. | Jun 2002 | A1 |
20040199879 | Bradfield et al. | Oct 2004 | A1 |
20050240892 | Broberg et al. | Oct 2005 | A1 |
20070067585 | Ueda | Mar 2007 | A1 |
20070174569 | Schnapp | Jul 2007 | A1 |
20070255963 | Pizano et al. | Nov 2007 | A1 |
20080091833 | Pizano | Apr 2008 | A1 |
20080247540 | Ahn et al. | Oct 2008 | A1 |
20080263658 | Michael et al. | Oct 2008 | A1 |
20090006745 | Cavallo et al. | Jan 2009 | A1 |
20090013111 | Berland et al. | Jan 2009 | A1 |
20090033688 | Lin et al. | Feb 2009 | A1 |
20090212844 | Darmawan et al. | Aug 2009 | A1 |
20090313429 | Lee | Dec 2009 | A1 |
20100024004 | Boegelund et al. | Jan 2010 | A1 |
20100049929 | Nagarkar et al. | Feb 2010 | A1 |
20100192230 | Steeves et al. | Jul 2010 | A1 |
20100201400 | Nardone et al. | Aug 2010 | A1 |
20100306774 | Kalbarga | Dec 2010 | A1 |
20110078119 | Soran et al. | Mar 2011 | A1 |
20110102443 | Dror et al. | May 2011 | A1 |
20110131423 | Ponsini | Jun 2011 | A1 |
20110258460 | Pizano et al. | Oct 2011 | A1 |
20120017197 | Mehta | Jan 2012 | A1 |
20120079221 | Sivasubramanian | Mar 2012 | A1 |
20120166582 | Binder | Jun 2012 | A1 |
20120192129 | Bowers et al. | Jul 2012 | A1 |
20130067534 | Soffer | Mar 2013 | A1 |
20130212671 | Wang et al. | Aug 2013 | A1 |
20130238908 | Pizano | Sep 2013 | A1 |
20140149696 | Frenkel | May 2014 | A1 |
Number | Date | Country |
---|---|---|
2 407 905 | Jan 2012 | EP |
2 517 144 | Oct 2012 | EP |
2007-31103 | Aug 2007 | TW |
2009-51822 | Dec 2009 | TW |
Entry |
---|
Office Action with Search Report for related Taiwan Patent Application No. 103128327, dated Oct. 27, 2017, 1 page. |
Garfinkel, “Terra: A Virtual Machine-Based Platform for Trusted Computing”, ACM SOSP, Proc. of the ACN Symp. on Operating System Principles, Oct. 22, 2003, pp. 193-206. |
International Preliminary Report on Patentability for International Patent Application No. PCT/US2014/051705, dated Mar. 3, 2016, 7 pages. |
International Search Report dated Dec. 3, 2014 in corresponding PCT/US14/051705. |
Landau et al., SlitX: Slit Guest-Hypervisor Execution on Multi-Core, 3rd Workshop of IO Virtualization, Jun. 14, 2011, pp. 1-7. |
Number | Date | Country | |
---|---|---|---|
20160306576 A1 | Oct 2016 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 13971651 | Aug 2013 | US |
Child | 15195668 | US |