1. A method of accessing data from a memory system that has multiple parts including at least a first part of the memory system and a second part of the memory system, the first part of the memory system being different from the second part of the memory system in that the first part of the memory system has different access characteristics than the second part of the memory system or the first part of the memory system is used for a different type of memory-dependent operation than the second part of the memory system, the method comprising:
receiving a command from an application to access a data structure associated with multiple virtual addresses mapped to the memory system;
querying, based on the virtual addresses associated with the data structure, a table that manages first virtual addresses associated with first physical addresses in the first part of the memory system and second virtual addresses associated with second physical addresses within the second part of the memory system;
identifying, based on results of querying the table, a first subset of the virtual addresses for the data structure having constituent addresses that are mapped to the first part of the memory system and a second subset of the virtual addresses for the data structure having constituent addresses that are mapped to the second part of the memory system;
in response to identifying the first subset of virtual addresses for the data structure that are mapped to the first part of the memory system, identifying, from among the first physical addresses in the first part of the memory system, a first subset of physical addresses in the first part of the memory system that correspond to the first subset of virtual addresses for the data structure and accessing data from the first part of the memory system using the first subset of physical addresses;
in response to identifying the second subset of virtual addresses for the data structure that are mapped to the second part of the memory system, identifying, from among the second physical addresses within the second part of the memory system, a second subset of physical addresses within the second part of the memory system that correspond to the second subset of virtual addresses for the data structure and accessing data from the second part of the memory system using the second subset of physical addresses;
generating a response to the command received from the application to access the data structure by integrating the data accessed from the first part of the memory system using the first subset of physical addresses and the data accessed from the second part of the memory system using the second subset of physical addresses; and
providing the generated response to the application without providing the application with an indication of whether the data included in the response was accessed within the first part of the memory system or the second part of the memory system.
2. The method of claim 1, further comprising:
accounting for movement, during execution of the command from the application to read data associated with multiple virtual addresses, of data between the first part of the memory system and the second part of the memory system.
3. The method of claim 2, wherein a particular virtual address included in the multiple virtual addresses is mapped, in the table, to a particular physical address in the first part of the memory system when the command from the application to read data associated with multiple virtual addresses is received, and accounting for movement, during execution of the command from the application to read data associated with multiple virtual addresses, of data between the first part of the memory system and the second part of the memory system includes:
subsequent to receiving the command and prior to reading data corresponding to the particular virtual address included in the multiple virtual addresses, performing a memory migration operation on the data corresponding to the particular virtual address by moving the data corresponding to the particular virtual address from the particular physical address in the first part of the memory system to a particular physical address in the second part of the memory system and updating a portion of the table corresponding to the particular virtual address to reflect the particular physical address in the second part of the memory system; and
reading the data corresponding to the particular virtual address from the particular physical address in the second part of the memory system.
4. The method of claim 2, wherein a particular virtual address included in the multiple virtual addresses is mapped, in the table, to a particular physical address in the second part of the memory system when the command from the application to read data associated with multiple virtual addresses is received, and accounting for movement, during execution of the command from the application to read data associated with multiple virtual addresses, of data between the first part of the memory system and the second part of the memory system includes:
subsequent to receiving the command and prior to reading data corresponding to the particular virtual address included in the multiple virtual addresses, performing a memory migration operation on the data corresponding to the particular virtual address by moving the data corresponding to the particular virtual address from the particular physical address in the second part of the memory system to a particular physical address in the first part of the memory system and updating a portion of the table corresponding to the particular virtual address to reflect the particular physical address in the first part of the memory system; and
reading the data corresponding to the particular virtual address from the particular physical address in the first part of the memory system.
5. The method of claim 1, wherein the first part of the memory system is a symmetric memory component and the second part of the memory system is an asymmetric memory component.
6. The method of claim 1, wherein the first part of the memory system is a volatile memory component and the second part of the memory system is a non-volatile memory component.
7. The method of claim 1, wherein the first part of the memory system is a dynamic random access memory component and the second part of the memory system is a flash memory component.
8. The method of claim 1, wherein the first part of the memory system has first absolute read and write speeds that are faster than second absolute read and write speeds of the second part of the memory system and a first difference between write speed and read speed of the first part of the memory system is less than a second difference between write speed and read speed of the second part of the memory system.
9. The method of claim 1, wherein the first part of the memory system has different access characteristics than the second part of the memory system.
10. The method of claim 1, wherein the first part of the memory system is used for a different type of memory-dependent operation than the second part of the memory system.
11. A system comprising:
a memory system that has multiple parts including at least a first part of the memory system that is different from a second part of the memory system in that the first part of the memory system has different access characteristics than the second part of the memory system or the first part of the memory system is used for a different type of memory-dependent operation than the second part of the memory system; and
a controller configured to perform operations comprising:
receiving a command from an application to access a data structure associated with multiple virtual addresses mapped to the memory system;
querying, based on the virtual addresses associated with the data structure, a table that manages first virtual addresses associated with first physical addresses in the first part of the memory system and second virtual addresses associated with second physical addresses within the second part of the memory system;
identifying, based on results of querying the table, a first subset of the virtual addresses for the data structure having constituent addresses that are mapped to the first part of the memory system and a second subset of the virtual addresses for the data structure having constituent addresses that are mapped to the second part of the memory system;
in response to identifying the first subset of virtual addresses for the data structure that are mapped to the first part of the memory system, identifying, from among the first physical addresses in the first part of the memory system, a first subset of physical addresses in the first part of the memory system that correspond to the first subset of virtual addresses for the data structure and accessing data from the first part of the memory system using the first subset of physical addresses;
in response to identifying the second subset of virtual addresses for the data structure that are mapped to the second part of the memory system, identifying, from among the second physical addresses within the second part of the memory system, a second subset of physical addresses within the second part of the memory system that correspond to the second subset of virtual addresses for the data structure and accessing data from the second part of the memory system using the second subset of physical addresses;
generating a response to the command received from the application to access the data structure by integrating the data accessed from the first part of the memory system using the first subset of physical addresses and the data accessed from the second part of the memory system using the second subset of physical addresses; and
providing the generated response to the application without providing the application with an indication of whether the data included in the response was accessed within the first part of the memory system or the second part of the memory system.
12. The system of claim 11, wherein the operations further comprise:
accounting for movement, during execution of the command from the application to read data associated with multiple virtual addresses, of data between the first part of the memory system and the second part of the memory system.
13. The system of claim 12, wherein a particular virtual address included in the multiple virtual addresses is mapped, in the table, to a particular physical address in the first part of the memory system when the command from the application to read data associated with multiple virtual addresses is received, and accounting for movement, during execution of the command from the application to read data associated with multiple virtual addresses, of data between the first part of the memory system and the second part of the memory system includes:
subsequent to receiving the command and prior to reading data corresponding to the particular virtual address included in the multiple virtual addresses, performing a memory migration operation on the data corresponding to the particular virtual address by moving the data corresponding to the particular virtual address from the particular physical address in the first part of the memory system to a particular physical address in the second part of the memory system and updating a portion of the table corresponding to the particular virtual address to reflect the particular physical address in the second part of the memory system; and
reading the data corresponding to the particular virtual address from the particular physical address in the second part of the memory system.
14. The system of claim 12, wherein a particular virtual address included in the multiple virtual addresses is mapped, in the table, to a particular physical address in the second part of the memory system when the command from the application to read data associated with multiple virtual addresses is received, and accounting for movement, during execution of the command from the application to read data associated with multiple virtual addresses, of data between the first part of the memory system and the second part of the memory system includes:
subsequent to receiving the command and prior to reading data corresponding to the particular virtual address included in the multiple virtual addresses, performing a memory migration operation on the data corresponding to the particular virtual address by moving the data corresponding to the particular virtual address from the particular physical address in the second part of the memory system to a particular physical address in the first part of the memory system and updating a portion of the table corresponding to the particular virtual address to reflect the particular physical address in the first part of the memory system; and
reading the data corresponding to the particular virtual address from the particular physical address in the first part of the memory system.
15. The system of claim 11, wherein the first part of the memory system is a symmetric memory component and the second part of the memory system is an asymmetric memory component.
16. The system of claim 11, wherein the first part of the memory system is a volatile memory component and the second part of the memory system is a non-volatile memory component.
17. The system of claim 11, wherein the first part of the memory system is a dynamic random access memory component and the second part of the memory system is a flash memory component.
18. The system of claim 11, wherein the first part of the memory system has first absolute read and write speeds that are faster than second absolute read and write speeds of the second part of the memory system and a first difference between write speed and read speed of the first part of the memory system is less than a second difference between write speed and read speed of the second part of the memory system.
19. The system of claim 11, wherein the first part of the memory system has different access characteristics than the second part of the memory system.
20. The system of claim 11, wherein the first part of the memory system is used for a different type of memory-dependent operation than the second part of the memory system.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method of operating a wireless device, the method comprising
storing transmitted and received electronic messages in a memory of the wireless device;
operating on a current electronic message;
identifying at least one related message from the stored electronic messages having an outside address that matches an outside address of the current electronic message, the outside address of the current electronic message and the outside address of the select message comprising matching telephone numbers; and
displaying the at least one related message in context with the current electronic message in a message viewer.
2. The method of claim 1, wherein operating on the current message comprises selecting the current message from a message list.
3. The method of claim 1, wherein the current electronic message is a new message being composed.
4. The method of claim 1, wherein the at least one related electronic message was stored after the current electronic message was transmitted.
5. The method of claim 1, wherein the at least one related electronic message was stored after the current electronic message was received.
6. The method of claim 1, wherein the at least one related electronic message and the current electronic message are incoming messages.
7. The method of claim 1, further comprising displaying the outside address along with each of the displayed current electronic message and the displayed at least one related electronic message.
8. The method of claim 1, further comprising displaying the outside address only once along with the displayed current electronic message and the displayed at least one related electronic message.
9. The method of claim 1, wherein the identifying further comprises assessing each stored electronic message.
10. The method of claim 9, wherein the identifying further comprises appending the at least one related message to a related message list.
11. The method of claim 1, further comprising optionally displaying a select number of related messages that were saved prior to the current electronic message.
12. The method of claim 1, further comprising optionally displaying a select number of related messages that were saved after the current electronic message.
13. The method of claim 1, wherein the current electronic message and the at least one related electronic message are displayed in a scrollable message viewer.
14. The method of claim 1, wherein the electronic messages are messages that are transmitted and received without context or history information.
15. The method of claim 1, wherein the electronic messages are short messages.
16. The method of claim 1, wherein the electronic messages are short messaging service (SMS) messages.
17. The method of claim 1, wherein the identifying and displaying are done automatically and without user input.
18. The method of claim 1, wherein the at least one related message is displayed directly below the current message.
19. The method of claim 1, wherein the only messages displayed are the current message and the at least one related message.
20. A wireless device comprising:
a memory;
a processor;
a message viewer; and
a message software interface module stored in the memory and executable by the processor, the message software interface module configured to:
store transmitted and received electronic messages in the memory;
operate on a current electronic message;
identify at least one related message from the stored electronic messages having an outside address that matches an outside address of the current electronic message, the outside address of the current electronic message and the outside address of the select message comprising matching telephone numbers; and
display the at least one related message in context with the current electronic message in the message viewer.
21. The wireless device of claim 20, wherein the current message is operated on by selecting the current message from a message list.
22. The wireless device of claim 20, wherein the current electronic message is a new message being composed.
23. The wireless device of claim 20, wherein the at least one related electronic message was stored after the current electronic message was transmitted.
24. The wireless device of claim 20, wherein the at least one related electronic message was stored after the current electronic message was received.
25. The wireless device of claim 20, wherein the at least one related electronic message and the current electronic message are incoming messages.
26. The wireless device of claim 20, the message software interface module being further configured to display the outside address along with each of the displayed current electronic message and the displayed at least one related electronic message.
27. The wireless device of claim 20, the message software interface module being further configured to display the outside address only once along with the displayed current electronic message and the displayed at least one related electronic message.
28. The wireless device of claim 20, wherein the identifying further comprises assessing each stored electronic message.
29. The wireless device of claim 28, wherein the identifying further comprises appending the at least one related message to a related message list.
30. The wireless device of claim 20, the message software interface module being further configured to optionally display a select number of related messages that were saved prior to the current electronic message.
31. The wireless device of claim 20, the message software interface module being further configured to optionally display a select number of related messages that were saved after the current electronic message.
32. The wireless device of claim 20, wherein the current electronic message and the at least one related electronic message are displayed in a scrollable message viewer.
33. The wireless device of claim 20, wherein the electronic messages are messages that are transmitted and received without context or history information.
34. The wireless device of claim 20, wherein the electronic messages are short messages.
35. The wireless device of claim 20, wherein the electronic messages are short messaging service (SMS) messages.
36. The wireless device of claim 20, wherein the identifying and displaying are done automatically and without user input.
37. The wireless device of claim 20, wherein the at least one related message is displayed directly below the current message.
38. The wireless device of claim 20, wherein the only messages displayed are the current message and the at least one related message.
39. A computer readable media comprising computer instructions executable by a processor for operating a wireless device, the computer instructions configured to:
store transmitted and received electronic messages in a memory of the wireless device;
operating on a current electronic message;
identify at least one related message from the stored electronic messages having an outside address that matches an outside address of the current electronic message, the outside address of the current electronic message and the outside address of the select message comprising matching telephone numbers; and
display the at least one related message in context with the current electronic message in a message viewer.