SYSTEM AND METHOD FOR DISTRIBUTION OF DATA IN EDGE SYSTEMS

Methods and systems for managing distribution of data are disclosed. The data may be distributed by edge systems to processing systems. The data may be distributed using a data pipeline. The data pipeline may include functionality to process data using different modalities depending on the type of data and operable connectivity between the edge systems and processing systems. By modifying the manner in which the data is processed, limitations in operable connectivity may be managed and a broader array of different types of data may be more efficiently distributed.

FIELD

Embodiments disclosed herein relate generally to data distribution. More particularly, embodiments disclosed herein relate to systems and methods for management of distribution of data in edge systems.

BACKGROUND

DETAILED DESCRIPTION

In general, embodiments disclosed herein relate to methods and systems for managing distribution of different types of data. The data may be used to provide various computer implemented services, and may be collected from edge systems.

To facilitate collection of the data from the edge systems, the system may include a data pipeline that adapts to changing conditions and types of data to be distributed. The data pipeline may analyze obtained data to identify how to process the data. The data may be analyzed based on various criteria including, for example, the type of the data, the quantity of the data, etc.

Depending on the analysis and desires of consumers of the data, the data may be marked for immediate streaming to processing systems, or staged for future transactions. If streamed, the data may be immediately provided to processing systems such that the data may be immediately used (e.g., for management purposes).

In contrast, if staged, the data may be temporarily stored in the edge systems prior to distribution. Once staged, the staged data may be used to service queued requests for the data and newly received requests for the data.

To service such requests, transactions may be initiated. During a transaction, the requested data may be divided into portions and individually sent to processing systems. The data may be divided based on criteria that improves the efficiency of use of resources such as communication bandwidth. For example, the size of each portions may be set to reduce overhead (e.g., by filling full frames or other types of data units of communication systems over which the data is transmitted).

To manage transactions, correlation identifiers may be established and transmitted along with the portions of the data. The correlation identifiers may be used to identify relationships between various portions of data received by a processing system, and confirm when a transaction is complete.

Once the data is received by a processing system, the data may be used to directly and/or indirectly service requests. For example, the data may be provided directly to the data consumers, and may be used to generate derived data such as graphical representations reflecting an operating state of the edge system. An administrator or other person may use the graphical representations of the data to select how to manage (e.g., modify the operation) of the edge system. In this manner, the data may be used to both manage the operation of the edge system as well as provide other types of computer implemented services.

In an embodiment, a method for managing distributed processing of data is provided. The method may include obtaining the data from a data source; preparing the data for edge side processing to obtain prepared data; classifying the prepared data to obtain a data classification; selecting an edge side processing method based on the data classification; and performing the selected edge side processing method to provide access to the prepared data to at least one data consumer, and a secure connection being used during the selected edge side processing method to distribute the prepared data.

Preparing the data may include at least one action selected from a group of actions consisting of: filtering the data using a filtering criteria; formatting the data based on a formatting template; and aggregating the data with other data relevant to the at least one data consumer.

Classifying the prepared data may include identifying a type of the data; identifying a criticality of the data; identifying a quantity of the data; and using the type, the criticality, and the quantity to classify the prepared data.

The edge side processing method may be selected from a group of edge side processing methods consisting of: immediate forwarding; and staging for future forwarding.

In an instance of the selecting where the edge side processing method comprises the immediate forwarding, performing the selected edge side processing method may include streaming the prepared data to a processing system associated with the at least one data consumer.

In an instance of the selecting where the edge side processing method comprises the staging for future forwarding, performing the selected edge side processing method may include temporarily storing the prepared data in an edge system based on a retention policy for the data.

In the instance of the selecting where the edge side processing method comprises the staging for future forwarding, performing the selected edge side processing method may further include after temporarily storing the prepared data: obtaining a request from the processing system for at least a portion of the prepared data; based on the request: initiating a transaction for the at least the portion of the prepared data; and establishing a correlation identifier for the transaction usable by an edge system hosting the prepared data and the processing system.

In the instance of the selecting where the edge side processing method includes the staging for future forwarding, performing the selected edge side processing method may also include processing the transaction to provide the at least the portion of the prepared data to the at least one data consumer; and cooperatively monitoring the processing of the transaction to establish a shared understanding of a state of the transaction with the processing system.

Processing the transaction may include dividing the at least the portion of the prepared data based on a criteria to obtain data portions; and providing the data portions to the processing system along with the correlation identifier to facilitate the cooperative monitoring of the processing of the transaction.

In an embodiment, a non-transitory media is provided. The non-transitory media may include instructions that when executed by a processor cause the computer-implemented method to be performed.

In an embodiment, a data processing system is provided. The data processing system may include the non-transitory media and a processor, and may perform the method when the computer instructions are executed by the processor.

Turning toFIG.1, a block diagram illustrating a system in accordance with an embodiment is shown. The system shown inFIG.1may provide computer-implemented services. The computer implemented services may include any type and quantity of computer implemented services. For example, the computer implemented services may include data storage services, instant messaging services, database services, and/or any other type of service that may be implemented with a computing device.

To provide the computer implemented services, the system may collect data and use the collected data in the computer implemented services. To collect data, the system may include any number of edge system100.

Edge system100may collect any type and quantity of information (reflected as stored data). For example, edge system100may include sensors and/or other types of components through which information may be obtained and stored as data.

The data collected by edge system100may be distributed to processing system110(e.g., so that a variety of different types of data from different sources may be used in the computer implemented services). Processing system110may collect data from any number of edge systems, and process the collected data. The processing may include, for example, transforming the data, generating visualizations based on the data, etc. Consumers of the data may use the data and/or the processed data.

To collect desired data, edge system100may be positioned remotely to processing system110. For example, edge system100may be positioned near sources of data (e.g., a factory, a retail location, etc.) while processing system110may be positioned in a data center environment.

To distribute data to processing system110, edge system100may be connected to communication system120and/or other types of systems that may facilitate communications between processing system110and edge system100. However, due to the positioning of edge system100, the operable connection between edge system100and communication system120may not be reliable.

For example, the bandwidth of the connection may vary over time and/or the connection may sometimes be entirely unavailable. Likewise, the operably connection may be of limited reliability (e.g., some data may be corrupted in transit, may be subject to manipulation by malicious entities, etc.).

Additionally, the data collected by edge system100may vary. For example, some types of data collected by edge system100be simple name-value pairs, whereas other collected data may be large collections of data such as files.

In general, embodiments disclosed herein may provide methods, systems, and/or devices for managing data collection and processing in distributed systems. To manage the collection and processing of data, a distributed architecture may be used. The architecture may be distributed across edge system100and processing system110. For example, different services may be hosted by these entities.

The hosted services may facilitate collection and processing of data in a manner that is able to adapt to changing network connections (e.g., increasing/reducing communication bandwidth), address reliability challenges, and manage collection of a broad variety of different types of data.

To provide the above noted functionality, the system ofFIG.1may include any number of edge system100and processing system110. Each of these components is discussed below.

Edge system100, as noted above, may facilitate collection of data. To do so, edge system100may (i) obtain data from a data source, (ii) prepare the data for distribution, (iii) classify the prepared data, (iv) select, based on the prepared data, a type of edge side processing to perform, and (v) perform the edge side processing to distribute the prepared data to processing system110. By adapting how the data is processed, a data pipeline may be established that may efficiently process a broad variety of different types of data. To support the data pipeline, edge system100may host data management service102. Refer toFIG.2for additional details regarding data management service102.

Processing system110, as noted above, may process data obtaining from edge system100and/or other systems. To do so, processing system110may (i) obtain information regarding desired data from data consumers, (ii) establish subscriptions for desired data, (iii) communicate the subscription to any number of edge systems to establish data pipelines, and (iv) participate in the data pipelines to aggregated data desired by data consumers. Once aggregated and/or as the data is obtained, the data may be (i) processed to obtain derived data, (ii) archived for use, and/or (iii) provided to data consumers (e.g., and/or along with derived data). To participate in the data pipeline, processing system110may host data processing service112. Refer toFIG.2for additional details regarding data processing service112.

Data management service102and data processing service112may form a data pipeline that allows for (i) filtering of ingest data, (ii) temporary staging, (iii) data reduction through compression, (iv) real-time data publishing, and (v) transactional multi-part data transmission. To drive the pipeline, data consumers may subscribe to desired data, establish processing modalities for data through the pipeline, and establish archival expectations for data through the pipeline. By doing so, embodiments disclose herein may provide a data source to data consumer solution that addresses environmental challenges such as limitations on communications, reliability, and security.

When providing their functionality, any of (and/or components thereof) edge system100and/or processing system110may perform all, or a portion, of the methods illustrated inFIGS.3A-3D.

Any of the components illustrated inFIG.1may be operably connected to each other (and/or components not illustrated) with communication system120. In an embodiment, communication system120includes one or more networks that facilitate communication between any number of components. The networks may include wired networks and/or wireless networks (e.g., and/or the Internet). The networks may operate in accordance with any number and types of communication protocols (e.g., such as the internet protocol).

Communication system120may also include portable storage devices such as universal serial bus (USB) thumb drives or other types of removable storage devices. The portable storage devices may be used to discrete ferry data between edge system100and processing system110in scenarios in which edge system100is positioned at a dark site that is never operably connected to processing system110via a network connection. Thus, communication system120may not support persistent communication channels between edge system100and processing system110in all scenarios.

While illustrated inFIG.1as including a limited number of specific components, a system in accordance with an embodiment may include fewer, additional, and/or different components than those components illustrated therein.

As discussed above, the system ofFIG.1may facilitate data collection and processing using a data pipeline.

Turning toFIG.2, a data flow diagram in accordance with an embodiment is shown. The data flow diagram may illustrate portions of the data pipeline hosted by edge system100and processing system110.

To participate in the data pipeline, edge system100may include data sources200, ingestion service210, data transaction service220, and staging repository230. Each of these components is discussed below.

Data sources200may include any number and type of data source. Data sources200may include sensors, other devices, user input devices, and/or other sources of data. Data from data sources200may be consumed by ingestion services210.

Ingestion service210may initially process data from data sources200to obtain prepared data. Ingestion service210may process data as it arrives and asynchronously with other processes. The processing performed by ingestion service210may include filtering based on criteria; formatting based on templates, schemas, etc.; aggregating obtained with data from other data sources; and/or other types of processing. The filtering criteria may be any type of criteria such as, for example, quality criteria for the data. The prepared data may be consumed by data transaction service220.

Data transaction service220may process prepared data for distribution to processing system110. The processing may include (i) classifying the prepared data to identify how to process the data, and (ii) processing the data based on the classification.

The data may be classified based on (i) the type of the prepared data, (ii) the quantity of the prepared data, (iii) a likely consumer of the prepared data, (iv) a criticality of the prepared data (which may be based on the type of the prepared data), and/or other classification criteria.

Based on the data classification, the prepared data may be processed generally by either (i) streaming the data to processing system110or (ii) staging the data for future distribution to processing system110. If staged, the prepared data may be stored in staging repository230in accordance with data retention policies. The data retention policies may specify, for example, the duration of time that the prepared data is to be stored prior to deletion. Once staged, the data may be provided to processing system110once the data is requested.

To facilitate distribution of prepared data, either through streaming or staging for future distribution, data transaction service220may include publisher222, request handler224, transaction manager226, and disaggregation manager228. Each of these components is discussed below.

Publisher222may distribute information regarding types of data available from data management service102. For example, publisher222may provide processing system110with information regarding the types of data that may be provided by edge system100.

Request handler224may process requests for data from processing system110. To process the requests, request handler224may cooperate with transaction manager226and disaggregation manager228. For example, when a request for data is received, request handler224may (i) identify the data in staging repository230, (ii) request that transaction manager226establish a correlation identifier for a transaction through which the requested data will be provided to processing system, and (iii) initiate distribution of the data by disaggregation manager228.

Transaction manager226may manage transactions by establishing correlation identifiers for transactions. The correlation identifiers may be identifiers used to manage distribution of data from edge system100. The correlation identifiers may be provided along with data as it is distributed by edge system100so that receiving systems such as processing system110may identify how the data relates to previously received data. As will be discussed below, for large portions of data, disaggregation manager228may divide data into sub-portions for distribution. A common correlation identifier may be used to associate the sub-portions of the data with one another.

Disaggregation manager228may, as noted above, manage division of data into portions for distribution. Disaggregation manager228may divide data based on criteria. The criteria may be based on how edge system100communicates with processing system110. For example, the criteria may be based on a size of a data unit that may be transmitted between edge system100and processing system110to improve communication efficiency. Basing the size of each portion of data on this criteria may reduce the quantity of metadata and/or other overhead for transmitting the data from edge system100to processing system110.

Staging repository230may be implemented using one or more data structures in which data may be stored in accordance with retention policies. When stored in staging repository230, the data may be compressed and/or subjected to various data minimization procedures. Consequently, when distributed, the size-minimized data may be more efficiently distributed.

To facilitate distribution of data, edge system100may be connected to processing system via connection235. Connection235may be a secure connection that utilizes mutual transport layer security and/or other security protocols. Connection235may also utilize port forwarding so that only a single port is used to distribute data from edge system100to processing system110, regardless of the type of data being distributed and/or origin of the distributed data.

To participate in the data pipelined, processing system110may include data processing service250and archive repository260. Each of these components is discussed below.

Data processing service250may acquire and process data from edge system100on behalf of any number of data consumers270. While illustrated as being separate from processing system110, it will be appreciated that some of data consumers270may be hosted by processing system110. To acquire and process data, data processing service250may (i) maintain and use information regarding data available from edge system100as advertised by publisher222, (ii) identify data of interest to data consumers270, (iii) establish subscriptions for the data and actively acquire the data from edge system100, (iv) process and/or otherwise use the data to obtain new/different data requested by data consumers270, (v) provide the data/derived data to data consumers270, and/or (vi) archive data for future use.

To facilitate acquisition and use of data from edge system100, data processing service250may include data consumer interface252, subscription manager254, transaction manager256, and archive manager258. Each of these components is discussed below.

Data consumer interface252may enable data consumers270to express interest in data available from edge system100and/or other data that may be obtained using the data available from edge system100. For example, data consumer interface252may be implemented using an application programming interface through which (i) information regarding data available from edge system100may be obtained, and (ii) requests for the data may be made. When a request for data is made, information regarding the request may be retained for use and distributed to data transaction service220(e.g., request handler224) so that edge system100may initiate distribution of data to fulfill the expressed desire for data.

Subscription manager254may manage distribution of data to data consumers270based on subscriptions. When a data consumer expresses a desire for data, subscription manager254may store information regarding the desire as a subscription. When data is obtained by processing system110, the subscriptions may be checked to ascertain to which data consumers270the data should be distributed. Once identified, subscription manager254may distribute the data to the corresponding data consumers270. When doing so, subscription manager254may cooperate with transaction manager256, discussed below.

Transaction manager256may manage transactions initiated by edge system100. Specifically, transaction manager256may retain correlation identifiers for data, and use the correlation identifiers to manage data received from edge system100to ascertain whether all portions of data for a particular transaction have been received.

For example, as portions of data are received, transaction manager256may check the correlation identifiers against correlation identifiers of transactions to check in data against transactions as the portions of data are received. A check sum, portion list, a confirmation from transaction manager226, and/or other data structure may be checked to ascertain whether all of the portions for a particular transaction have been received and/or are expected to have been received. Once all have been received, then transaction manager256may notify subscription manager254that the data associated with a particular transaction is available for distribution to data consumers270.

If any portions of data for a transaction are not received as expected, transaction manager256may cooperate with transaction manager226to attempt to remediate the situation. For example, transaction manager256may initiate resending of missing portions of data.

Archive manager258may automatically archive select data as it is obtained. Archive manager258may archive data in accordance with archive policies. The archive policies may define under what conditions obtained data is at least temporarily stored in archive repository260.

Archive repository260may be implemented using one or more data structures in which data may be stored in accordance with archive policies. When stored in archive repository260, the data may be compressed and/or subjected to various data minimization procedures.

Any of the active components (e.g.,200-228,250-258) may be implemented using hardware and/or software components. For example, any of the active components may be implemented using software instructions executed by processing devices. Similarly, any of the active components may be implemented using special purposes and/or programmable hardware devices such as application specific integrated circuits, digital signal processors, etc.

As discussed above, the components ofFIG.1may perform various methods to manage storage, distribution, and use of data from data sources.FIGS.3A-3Dillustrate methods that may be performed by the components of the system ofFIG.1. In the diagrams discussed below and shown inFIGS.3A-3D, any of the operations may be repeated, performed in different orders, and/or performed in parallel with or in a partially overlapping in time manner with other operations.

Turning toFIG.3A, a flow diagram illustrating a method for managing data in accordance with an embodiment is shown. The method may be performed by any of edge system100, processing system110, and/or other components of the system shown inFIG.1.

At operation300, data is obtained from a data source. The data may be obtained by receiving it from the data source. The data may be obtained by an edge system.

At operation302, the data is prepared for edge side processing to obtain prepared data. The data may be prepared by filtering the data, formatting the data, aggregating the data with other data, and/or performing other types of processing of the data.

The data may be filtered based on filtering criteria. The filtering criteria may be any type and quantity of criteria. For example, the filtering criteria may be used to identify and exclude irrelevant or extraneous information, to enforce privacy frameworks through elimination of personal information, etc.

The data may be formatted by applying a schema and/or template (and/or using the data to populate a template). For example, a template may be used to sorts or otherwise arranges the data in a predetermined manner as will be expected by a data consumer or other entity.

The data may be aggregated with other data by populating a template with data from multiple data sources, and/or with derived data. The data may be aggregated with other data via other methods.

At operation304, the prepared data is classified to obtain a data classification. The data may be classified by (i) identifying characteristics of the data and (ii) applying a set of classification rules to the characteristics. The characteristics may include a type of the data, a criticality of the data, a quantity of the data, and/or other characteristics.

The type of the data may relate to a source of the data, a format of the data, the information content of the data, typical uses for the data, and/or other types of information regarding the data.

In an embodiment, the data is classified into one of four types: (i) streaming data, (ii) real-time data, (iii) critical events, and (iv) archive data. Streaming data may be low-volume telemetry data, such as CPU usage, disk usage, and similar data. Real-time data may be time-critical and low volume dynamic data. Critical events may be error notifications or other types of system notifications regarding its operation. Archive data may be log data, core dumps, images, and/or other large file-based data.

At operation306, an edge side processing method is selected based on the data classification. Each edge side processing method may be associated with one or more data classifications. The data classification for data may be used as a key to lookup the edge size processing method (e.g., if stored in a lookup data structure).

At operation308, the selected edge side processing method is performed to provide access to the data to at least one data consumer. The edge side processing method may be performed via the methods shown inFIGS.3B-3D.

In an embodiment, the edge side processing method illustrated inFIG.3Bis performed when the data classification is any of streaming data, real-time data, and critical events.

In an embodiment, the edge side processing method illustrated inFIGS.3C-3Dis performed when the data classification is archive data.

The method may end following operation308.

Turning toFIG.3B, a flow diagram illustrating a method for performing edge side processing in accordance with an embodiment is shown. The method may be performed by any of edge system100, processing system110, and/or other components of the system shown inFIG.1.

At operation320, at least one entity subscribed to the data is identified. The entity may be identified checking previously received subscriptions from a processing system.

At operation322, at least the prepared data is streamed to a processing system associated with the at least one entity. The data may be streamed by, after being prepared, analyzed by publisher222, and sent to subscription manager254of processing system110via connection235. When received by subscription manager254, the at least one entity may be identified and provided the prepared data.

Additionally, a copy of the prepared data may also be stored in archive repository if a relevant archive policy is in place.

Further, the prepared data may also be ingested into visualization tools or other entities hosted by the processing system. For example, in the context of telemetry data, graphical representations of changes in the telemetry data over time may be generated and displayed via the visualization tools. Other types of subsequent process using the prepared data may be performed to improve the utility of the prepared data.

The method may end following operation322.

Using the method illustrated inFIG.3B, data that may be of high importance for management purposes may be automatically streamed to a processing system for further analysis without delay.

Turning toFIG.3C, a flow diagram illustrating a method for performing edge side processing in accordance with an embodiment is shown. The method may be performed by any of edge system100, processing system110, and/or other components of the system shown inFIG.1.

At operation330, the prepared data is staged at an edge system. The prepared data may be staged by storing it in staging repository230. When so staged, the data may be minimized and/or otherwise processed to reduce the size of the prepared data.

Additionally, various metadata may be added to the prepared data to facilitate efficient distribution. The metadata may include, for example, correlation identifiers.

Further, the prepared data may be pre-divided into portions or other logical units to facilitate multipart transactions.

The method may end following operation330.

Following operating330, a request for the data may be issued by a processing system, a queued request for the data may be processed (e.g., due to unavailability of communications with the processing system), and/or other events may occur impacting the now-staged data in the edge system.

Turning toFIG.3D, a flow diagram illustrating a method for performing edge side processing in accordance with an embodiment is shown. The method may be performed by any of edge system100, processing system110, and/or other components of the system shown inFIG.1.

At operation340, a request from a processing system for at least a portion of the prepared data may be obtained. The request may be obtained by receiving it, by reading the request from storage, and/or via other methods. The at least the portion of the prepared data may be staged for distribution.

At operation342, based on the request, a transaction for the at least the portion of the data may be initiated. A correlation identifier for the transaction may also be established with the processing system.

The transaction may be initiated by (i) notifying the processing system of the transaction, and (ii) initiating generation of the correlation identifier. The processing system may be notified of the transaction via a message indicating initiation of the transaction.

The correlation identifier may be established by (i) generating the correlation identifier, and (ii) notifying the processing system of the correlation identifier. The correlation identifier may be a globally unique identifier, or another type of identifier.

At operation344, the transaction may be processed. The transaction may be processed by (i) obtaining the at least the portion of the prepared data, (ii) dividing the prepared data into portions (if not already divided), and/or (iii) providing the portion of the prepared data to the processing system. The portion of the prepared data may be provided to the processing system along with copies of the correlation identifier to mark that each of the portion of the prepared data are part of the transaction.

At operation346, the transaction is cooperatively monitored with the processing system to establish a shared understanding of a state of the transaction while the transaction is processed. The transaction may be cooperatively monitored by (i) providing the processing system with information regarding the transmitted portion of the prepared data, and (ii) obtaining an acknowledgement of or error regarding the portions of the prepared data. An acknowledgement may indicate receipt, by the processing system, of the portions of the prepared data. An error may indicate that a portion of the prepared data was not received.

If an error is received, the edge system may take action to remedy the error. For example, the edge system may resend another copy of the portion of the prepared data marked as being in error.

Once acknowledgement of all of the portions of the prepared data is received, a shared understanding of successful completion of the transaction may be obtained by both systems.

The method may end following operation346.

After the prepared data is obtained by the processing system, either through streaming or transaction, the prepared data may be used to service data consumers. For example, the prepared data may be supplied to the data consumers, some or all of the prepared data may be archived for future use, data reduction modalities may be reversed (e.g., if needed to fully utilize the prepared data), derived data such as visualization, graphics, new data, etc. may be generated, and/or other activity may be performed on the processing system side.

Thus, using the methods illustrated inFIGS.3A-3D, embodiments disclosed herein may facilitate collection and use of data of a variety of different types and under a variety of different conditions. To manage responses to these conditions, data obtained by edge systems may be queued and/or otherwise retained for eventual processing as part of the pipeline, as communications with the processing system are available.

To further improve the utility and security of the system, each end of the data pipeline may utilize security measures include, for example, encryption and signing to reduce the susceptibility to tampering. For example, when portions of data as part of a transaction are sent to a processing system, the data may be encrypted and/or signed such that the processing system may verify the authenticity of the data and the likelihood of the data being snooped or otherwise read by unauthorized entities may be reduced. These security measures may be employed at the data transaction service220and data processing service250level. Consequently, an additional layer of security beyond that offered by connection235may also be employed.

In one embodiment, system400includes processor401, memory403, and devices405-407via a bus or an interconnect410. Processor401may represent a single processor or multiple processors with a single processor core or multiple processor cores included therein. Processor401may represent one or more general-purpose processors such as a microprocessor, a central processing unit (CPU), or the like. More particularly, processor401may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processor401may also be one or more special-purpose processors such as an application specific integrated circuit (ASIC), a cellular or baseband processor, a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, a graphics processor, a network processor, a communications processor, a cryptographic processor, a co-processor, an embedded processor, or any other type of logic capable of processing instructions.

Processor401, which may be a low power multi-core processor socket such as an ultra-low voltage processor, may act as a main processing unit and central hub for communication with the various components of the system. Such processor can be implemented as a system on chip (SoC). Processor401is configured to execute instructions for performing the operations discussed herein. System400may further include a graphics interface that communicates with optional graphics subsystem404, which may include a display controller, a graphics processor, and/or a display device.

Processor401may communicate with memory403, which in one embodiment can be implemented via multiple memory devices to provide for a given amount of system memory. Memory403may include one or more volatile storage (or memory) devices such as random access memory (RAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), or other types of storage devices. Memory403may store information including sequences of instructions that are executed by processor401, or any other device. For example, executable code and/or data of a variety of operating systems, device drivers, firmware (e.g., input output basic system or BIOS), and/or applications can be loaded in memory403and executed by processor401. An operating system can be any kind of operating systems, such as, for example, Windows® operating system from Microsoft®, Mac OS®/iOS® from Apple, Android® from Google®, Linux®, Unix®, or other real-time or embedded operating systems such as VxWorks.

System400may further include IO devices such as devices (e.g.,405,406,407,408) including network interface device(s)405, optional input device(s)406, and other optional IO device(s)407. Network interface device(s)405may include a wireless transceiver and/or a network interface card (NIC). The wireless transceiver may be a WiFi transceiver, an infrared transceiver, a Bluetooth transceiver, a WiMax transceiver, a wireless cellular telephony transceiver, a satellite transceiver (e.g., a global positioning system (GPS) transceiver), or other radio frequency (RF) transceivers, or a combination thereof. The NIC may be an Ethernet card.

IO devices407may include an audio device. An audio device may include a speaker and/or a microphone to facilitate voice-enabled functions, such as voice recognition, voice replication, digital recording, and/or telephony functions. Other IO devices407may further include universal serial bus (USB) port(s), parallel port(s), serial port(s), a printer, a network interface, a bus bridge (e.g., a PCI-PCI bridge), sensor(s) (e.g., a motion sensor such as an accelerometer, gyroscope, a magnetometer, a light sensor, compass, a proximity sensor, etc.), or a combination thereof. IO device(s)407may further include an imaging processing subsystem (e.g., a camera), which may include an optical sensor, such as a charged coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) optical sensor, utilized to facilitate camera functions, such as recording photographs and video clips. Certain sensors may be coupled to interconnect410via a sensor hub (not shown), while other devices such as a keyboard or thermal sensor may be controlled by an embedded controller (not shown), dependent upon the specific configuration or design of system400.

Storage device408may include computer-readable storage medium409(also known as a machine-readable storage medium or a computer-readable medium) on which is stored one or more sets of instructions or software (e.g., processing module, unit, and/or processing module/unit/logic428) embodying any one or more of the methodologies or functions described herein. Processing module/unit/logic428may represent any of the components described above. Processing module/unit/logic428may also reside, completely or at least partially, within memory403and/or within processor401during execution thereof by system400, memory403and processor401also constituting machine-accessible storage media. Processing module/unit/logic428may further be transmitted or received over a network via network interface device(s)405.

Processing module/unit/logic428, components and other features described herein can be implemented as discrete hardware components or integrated in the functionality of hardware components such as ASICS, FPGAs, DSPs or similar devices. In addition, processing module/unit/logic428can be implemented as firmware or functional circuitry within hardware devices. Further, processing module/unit/logic428can be implemented in any combination hardware devices and software components.