Patent Description:
Conventional LTE (Long Term Evolution) generally uses licensed radio frequency spectrum for communications between mobile devices and cellular networks. A new unlicensed (shared) spectrum scheme is being introduced in the United States at <NUM> (gigahertz) called CBRS (Citizens Broadband Radio Service). Licensed spectrum and unlicensed spectrum can be used for third generation (<NUM>), fourth generation (<NUM>), and even fifth generation (<NUM>) wireless communications.

In certain instances, conventional LTE networks offer both voice and data services to user equipment via a single subscription such as a single SIM (Subscriber Identification Module). As well known, a subscriber identity module (SIM) is an integrated circuit that securely stores information such as the International Mobile Subscriber Identity (IMSI) number and its related key, which are used to identify and authenticate subscribers on mobile telephony devices (such as mobile phones and computers). However, there are deficiencies associated with conventional LTE cellular networks (e.g., <NUM>, <NUM>, <NUM>) and use of a single SIM to support data or voice services or a dual SIM that supports use of only one SIM at a time.

Patent Application Publication <CIT> discusses how a system and method is provided for delivering content to a plurality of subscriber mobile devices.

An aspect includes a method for use with a mobile device comprising a plurality of subscriber identification modules sharing a cache. The method includes a first subscriber identification module authenticating with and connecting to the network, and a second subscriber identification module authenticating with and connecting to the network, wherein the network comprises a citizens broadband radio service, wherein the first subscriber identification module connects to the network through a first one of a plurality of Citizens Broadband Radio Service devices (CBSDs) within the network, and wherein the second subscriber identification module connects to the network through a second one of the plurality of Citizens Broadband Radio Service devices (CBSDs) within the network. The method also includes, the first subscriber identification module requesting and receiving first data from the network and storing the first data in the cache, the second subscriber identification module requesting and receiving second data from the network and storing the second data in the cache, wherein the first subscriber identification module and the second subscriber identification module simultaneously exchange data with the network for at least a point in time. The method further includes an application executing on the device retrieving and processing at least a portion of the first and second data stored in the cache, while at least one of the first and second subscriber identification modules is storing additional data received from the network in the cache.

In a preferred embodiment, the first data is requested from the network and stored in the cache by the first subscriber identification module for processing by the application substantially in real time, and wherein the second data is requested from the network and stored in the cache by the second subscriber identification module for processing at a time after the first data has been processed.

In a preferred embodiment, at least a portion of the second data is a duplicate of at least a portion of the first data, such that the portion of the second data is processed by the application instead of the portion of the first data.

In a preferred embodiment, the network comprises a citizens broadband radio service, wherein the first subscriber identification module connects to the network through a first one of a plurality of Citizens Broadband Radio Service devices (CBSDs) within the network, and wherein the second subscriber identification module connects to the network through a second one of the plurality of Citizens Broadband Radio Service devices (CBSDs) within the network.

In a preferred embodiment, the network comprises a citizens broadband radio service, and wherein the first subscriber identification module authenticating with and connecting to the network, followed by the second subscriber identification module authenticating with and connecting to the network, further comprises: the first subscriber identification module authenticating with and connecting to a first one of a plurality of Citizens Broadband Radio Service devices (CBSDs) within the network; and responsive to detection of a trigger, the second subscriber identification module: selecting either the first one or a second one of the plurality of Citizens Broadband Radio Service devices (CBSDs); and authenticating with and connecting to the selected one of the plurality of Citizens Broadband Radio Service devices (CBSDs).

In a further preferred embodiment, said method further comprises measuring signal metrics for respective ones of the plurality of Citizens Broadband Radio Service devices (CBSDs) within the network, wherein the first or second one of the plurality of Citizens Broadband Radio Service devices (CBSDs) is selected based at least in part on the measured signal metrics, wherein the second subscriber identification module measures the signal metrics responsive to detection of the trigger.

In a further preferred embodiment, said method further comprises measuring signal metrics for respective ones of the plurality of Citizens Broadband Radio Service devices (CBSDs) within the network, wherein the first or second one of the plurality of Citizens Broadband Radio Service devices (CBSDs) is selected based at least in part on the measured signal metrics, wherein the signal metrics comprise at least one of Reference Signal Received Power (RSRP) and Reference Signal Received Quality (RSRQ).

In a further preferred embodiment, the trigger is based at least in part on the connection between the first subscriber identification module and the first one of the plurality of Citizens Broadband Radio Service devices (CBSDs) within the network.

In a further preferred embodiment, the trigger indicates that the connection of the first subscriber identification module to the network is sufficiently strong that the second subscriber identification module should connect to the network and receive the second data.

In a further preferred embodiment, the trigger indicates that the connection of the first subscriber identification module to the network is sufficiently weak that second subscriber identification module should connect to the network and receive the second data.

In a further preferred embodiment, the trigger indicates that the application requires the second data to be received from the network and stored in the cache, and wherein the trigger indicates that the application is consuming the first data from the cache faster than the first subscriber identification module is storing the first data in the cache after receiving the first data from the network.

In a further preferred embodiment, the trigger indicates that the application requires the second data to be received from the network and stored in the cache, further comprising the steps of: after the second subscriber identification module connects to the network, the second subscriber identification module requesting and receiving the second data from the network and storing the second data in the cache; and after the second subscriber identification module stores the second data in the cache, determining whether the application requires additional data to be received from the network and stored in the cache; and if the application does require the additional data to be received from the network and stored in the cache, the second subscriber identification module requesting and receiving the second data from the network and storing the second data in the cache; if the application does not require the additional data to be received from the network and stored in the cache, the second subscriber identification module disconnecting from the network; wherein the second subscriber identification module is powered on responsive to detection of the trigger, and wherein the second subscriber identification module is powered off upon disconnecting from the network.

According to another aspect, there is provided a computer program product usable within a mobile communications device, the device comprising a plurality of subscriber identification modules sharing a hardware cache, said computer program comprising a non-transitory machine-readable storage medium having machine-readable program code embodied therewith, said machine-readable program code being operative to cause the device to perform a method comprising: a first subscriber identification module authenticating with and connecting to a network, followed by a second subscriber identification module authenticating with and connecting to the network; the first subscriber identification module requesting and receiving first data from the network and storing the first data in the cache, the second subscriber identification module requesting and receiving second data from the network and storing the second data in the cache, wherein the first subscriber identification module and the second subscriber identification module simultaneously exchange data with the network for at least a point in time; and an application executing on the device retrieving and processing at least a portion of the first and second data stored in the cache, while at least one of the first and second subscriber identification modules is storing additional data received from the network in the cache, wherein the network comprises a citizens broadband radio service, wherein the first subscriber identification module connects to the network through a first one of a plurality of Citizens Broadband Radio Service devices (CBSD) within the network, and wherein the second subscriber identification module connects to the network through a second one of the plurality of Citizens Broadband Radio Service devices (CBSDs) within the network.

According to another aspect, there is provided a mobile communications device, comprising: a memory comprising a hardware cache; and a plurality of subscriber identification modules sharing the cache, said mobile communications device further comprising: a processor operative to cause the device to perform a method comprising: the first subscriber identification module authenticating with and connecting to the network, and a second subscriber identification module authenticating with and connecting to the network; the first subscriber identification module requesting and receiving first data from the network and storing the first data in the cache, the second identification module requesting and receiving second data from the network and storing the second data in the cache, wherein the first subscriber identification module and the second subscriber identification module simultaneously exchange data with the network for at least a point in time; and an application executing on the device retrieving and processing at least a portion of the first and second data stored in the cache, while at least one of the first and second subscriber identification modules is storing additional data received from the network in the cache, wherein the network comprises a citizens broadband radio service, wherein the first subscriber identification module connects to the network through a first one of a plurality of Citizens Broadband Radio Service devices (CBSDs) within the network, and wherein the second subscriber identification module connects to the network through a second one of the plurality of Citizens Broadband Radio Service devices (CBSDs) within the network; and a plurality of radio frequency transceivers corresponding to respective ones of the plurality of subscriber identification modules, wherein the first and second subscriber identification modules connect to and receive data from the network through respective first and second radio frequency transceivers.

As used herein, "facilitating" an action includes performing the action, making the action easier, helping to carry the action out, or causing the action to be performed. Thus, by way of example and not limitation, instructions executing on one processor might facilitate an action carried out by instructions executing on a remote processor, by sending appropriate data or commands to cause or aid the action to be performed. For the avoidance of doubt, where an actor facilitates an action by other than performing the action, the action is nevertheless performed by some entity or combination of entities.

Techniques of the present invention can provide substantial beneficial technical effects. For example, one or more embodiments may improve user experience, e.g., when using the CBRS spectrum for data and voice connectivity and communications. For example, one or more embodiments may prevent a user from being disconnected or experiencing a degraded level of quality of service (QoS) if the unlicensed spectrum connection becomes degraded or untenable.

These and other features and advantages of the present invention will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings.

It is emphasized that, according to common practice, the various features of the drawings are not to scale.

Reference will now be made in greater detail to embodiments of the invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numerals will be used throughout the drawings and the description to refer to the same or like parts.

As used herein, the terminology "computer" or "computing device" includes any unit, or combination of units, capable of performing any method, or any portion or portions thereof, disclosed herein. For example, the "computer" or "computing device" may include at least one or more processor(s).

As used herein, the terminology "processor" indicates one or more processors, such as one or more special purpose processors, one or more digital signal processors, one or more microprocessors, one or more controllers, one or more microcontrollers, one or more application processors, one or more central processing units (CPU)s, one or more graphics processing units (GPU)s, one or more digital signal processors (DSP)s, one or more application specific integrated circuits (ASIC)s, one or more application specific standard products, one or more field programmable gate arrays, any other type or combination of integrated circuits, one or more state machines, or any combination thereof.

As used herein, the terminology "memory" indicates any computer-usable or computer-readable medium or device that can tangibly contain, store, communicate, or transport any signal or information that may be used by or in connection with any processor. For example, a memory may be one or more read-only memories (ROM), one or more random access memories (RAM), one or more registers, low power double data rate (LPDDR) memories, one or more cache memories, one or more semiconductor memory devices, one or more magnetic media, one or more optical media, one or more magneto-optical media, or any combination thereof.

As used herein, the terminology "instructions" may include directions or expressions for performing any method, or any portion or portions thereof, disclosed herein, and may be realized in hardware, software, or any combination thereof. For example, instructions may be implemented as information, such as a computer program, stored in memory that may be executed by a processor to perform any of the respective methods, algorithms, aspects, or combinations thereof, as described herein. Instructions, or a portion thereof, may be implemented as a special purpose processor, or circuitry, that may include specialized hardware for carrying out any of the methods, algorithms, aspects, or combinations thereof, as described herein. In some implementations, portions of the instructions may be distributed across multiple processors on a single device, on multiple devices, which may communicate directly or across a network such as a local area network, a wide area network, the Internet, or a combination thereof.

As used herein, the term "application" refers generally to a unit of executable software that implements or performs one or more functions, tasks or activities. For example, applications may perform one or more functions including, but not limited to, telephony, web browsers, e-commerce transactions, media players, travel scheduling and management, smart home management, entertainment, and the like. The unit of executable software generally runs in a predetermined environment and/or a processor.

As used herein, the terminology "determine" and "identify," or any variations thereof includes selecting, ascertaining, computing, looking up, receiving, determining, establishing, obtaining, or otherwise identifying or determining in any manner whatsoever using one or more of the devices and methods are shown and described herein.

As used herein, the terminology "example," "the embodiment," "implementation," "aspect," "feature," or "element" indicates serving as an example, instance, or illustration. Unless expressly indicated, any example, embodiment, implementation, aspect, feature, or element is independent of each other example, embodiment, implementation, aspect, feature, or element and may be used in combination with any other example, embodiment, implementation, aspect, feature, or element.

As used herein, the terminology "or" is intended to mean an inclusive "or" rather than an exclusive "or. " That is unless specified otherwise, or clear from context, "X includes A or B" is intended to indicate any of the natural inclusive permutations. That is if X includes A; X includes B; or X includes both A and B, then "X includes A or B" is satisfied under any of the foregoing instances.

Further, for simplicity of explanation, although the figures and descriptions herein may include sequences or series of steps or stages, elements of the methods disclosed herein may occur in various orders or concurrently. Additionally, elements of the methods disclosed herein may occur with other elements not explicitly presented and described herein. Furthermore, not all elements of the methods described herein may be required to implement a method in accordance with this disclosure. Although aspects, features, and elements are described herein in particular combinations, each aspect, feature, or element may be used independently or in various combinations with or without other aspects, features, and elements.

Further, the figures and descriptions provided herein may be simplified to illustrate aspects of the described embodiments that are relevant for a clear understanding of the herein disclosed processes, machines, manufactures, and/or compositions of matter, while eliminating for the purpose of clarity other aspects that may be found in typical similar devices, systems, compositions and methods. Those of ordinary skill may thus recognize that other elements and/or steps may be desirable or necessary to implement the devices, systems, compositions and methods described herein. However, because such elements and steps are well known in the art, and because they do not facilitate a better understanding of the disclosed embodiments, a discussion of such elements and steps may not be provided herein. However, the present disclosure is deemed to inherently include all such elements, variations, and modifications to the described aspects that would be known to those of ordinary skill in the pertinent art in light of the discussion herein.

In an illustrative embodiment, dual SIM devices may be connected to a network using unlicensed spectrum and/or a network using licensed spectrum. More particularly, in an illustrative embodiment, a service provider may provision the dual SIM device with one SIM for operation with unlicensed spectrum and one SIM for operation with licensed spectrum. The unlicensed spectrum SIM may be associated with the service provider and the licensed spectrum SIM may be associated with another service provider, however, both the unlicensed spectrum SIM and the licensed spectrum SIM may be operated by the service provider. However, as further discussed herein, embodiments of the invention may be used when both SIMs are provisioned for operation with unlicensed spectrum and/or when both SIMs are provisioned for operation with unlicensed spectrum.

In an illustrative embodiment, the unlicensed spectrum may be a Citizens Broadband Radio Service (CBRS) spectrum which is controlled by a spectrum access system (SAS). CBRS spectrum is a type of unlicensed spectrum or shared spectrum which is shared between multiple entities including government users (such as the military), licensed users, and non-licensed users. CBRS is a multi-tiered wireless band between <NUM> and <NUM>. In particular, CBRS is a three-tiered access framework including incumbent users (i.e., federal, military, and the like), priority access users (winning auction bidders), and general authorized access users, where the general users are permitted to use any portion of the CBRS spectrum not assigned to a higher tier user and may also operate opportunistically on unused priority access spectrum. Availability of CBRS spectrum dynamically changes depending on use by higher priority entities. Higher tier users are protected from lower tier users using a centralized spectrum access system (SAS), which may be a federal or commercial entity. The SAS authorizes or grants spectrum to access points known as CBRS Devices (CBSDs) and performs interference management to protect higher tier users. This protection may include, for example, dropping CBSDs which are general authorized access users. In summary, CBRS is an interference limited network which means that the performance of the network and the data sent to CBRS subscribers is limited by the amount of interference the CBRS users or subscribers experience in the frequency band of operation. Although illustrative embodiments are discussed herein primarily with reference to CBRS, embodiments of the present invention may be utilized with other unlicensed and/or licensed spectrum schemes.

<FIG> is a diagram of an exemplary network architecture usable with a dual SIM device in accordance with one or more aspects of the invention. More particularly, <FIG> is a diagram of an example architecture <NUM> where dual SIM devices connect and communicate in unlicensed spectrum and/or licensed spectrums networks operated by a service provider. In an illustrative embodiment, the architecture <NUM> may include a CBRS network <NUM> which may provide wireless coverage. The CBRS network <NUM> may include CBSDs <NUM>, <NUM>, and <NUM>. In an implementation, the CBSDs <NUM>, <NUM>, and <NUM> may form a cluster that may be controlled by a controller <NUM>. The number of clusters and the number of CBSDs is illustrative and the architecture <NUM> may include more or less clusters and each cluster may include more or less CDSDs. The architecture <NUM> may include a SAS <NUM> which is connected to or in communication (collectively "in communication with") with each of the CBSDs <NUM>, <NUM>, and <NUM>, or the controller <NUM> when appropriate.

In an illustrative embodiment, the architecture <NUM> may include a licensed spectrum network <NUM> which may provide wireless coverage. The licensed spectrum network <NUM> may include base stations <NUM> and <NUM>. The number of base stations is illustrative and the architecture <NUM> may include more or less base stations. The <NUM> and <NUM> may be in communication with a core network <NUM>, which may include a mobility management entity (MME) <NUM>, a serving gateway <NUM>, and a packet data network (PDN) gateway <NUM>. The core network <NUM> may be in communication with a network <NUM>, which may include at least the Internet, and which may in communication with a memory/storage <NUM>.

A dual SIM device <NUM> may be in communication with one of the CBSDs <NUM>, <NUM>, and <NUM>, and/or one of the base stations <NUM> and <NUM>. The communications between the dual SIM device <NUM>, particular CBSDs <NUM>, <NUM>, and <NUM>, the SAS <NUM>, the controller <NUM> when applicable, particular base stations <NUM> and <NUM>, the core network <NUM>, the network <NUM>, and the memory/storage <NUM>, as appropriate and applicable, may include wired communications, wireless communications, or a combination thereof. The architecture <NUM> is illustrative and may include additional, fewer or different devices, entities and the like which may be similarly or differently architected without departing from the scope of the specification and claims herein. For example, embodiments of the present invention may be used with only one of the two networks shown in <NUM>, i.e., only unlicensed network <NUM> and/or only licensed network <NUM>. Moreover, the illustrated devices may perform other functions without departing from the scope of the specification and claims herein.

The CBSDs <NUM>, <NUM>, and <NUM> may be a base station, an access point, an access node or like device which enables radio communications access between, for example, the dual SIM device <NUM> to other devices. Each CBSD <NUM>, <NUM>, and <NUM> may be authorized and granted spectrum allocation by the SAS <NUM> (which may be communicated via the controller <NUM>, for example, in an implementation). Each CBSD <NUM>, <NUM>, and <NUM> may have sectors which provide wireless communications coverage.

The base stations <NUM> and <NUM> may be a node-B, an evolved node-B, an access point, an access node or like device which enables radio communications access between, for example, the dual SIM device <NUM> to other devices. Each base station <NUM> and <NUM> may have sectors which provide wireless communications coverage.

In an implementation, the CBSDs <NUM>, <NUM>, and <NUM> may be owned and operated by the service provider, and the base stations <NUM> and <NUM> may be owned by a multiple systems operator and may be operated by the service provider. That is, the CBRS network <NUM> and the licensed spectrum network <NUM> may be operated by the same service provider, although this is not a requirement of the invention.

The dual SIM device <NUM> may be, but is not limited to, end user devices, cellular telephones, Internet Protocol (IP) devices, mobile computers, laptops, handheld computers, PDAs, personal media devices, smartphones, notebooks, notepads, phablets and the like which may include two (<NUM>) SIMs and at least one radio. One SIM of the dual SIM device <NUM> may be provisioned for operation with the CBRS network <NUM> and the other SIM may be provisioned for operation with the licensed spectrum network <NUM>.

The SAS <NUM> enables access to the CBRS spectrum and dynamically manages the spectrum for optimal use, efficiency, and compliance with CBRS rules. The SAS <NUM> communicates with each CBSD for registration, grant allocation/deallocation and interference management. The SAS <NUM> may perform interference analysis based on power measurements.

Operationally, and as described in detail herein below, the SAS <NUM> may grant spectrum to each activated CBSD, such as the CBSDs <NUM>, <NUM>, and <NUM> and may establish a wireless coverage of CBRS network <NUM>. In an implementation, the communication may be via the controller <NUM>. Base stations <NUM> and <NUM> may establish a wireless coverage of licensed spectrum network <NUM>.

<FIG> is a block diagram of a dual SIM device with a data cache in accordance with one or more aspects of the invention. Device <NUM> may implement, for example, the dual SIM device <NUM> discussed above with reference to <FIG>. Device <NUM> may include, but is not limited to, a first radio frequency transceiver (Radiol) <NUM>, a first SIM controller (SIM1) <NUM> coupled to the first radio frequency device <NUM>, a second radio frequency transceiver (Radio2) <NUM>, a second SIM controller (SIM2) <NUM> coupled to the second radio frequency transceiver <NUM>, a shared cache <NUM> coupled to the radios <NUM> and <NUM>, and an application layer <NUM> coupled to the SIMs <NUM> and <NUM>. Device <NUM> may include other elements which may be desirable or necessary to implement embodiments of the present invention, such as the processor and memory discussed below with reference to <FIG>. For example, device <NUM> may also include additional SIMs and/or radios.

Device <NUM> is a Dual SIM Dual Active (DSD A) device in which each of the radio transceivers <NUM> and <NUM>, coupled to and independently controlled by respective SIMs <NUM> and <NUM>, can simultaneously transmit and/or receive data from a network. For example, radio transceiver <NUM> (controlled by SIM <NUM>) can receive data at the same time that radio transceiver <NUM> (controlled by SIM <NUM>) is receiving data. Although it is common parlance to refer to SIMs <NUM> and <NUM> receiving data (e.g., from a network), the data is actually received from the network by the radios <NUM> and <NUM> associated with the SIMs.

Radios <NUM> and <NUM> (and thus SIMs <NUM> and <NUM>) may simultaneously connect to (e.g., receive data from) the same access point (in some embodiments, either the same sector or different sectors) <NUM>. However, radios <NUM> and <NUM> (and thus SIMs <NUM> and <NUM>) may each connect to (e.g., receive data from) a different access point: radio <NUM> may connect to a first access point (AP <NUM>) <NUM>, while radio <NUM> may connect to a second access point (AP <NUM>) <NUM>. Generally, access points <NUM> and/or <NUM> may comprise CBSDs (e.g., <NUM>, <NUM>, <NUM>) and/or base stations (e.g., <NUM>, <NUM>) as discussed above with reference to <FIG>. In an illustrative embodiment, SIMs <NUM> and <NUM> (and thus radios <NUM> and <NUM>) may connect to (e.g., receive data from) the same network (e.g., <NUM> or <NUM> in <FIG>).

More particularly, in an illustrative embodiment, SIMs <NUM> and <NUM> (through radios <NUM> and <NUM>) are both configured to connect to, and receive data from, an unlicensed network, such as CBRS <NUM> in <FIG>. Radios <NUM> and <NUM> (and thus SIMs <NUM> and <NUM>) may simultaneously connect to (e.g., receive data from) the same CBSD (in some embodiments, either the same sector or different sectors) <NUM> which may correspond to, e.g., <NUM> in <FIG>. However, radios <NUM> and <NUM> (and thus SIMs <NUM> and <NUM>) may each connect to (e.g., receive data from) a different CBSD within the same network (e.g., <NUM> in <FIG>): radio <NUM> may connect to a first CBSD <NUM> which may correspond to, e.g., <NUM> in <FIG>, while radio <NUM> may connect to a second CBSD <NUM> which may correspond to, e.g., <NUM> in <FIG>.

In another illustrative embodiment, SIMs <NUM> and <NUM> (through radios <NUM> and <NUM>) are both configured to connect to, and receive data from, a licensed network, such as <NUM> in <FIG>. Radios <NUM> and <NUM> (and thus SIMs <NUM> and <NUM>) may simultaneously connect to (e.g., receive data from) the same base station (in some embodiments, either the same sector or different sectors) <NUM> which may correspond to, e.g., <NUM> in <FIG>. However, radios <NUM> and <NUM> (and thus SIMs <NUM> and <NUM>) may each connect to (e.g., receive data from) a different base station within the same network (e.g., <NUM> in <FIG>): radio <NUM> may connect to a first base station <NUM> which may correspond to, e.g., <NUM> in <FIG>, while radio <NUM> may connect to a second base station <NUM> which may correspond to, e.g., <NUM> in <FIG>.

In a further illustrative embodiment, a dual SIM device <NUM> may be connected to a CBSD such as CBSDs <NUM>, <NUM>, and <NUM> within CBRS network <NUM> using a first radio <NUM>. The second radio <NUM> of the dual SIM device <NUM> may connect to a second network, such as for example, the licensed spectrum network <NUM> via base stations <NUM> and <NUM>. Thus, the first SIM <NUM> may be provisioned for operation with unlicensed spectrum, CBRS spectrum or the like as operated by a service provider, and the second SIM <NUM> may be provisioned with another MSO or the like but operated by the service provider.

Device <NUM> includes a cache <NUM> which is coupled to both radios <NUM> and <NUM>. In an illustrative embodiment, radios <NUM> and <NUM> store data received from the networks (e.g., from <NUM> and/or <NUM>) in the same cache <NUM>. Thus, shared cache <NUM> will include all data from both radios <NUM> and <NUM>. Cache <NUM> is preferably implemented using hardware rather than software to allow for a capacity on the order of gigabytes rather than megabytes.

Application layer <NUM> is operative to read data stored in the cache (e.g., by both radios <NUM> and <NUM>) and to perform various processing operations (e.g., displaying a video). Application layer <NUM> can determine its current and predicted future data needs, and can inform SIMs <NUM> and <NUM>. Based on this information from application layer <NUM>, as well as access to the contents of cache <NUM>, SIMs <NUM> and <NUM> can instruct radios <NUM> and <NUM> to obtain the requested data. Because the first SIM <NUM> and second SIM <NUM> both save received data to the same cache <NUM> within the device <NUM>, each SIM (e.g., <NUM>) will always know how much data is saved in the cache <NUM> through the other SIM (e.g., <NUM>).

Illustrative embodiments of the present invention utilize the dual SIMs <NUM> and <NUM>, and the shared cache <NUM>, to improve the throughput (e.g., speed and quality) of wireless communications. In the illustrative examples discussed herein, it is assumed that the primary unit (SIM <NUM> and radio <NUM>) is being utilized to receive a streaming video comprising a series of packets. However, one skilled in the art will understand that this is not a requirement of the invention, and that illustrative embodiments of the present invention may be utilized in conjunction with transmission of any type of data, such as a file comprising a plurality of blocks.

In an illustrative embodiment, the primary unit (SIM <NUM> and radio <NUM>) and the secondary unit (SIM <NUM> and radio <NUM>) are operative to receive different portions of the same data (e.g., different blocks and/or packets of the same file and/or stream). For example, the primary unit may receive a first part (e.g., <NUM>% of the blocks and/or packets) of a file and/or stream, while the secondary unit may receive a second part (e.g., <NUM>% of the blocks and/or packets). The radios simultaneously receiving different portions of the data, and storing them in a shared cache, can accelerate (e.g., double) data transfer speeds.

In another illustrative embodiment, the primary unit (SIM <NUM> and radio <NUM>) and the secondary unit (SIM <NUM> and radio <NUM>) both receive the same data (e.g., the same packets and/or blocks of a file and/or stream). Simultaneously receiving duplicate data can provide redundancy, thereby enhancing error correction capabilities. By way of example, if a block and/or packet received by one radio (e.g., <NUM>) is found to be corrupt (e.g., based on a checksum calculation), it can be replaced within the cache by an intact version of the same block and/or packet received by the other radio (e.g., <NUM>). Duplicate data from radios <NUM> and <NUM> can be detected (e.g., based on application identifier, session identifier, and/or sequence identifier) and resolved within cache <NUM>. In some embodiments, duplicate data within cache <NUM> may be deleted, e.g., where there is little available storage capacity within cache <NUM>. However, where there is sufficient storage capacity available within cache <NUM>, it may be desirable to keep both copies of the data (e.g., from radio <NUM> and from radio <NUM>) in order to enhance reliability and resiliency.

In a further illustrative embodiment, the primary unit (SIM <NUM> and radio <NUM>) may receive data which is currently being used by an application and/or user, while the secondary unit (SIM <NUM> and radio <NUM>) may receive data which is deemed likely to be used by the application and/or user in the future. For example, radio <NUM> may receive packets corresponding to a portion (e.g., scene) of a video which the user is currently viewing, while radio <NUM> may receive packets corresponding to a subsequent portion (e.g., scene) of the video which the user will view if the user continues watching that video. As another example, radio <NUM> may receive packets and/or blocks corresponding to a video stream and/or file which the user is currently viewing, while radio <NUM> may receive packets and/or blocks corresponding to a video stream and/or file which the user is likely to view after the current video ends (e.g., one or more videos suggested to the user as being related to the current video).

In a still further illustrative embodiment, the primary unit (SIM <NUM> and radio <NUM>) may receive data which is currently deemed to be high priority by an application and/or user, which may be used immediately, while the secondary unit (SIM <NUM> and radio <NUM>) may receive data which is deemed to be lower priority by an application and/or user, which may be saved for later use. By way of example, radio <NUM> may receive a streaming video which the user is currently watching, while radio <NUM> may receive a system update which the user wishes to delay installing until after the user has finished watching the video. For instance, the user may wish to save the system update and install it at a time when the user is not connected to the network (e.g., is in airplane mode) or has a poor connection and therefore unable to watch streaming video.

As previously noted, device <NUM> in <FIG> is a Dual SIM Dual Active (DSDA) device in which each of the SIMs <NUM> and <NUM> is coupled to a respective radio transceiver <NUM> and <NUM>. However, one or more embodiments of the present invention may also be applicable to a Dual SIM Dual Standby (DSDS) device, in which a plurality of SIMs may share a single radio transceiver. In such an implementation, the first SIM <NUM> and the second SIM <NUM> may operate on a time-slotted basis with a shared radio frequency transceiver, which would be coupled to a cache <NUM> as discussed above.

Thus, illustrative embodiments may receive data using a first SIM <NUM> and simultaneously buffer data in cache <NUM> using a second SIM <NUM>. More particularly, first SIM <NUM> may receive real-time data, while second SIM <NUM> buffers data that can be consumed by the phone <NUM>, and more particularly by application layer <NUM>. In an embodiment, when good (e.g., above average) radio conditions are detected after the first SIM <NUM> connects to a CBSD, the second SIM <NUM> automatically turns on and connects to a CBSD. The second SIM <NUM> may connect to the same network as the first SIM <NUM>, but it need not connect to the same CBSD as the first SIM <NUM>. For example, the second SIM <NUM> can connect to a different CBSD within the network if the signal it receives from that CBSD is much better than the one that the first SIM <NUM> is receiving from the CBSD to which it is connected. While radio conditions are good (e.g., above average), the second SIM buffers the data that application layer <NUM> can consume in the future or when radio conditions are no longer good.

<FIG> is a flowchart showing a network communication process in accordance with one or more aspects of the invention. It should be noted that in <FIG> and <FIG>, decision points are represented with rounded rectangles rather than diamonds. Process <NUM> begins with step <NUM>, in which a first radio <NUM> (associated with first SIM <NUM>) connects to a first access point <NUM>, which could be a CBSD and/or a base station. Once first radio <NUM> is connected to the first access point <NUM>, first SIM <NUM> begins receiving real-time data. Step <NUM> determines whether primary SIM <NUM> is able to meet the real-time data demands of application layer <NUM>. For example, primary SIM <NUM> may be unable to provide data to application layer <NUM> with quantity and quality if its connection to the network through first radio <NUM> and first access point <NUM> is of poor quality, e.g., having a slow transmission speed and/or a high bit error rate. However, step <NUM> would test for any scenario in which data is consumed by application layer <NUM> faster than it can be provided by primary SIM <NUM>. This may include situations where a bottleneck (limiting factor) involves processing bandwidth rather than network bandwidth.

For example, as discussed above, first SIM <NUM> may be connected to a unlicensed shared spectrum network, such as CBRS <NUM> discussed above with reference to <FIG>. Because spectrum is shared on a CBRS network, as the number of users on the network increases, the throughput per user decreases. Moreover, as previously mentioned, CBRS is an interference limited network which means that the performance of the network and the data sent to CBRS subscribers is limited by the amount of interference the CBRS users or subscribers experience in the frequency band of operation. The SAS performs interference management to protect higher tier users which may include, for example, dropping CBSDs which are general authorized access users. Thus, availability of CBRS spectrum - and quality of service (QoS) - dynamically changes depending on use by higher priority entities.

Step <NUM> may additionally or alternatively include a determination that radio conditions (e.g., for first radio <NUM>) are above a specified threshold and/or better than average. For example, dual SIM device <NUM> may measure real-time QoS using the connected SIM <NUM> and radio <NUM>. If primary SIM <NUM> is able to produce data with sufficient quantity and quality to satisfy the needs of application layer <NUM> in step <NUM> and/or the quality of service for the network connection to the first access point <NUM> satisfies a condition (e.g., an absolute or relative threshold), then as shown by step <NUM> the application layer <NUM> will use real-time data from primary SIM <NUM>, while also activating (e.g., waking up) the second radio <NUM>. In some embodiments, step <NUM> may include the second radio <NUM> not only waking up, but also connecting to the first access point <NUM>. Primary SIM <NUM> will often provide real-time time to application layer <NUM> as long as it is able to: hence, step <NUM> may continue throughout steps <NUM>-<NUM> discussed below.

Signal strength measurements may be performed by the SIM <NUM> that is not being used. The signal strengths may be Reference Signal Received Power (RSRP), Reference Signal Received Quality (RSRQ), or other power measurement metrics. If a network connection to the second access point <NUM> is stronger than a current network connection to the first access point <NUM> (optionally, plus a defined delta or offset) in step <NUM>, then the second radio <NUM> will connect to the second access point <NUM> in step <NUM>. Otherwise, the second radio <NUM> will be connected to the first access point <NUM> in step <NUM>.

Once the second radio <NUM> is connected to an access point in either step <NUM> or step <NUM>, a determination is made as to the quality of the data in cache <NUM>. This may involve a determination that the data in cache <NUM> is of insufficient quality, e.g., corrupt or unreliable, with an unacceptably high bit error rate. Additionally or alternatively, this may involve a determination that data in cache <NUM> is stale: e.g., the data in cache <NUM> was not consumed before a specified time threshold. Staleness may occur with cached data which is expected to change frequently, such as social media updates or other interpersonal communications, such as emails or text messages.

If step <NUM> determines that the data in the cache is good, then process <NUM> advances to step <NUM>, where the second SIM <NUM> stores additional data in cache <NUM>, such as data which is likely to be used by application layer <NUM> in the future, as discussed above. If step <NUM> determines that the data in the cache is bad (e.g., corrupt and/or stale), then the process <NUM> advances to step <NUM>, where the second SIM <NUM> replaces and/or refreshes the bad data stored in the cache with data which is valid and/or updated. As discussed above, if there is sufficient storage capacity available in cache <NUM>, the bad data may be retained along with the replacing/refreshing data, rather than replaced with the new data.

After step <NUM> or step <NUM>, process <NUM> returns to step <NUM>, to determine again whether the primary SIM <NUM> is keeping up with the data demands of the application layer <NUM> and/or whether the QoS of the network connection had degraded. In an implementation, if the measured QoS is less than a previous measurement but still above the required (minimum threshold) QoS, then more frequent measurements may be made. If the performance of the primary SIM <NUM> and the network connection of first radio <NUM> meets the requisite standards, then the process repeats steps <NUM>-<NUM> as discussed above. If the performance of the primary SIM <NUM> and the network connection of first radio <NUM> has fallen below minimum standards, the application layer <NUM> fetches the data stored in the cache <NUM> in lieu of or in addition to the real-time data from primary SIM <NUM>. In some implementation, the application layer <NUM> may begin to fetch stored data from cache <NUM> in step <NUM> if the performance has gone down for a defined number of measurements but has not yet fallen below the specified minimum threshold(s).

<FIG> is a flowchart showing another network communication process in accordance with one or more aspects of the invention. Process <NUM> begins with steps <NUM>-<NUM>, in which the first SIM <NUM> and second SIM <NUM> are authenticated, and the first radio <NUM> and second radio <NUM> connect to a CBSD. As discussed above with reference to <FIG>, the first radio <NUM> and second radios <NUM> may both connect to the same CBSD <NUM>, or the first radio <NUM> and second radio <NUM> may connect to different CBSDs <NUM>, <NUM> respectively. In an illustrative embodiment, SIMs <NUM> and <NUM> both connect to the same network (e.g., CBRS <NUM> in <FIG>), and therefore it does not matter which is designated as the first SIM and second SIM.

In step <NUM>, the second radio <NUM> scans and measures the signal strengths for all CBSDs that it detects. In an implementation, the signal strength measurements may be performed by the SIM <NUM> that is not being used. The signal strengths may be Reference Signal Received Power (RSRP), Reference Signal Received Quality (RSRQ), or other power measurement metrics.

In step <NUM>, the second SIM <NUM> communicates with the application layer <NUM> to see if there is a need to fetch any data from the network for storage in cache <NUM>. If so, the process continues to step <NUM>, where the second SIM <NUM> signals the second radio <NUM> that there is data to be fetched from the network and stored in cache <NUM>. In step <NUM>, the second radio <NUM> connects to the CBSD with the best signal strength (e.g., highest RSRP) as measured in step <NUM>. This may or may not be a different CBSD than that to which the first radio <NUM> is connected; however, it will be within the same network.

In step <NUM>, the second radio <NUM> receives data from the CBSD to which it has connected. As discussed above with reference to <FIG>, the data received by the second radio <NUM> may include one or more of: duplicates of data which is also received by the first radio <NUM>, other portions of a file or stream which is received by the first radio <NUM>, data which is expected to be used by an application and/or user in the future, and data with a lower priority than the data received by the first radio <NUM>. In step <NUM>, the data received by the second radio <NUM> is stored in the cache <NUM>. In step <NUM>, the second radio <NUM> signals the second SIM <NUM> that the requested data has been fetched from the network and stored in cache <NUM>. In step <NUM>, the second SIM <NUM> signals the application layer <NUM> that the requested data is in the cache <NUM> and can be used when needed.

After step <NUM>, the process <NUM> returns to step <NUM>, where the second radio scans and measures the signal strengths of all of the CBSDs, followed by step <NUM>, where the second SIM <NUM> communicates with the application layer <NUM> to see if there is a need to fetch any data from the network and store it in the cache <NUM>. If there is a need in step <NUM> to fetch data from the network and store it in the cache <NUM>, the process repeats steps <NUM>-<NUM> as discussed above. If not, the process proceeds to step <NUM>, in which the second SIM <NUM> signals the second radio <NUM> that there is no more data to be fetched. In step <NUM>, the second radio <NUM> disconnects from the CBSD, and then the process returns to step <NUM>, in which there the second SIM <NUM> periodically and/or continuously polls the application layer <NUM> to see if there is a need to fetch data and store it in the cache <NUM>.

Given the discussion thus far, it will be appreciated that, in general terms, an aspect of the invention includes a method for use with a mobile device comprising a plurality of subscriber identification modules sharing a cache. The method includes a first subscriber identification module authenticating with and connecting to the network, followed by a second subscriber identification module authenticating with and connecting to the network. The method also includes, while the first subscriber identification module is requesting and receiving first data from the network and storing the first data in the cache, the second identification module requesting and receiving second data from the network and storing the second data in the cache. The method further includes an application executing on the device retrieving and processing at least a portion of the first and second data stored in the cache, while at least one of the first and second subscriber identification modules is storing additional data received from the network in the cache.

Another aspect of the invention includes a computer program product usable within a mobile communications device, wherein the device comprises a plurality of subscriber identification modules sharing a hardware cache. The computer program comprises a non-transitory machine-readable storage medium having machine-readable program code embodied therewith. The machine-readable program code is operative to cause the device to perform a method comprising: a first subscriber identification module authenticating with and connecting to a network, followed by a second subscriber identification module authenticating with and connecting to the network; while the first subscriber identification module is requesting and receiving first data from the network and storing the first data in the cache, the second identification module requesting and receiving second data from the network and storing the second data in the cache; and an application executing on the device retrieving and processing at least a portion of the first and second data stored in the cache, while at least one of the first and second subscriber identification modules is storing additional data received from the network in the cache.

A further aspect includes a mobile communications device comprising a memory comprising a hardware cache, and a plurality of subscriber identification modules sharing the cache. The device further comprises a processor operative to cause the device to perform a method comprising: the first subscriber identification module authenticating with and connecting to the network, followed by a second subscriber identification module authenticating with and connecting to the network; while the first subscriber identification module is requesting and receiving first data from the network and storing the first data in the cache, the second identification module requesting and receiving second data from the network and storing the second data in the cache; and an application executing on the device retrieving and processing at least a portion of the first and second data stored in the cache, while at least one of the first and second subscriber identification modules is storing additional data received from the network in the cache.

The invention can employ hardware aspects or a combination of hardware and software aspects. Software includes but is not limited to firmware, resident software, microcode, etc. One or more embodiments of the invention or elements thereof can be implemented in the form of an article of manufacture including a machine readable medium that contains one or more programs which when executed implement such step(s); that is to say, a computer program product including a tangible computer readable recordable storage medium (or multiple such media) with computer usable program code configured to implement the method steps indicated, when run on one or more processors. Furthermore, one or more embodiments of the invention or elements thereof can be implemented in the form of an apparatus including a memory and at least one processor that is coupled to the memory and operative to perform, or facilitate performance of, exemplary method steps.

Yet further, in another aspect, one or more embodiments of the invention or elements thereof can be implemented in the form of means for carrying out one or more of the method steps described herein; the means can include (i) specialized hardware module(s), (ii) software module(s) executing on one or more general purpose or specialized hardware processors, or (iii) a combination of (i) and (ii); any of (i)-(iii) implement the specific techniques set forth herein, and the software modules are stored in a tangible computer-readable recordable storage medium (or multiple such media). The means do not include transmission media per se or disembodied signals per se. Appropriate interconnections via bus, network, and the like can also be included.

<FIG> is a block diagram of a system <NUM> that can implement at least some aspects of the invention, and is representative, for example, of one or more of the servers shown in the figures. As shown in <FIG>, memory <NUM> configures the processor <NUM> to implement one or more methods, steps, and functions (collectively, shown as process <NUM> in FIG. The memory <NUM> could be distributed or local and the processor <NUM> could be distributed or singular. Different steps could be carried out by different processors.

The memory <NUM> could be implemented as an electrical, magnetic or optical memory, or any combination of these or other types of storage devices. It should be noted that if distributed processors are employed, each distributed processor that makes up processor <NUM> generally contains its own addressable memory space. It should also be noted that some or all of computer system <NUM> can be incorporated into an applicationspecific or general -use integrated circuit. For example, one or more method steps could be implemented in hardware in an ASIC or via a field-programmable gate array (FPGA) rather than using firmware. Display <NUM> is representative of a variety of possible input/output devices (e.g., keyboards, mice, and the like). Every processor may not have a display, keyboard, mouse or the like associated with it.

As is known in the art, part or all of one or more aspects of the methods and apparatus discussed herein may be distributed as an article of manufacture that itself includes a tangible computer readable recordable storage medium having computer readable code means embodied thereon. The computer readable program code means is operable, in conjunction with a computer system (including, for example, system <NUM> or the like), to carry out all or some of the steps to perform the methods or create the apparatuses discussed herein. A computer readable medium may, in general, be a recordable medium (e.g., floppy disks, hard drives, compact disks, EEPROMs, or memory cards) or may be a transmission medium (e.g., a network including fiber-optics, the world wide web, cables, or a wireless channel using time-division multiple access, code-division multiple access, or other radio-frequency channel). Any medium known or developed that can store information suitable for use with a computer system may be used. The computer-readable code means is any mechanism for allowing a computer to read instructions and data, such as magnetic variations on a magnetic media or height variations on the surface of a compact disk. The medium can be distributed on multiple physical devices (or over multiple networks). As used herein, a tangible computer-readable recordable storage medium is defined to encompass a recordable medium, examples of which are set forth above, but is defined not to encompass a transmission medium or disembodied signal.

The computer systems and servers and other pertinent elements described herein each typically contain a memory that will configure associated processors to implement the methods, steps, and functions disclosed herein. The memories could be distributed or local and the processors could be distributed or singular. The memories could be implemented as an electrical, magnetic or optical memory, or any combination of these or other types of storage devices. Moreover, the term "memory" should be construed broadly enough to encompass any information able to be read from or written to an address in the addressable space accessed by an associated processor. With this definition, information on a network is still within a memory because the associated processor can retrieve the information from the network. Accordingly, it will be appreciated that one or more embodiments of the present invention can include a computer program product comprising computer program code means adapted to perform one or all of the steps of any methods or claims set forth herein when such program is run, for example, on a virtualized or nonvirtualized hardware server, and that such program may be embodied on a tangible computer readable recordable storage medium. As used herein, including the claims, unless it is unambiguously apparent from the context that only server software is being referred to, a "server" includes a physical data processing system (for example, system <NUM> as shown in FIG. <NUM>) running one or more server programs. It will be understood that such a physical server may or may not include a display, keyboard, or other input/output components. Furthermore, as used herein, including the claims, a "router" includes a networking device with both software and hardware tailored to the tasks of routing and forwarding information.

Furthermore, it should be noted that any of the methods described herein can include an additional step of providing a system comprising distinct software modules embodied on one or more tangible computer readable storage media. All the modules (or any subset thereof) can be on the same medium, or each can be on a different medium, for example. The modules can include any or all of the components shown in the figures. The method steps can then be carried out using the distinct software modules of the system, as described above, executing on one or more hardware processors. Further, a computer program product can include a tangible computer-readable recordable storage medium with code adapted to be executed to carry out one or more method steps described herein, including the provision of the system with the distinct software modules.

Accordingly, it will be appreciated that one or more embodiments of the invention can include a computer program including computer program code means adapted to perform one or all of the steps of any methods or claims set forth herein when such program is implemented on a processor, and that such program may be embodied on a tangible computer readable recordable storage medium. Further, one or more embodiments of the present invention can include a processor including code adapted to cause the processor to carry out one or more steps of methods or claims set forth herein, together with one or more apparatus elements or features as depicted and described herein.

Claim 1:
A method for use with a mobile communications device (<NUM>, <NUM>) comprising a plurality of subscriber identification modules (<NUM>, <NUM>) sharing a hardware cache (<NUM>), said method comprising:
a first subscriber identification module (<NUM>) authenticating with (<NUM>) and connecting to (<NUM>) a network, and a second subscriber identification module (<NUM>) authenticating with (<NUM>) and connecting to (<NUM>) the network, wherein the network comprises a citizens broadband radio service, wherein the first subscriber identification module (<NUM>) connects to (<NUM>) the network through a first one of a plurality of Citizens Broadband Radio Service devices (CBSDs, <NUM>, <NUM>, <NUM>) within the network, and wherein the second subscriber identification module (<NUM>) connects to (<NUM>) the network through a second one of the plurality of Citizens Broadband Radio Service devices (CBSDs, <NUM>, <NUM>, <NUM>) within the network;
the first subscriber identification module (<NUM>) requesting and receiving first data from the network and storing the first data in the cache (<NUM>), the second subscriber identification module (<NUM>) requesting and receiving second data from the network and storing the second data in the cache (<NUM>), wherein the first subscriber identification module (<NUM>) and the second subscriber identification module (<NUM>) simultaneously exchange data with the network for at least a point in time; and
an application executing on the device (<NUM>, <NUM>) retrieving and processing at least a portion of the first and second data stored in the cache (<NUM>), while at least one of the first and second subscriber identification modules (<NUM>, <NUM>) is storing additional data received from the network in the cache (<NUM>).