Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
EXTERNAL STORAGE DEVICE WITH INFORMATION PROCESSING CAPABILITY
Document Type and Number:
WIPO Patent Application WO/2017/082822
Kind Code:
A1
Abstract:
An external storage device is disclosed, the external storage device comprising a controller, a non-volatile medium for storing firmware comprising analytical programs and a storage memory medium comprising a storage partition and a reserve partition. The storage partition accessible by a host device and configured to store data files and the reserve partition inaccessible by the host device. The controller is configured to execute the analytical programs and perform file processing actions on the data files to generate information files. The controller is configured to store the information files in the reserve partition, and subsequently in the storage partition when the external storage device is idle. In embodiments, the external storage device further comprises an inbuilt power source so that the file processing actions can be performed and the information files can be stored in the storage partition even when the external storage is decoupled from the host device.

Inventors:
SHEW PAUL WAIE (SG)
TAN HENRY (SG)
Application Number:
PCT/SG2016/050552
Publication Date:
May 18, 2017
Filing Date:
November 08, 2016
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
TREK TECH (SINGAPORE) PTE LTD (SG)
International Classes:
G06F3/06; G06F12/0866
Foreign References:
US20140136761A12014-05-15
US8200869B22012-06-12
US20110161551A12011-06-30
Other References:
CHO S. ET AL.: "Active disk meets flash: A case for intelligent SSDs.", PROCEEDINGS OF THE 27TH INTERNATIONAL ACM CONFERENCE ON INTERNATIONAL CONFERENCE ON SUPERCOMPUTING., 2013, pages 91 - 102, XP055232548
BOBOILA S. ET AL.: "Active flash: Out-of-core data analytics on flash storage.", MASS STORAGE SYSTEMS AND TECHNOLOGIES (MSST), 2012 IEEE 28TH SYMPOSIUM ON., 2012, pages 1 - 12, XP032454569
KANG Y. ET AL.: "Enabling cost-effective data processing with smart SSD.", MASS STORAGE SYSTEMS AND TECHNOLOGIES (MSST), 2013 IEEE 29TH SYMPOSIUM ON., 2013, pages 1 - 12, XP055383730
DO J. ET AL.: "Query processing on smart SSDs: opportunities and challenges.", PROCEEDINGS OF THE 2013 ACM SIGMOD INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA., 2013, pages 1221 - 1230, XP055383734
Attorney, Agent or Firm:
PIZZEYS PTE LTD (SG)
Download PDF:
Claims:
CLAIMS

1. An external storage device for coupling with a host device, the host device capable of providing commands to the external storage device when coupled, the external storage device comprising:

a controller;

a non-volatile medium for storing firmware, the firmware comprising at least one analytical program;

and a storage memory medium comprising a storage partition and a reserve partition, the storage partition accessible by the host device and configured to store at least one data file in response to a write command by the host device, and the reserve partition inaccessible by the host device;

wherein the controller is configured to execute the at least one analytical program in response to an event trigger and perform a file processing action on the at least one data file to generate at least one information file;

and wherein the controller is further configured to store the at least one information file in the reserve partition.

2. The external storage device of claim 1 further comprising a real-time clock for measuring the time elapsed since the last command from the host device, and wherein the controller is further configured to store the at least one information file in the storage partition once the time elapsed exceeds a predetermined time.

3. The external storage device of claim 2 wherein the controller is further configured to update a file system of the storage partition after the at least one information file has been stored in the storage partition.

4. The external storage device of claim 3 wherein the controller prompts the host device to load the updated file system of the storage partition.

5. The external storage device of any preceding claims wherein the event trigger is the storing of the at least one data file in the storage partition.

6. The external storage device of any one of claims 2 to 4 wherein the event trigger is the timing out of a timer on the real-time clock.

7. An external storage device for coupling with a host device, the host device capable of providing commands to the external storage device when coupled, the external storage device comprising:

a controller;

a non-volatile medium for storing firmware, the firmware comprising at least one analytical program;

an inbuilt power source capable of powering the external storage device independently when the external storage device is decoupled from the host device;

and a storage memory medium comprising a storage partition and a reserve partition, the storage partition accessible by the host device and configured to store at least one data file in response to a write command by the host device, and the reserve partition inaccessible by the host device;

wherein the controller is configured to execute the at least one analytical program in response to an event trigger and perform a file processing action on the at least one data file to generate at least one information file;

and wherein the controller is further configured to store the at least one information file in the reserve partition when the external storage device is coupled to the host device; and store the at least one information file in the storage partition while drawing power from the power source when the external storage device is decoupled from the host device.

8. The external storage device of claim 7 wherein the power source is a high capacitance capacitor or a rechargeable battery.

9. The external storage device of claim 7 or claim 8 further comprising a real-time clock for recording the time that the at least one information file has been stored in the storage partition.

10. The external storage device of any one of claims 7 to 9 wherein the controller is further configured to update a file system of the storage partition after the at least one information file has been stored in the storage partition.

11. The external storage device of any one of claims 7 to 10 wherein the event trigger is the storing of the at least one data file in the storage partition or the decoupling of the external storage device from the host device.

12. The external storage device of claim 9 or claim 10 wherein the event trigger is the timing out of a timer on the real-time clock.

13. The external storage device of any one of the preceding claims wherein the reserve partition further comprises a record file for containing metadata.

14 The external storage device of claim 13 wherein after the file processing action, the controller is further configured to update the record file with metadata pertaining to the file processing action.

15. The external storage device of any one of the preceding claims wherein the controller is further configured to provide interface rendering information to the host device when coupled, for the host device to render a user interface on a display screen of the host device, the user interface providing a user of the host device any one of the following: access to the at least one data files and the at least one information files in the storage partition, the ability to erase the at least one data files and the at least one information files from the storage partition, access to the file processing capabilities of the analytical programs in the firmware, and the ability to regulate the size of the reserve partition.

16. The external storage device of any one of the preceding claims wherein the file processing action is any one of the following: a file compression action, an image processing action, a montage creation action, a file filtering action and a graph plotting action.

17. The external storage device of any one of the preceding claims wherein the controller is further configured to select the at least one analytical program for execution and perform the file processing action based on a file extension of the at least one data file.

18. The external storage device of any one of the preceding claims wherein the at least one information file in the reserve partition is erased periodically.

19. The external storage device of claim 1 or claim 7 wherein the storage partition comprises a first type of non-volatile memory and a second type of non- volatile memory, the second type of non-volatile memory having higher endurance than the first type of nonvolatile memory, wherein the at least one data file has not been modified over a period of time, and wherein the controller is configured to store the at least one data file in the second type of non- volatile memory.

20. A method of implementing an external storage device with information processing capability, the external storage device for coupling with a host device, the host device capable of providing commands to the external storage device when coupled, the method comprising the steps of:

loading at least one analytical program into firmware stored in a non-volatile medium of the external storage device;

partitioning a storage memory medium of the external storage device into a storage partition and a reserve partition, the storage partition accessible by the host device and configured to store at least one data file in response to a write command by the host device, and the reserve partition inaccessible by the host device;

executing with a controller of the external storage device, the at least one analytical program in response to an event trigger to perform a file processing action on the at least one data file to generate at least one information file; and

storing the at least one information file in the reserve partition.

21. The method of claim 20 further comprising the steps of:

measuring with a real-time clock, the time elapsed since the last command from the host device; and

storing the at least one information file in the storage partition once the time elapsed exceeds a predetermined time.

22. The method of claim 21 further comprising the step of updating a file system of the storage partition after the at least one information file has been stored in the storage partition.

23. The method of claim 22 further comprising the step of the controller prompting the host device to load the updated file system of the storage partition.

24. The method of any one of claims 20 to 23 wherein the event trigger is the storing the at least one data file in the storage partition.

25. The method of any one of claims 21 to 23 wherein the event trigger is the timing out of a timer on the real-time clock.

26. A method of implementing an external storage device with information processing capability, the external storage device for coupling with a host device, the host device capable of providing commands to the external storage device when coupled; the method comprising the steps of:

loading at least one analytical program into firmware stored in a non-volatile medium of the external storage device;

partitioning a storage memory medium of the external storage device into a storage partition and a reserve partition, the storage partition accessible by the host device and configured to store at least one data file in response to a write command by the host device, and the reserve partition inaccessible by the host device;

executing with a controller of the external storage device, the at least one analytical program in response to an event trigger to perform a file processing action on the at least one data file to generate at least one information file; and

storing the at least one information file in the reserve partition when the external storage device is coupled to the host device, and after the external storage device has been decoupled from the host device, storing the at least one information file in the storage partition while drawing power from an inbuilt power source of the external storage device; or

storing the at least one information file in the storage partition while drawing power from the power source when the external storage device is decoupled from the host device.

27. The method of claim 26 wherein the power source is a high capacitance capacitor or a rechargeable battery.

28. The method of claim 26 or claim 27 further comprising the step of using a real-time clock to record the time that the at least one information file has been stored in the storage partition.

29. The method of any one of claims 26 to 28 further comprising the step of updating a file system of the storage partition after the at least one information file has been stored in the storage partition.

30. The method of any one of claims 26 to 29 wherein the event trigger is the storing of the at least one data file in the storage partition or the decoupling of the external storage device from the host device.

31. The method of claim 28 or claim 29 wherein the event trigger is the timing out of a timer on the real-time clock.

32. The method of any one of claims 20 to 31 further comprising the step of updating a record file in the reserve partition with metadata after the file processing action, themetadata pertaining to the file processing action.

33. The method of any one of claims 20 to 32 further comprising the steps of:

coupling the external storage device to the host device; and

providing with the controller, interface rendering information to the host device for the host device to render a user interface on a display screen of the host device, the user interface providing a user of the host device any one of the following: access to the at least one data files and the at least one information files in the storage partition, the ability to erase the at least one data files and the at least one information files from the storage partition, access to the file processing capabilities of the analytical programs in the firmware, and the ability to regulate the size of the reserve partition.

34. The method of any one of claims 20 to 33 wherein the file processing action is any one of the following: a file compression action, an image processing action, a montage creation action, a file filtering action and a graph plotting action.

35. The method of any one of claims 20 to 34 wherein the step of executing with a controller of the external storage device, the at least one analytical program in response to an event trigger to perform a file processing action, further comprises the step of selecting the at least one analytical program for execution and perform the file processing action based on a file extension of the at least one data file.

36. The method of any one of claims 20 to 35 further comprising the step of periodically erasing the at least one information file in the reserve partition.

37. The method of any one of claims 33 to 36, wherein the event trigger is a result of the user selecting a menu-option on the user interface.

Description:
EXTERNAL STORAGE DEVICE WITH INFORMATION PROCESSING

CAPABILITY

FIELD OF THE INVENTION

[0001] The following discloses external storage devices with information processing capabilities.

BACKGROUND

[0002] Peripheral external storage devices such as Hard Disk Drive (HDD), USB Flash Drive (UFD) and Solid State Drive (SSD) are ubiquitous in our society today. These external storage devices can be coupled to host devices, and users are able to transfer data from the host devices to the external storage devices, satisfying their ever-growing demand for more memory.

[0003] Traditionally, external storage devices have the sole function of storing data files, though some storage devices can also add functions such as power banks and wireless routers. It would be beneficial if external storage devices can be imbued with analytical and computational abilities. Such improved external storage devices can therefore perform certain automated and intelligent tasks, and not just simply be a rudimentary storage medium.

[0004] The present invention therefore seeks to provide an external storage device with information processing capability, or at least provide a novel external storage device. Other desirable features and characteristics will become apparent from the subsequent detailed description and the appended claims, taken in conjunction with the accompanying drawings and this background of the disclosure.

SUMMARY OF INVENTION

[0005] According to an aspect of the invention, an external storage device for coupling with a host device is disclosed, the host device capable of providing commands to the external storage device when coupled, the external storage device comprising a non- volatile medium for storing firmware, the firmware comprising at least one analytical program; and a storage memory medium comprising a storage partition and a reserve partition, the storage partition accessible by the host device and configured to store at least one data file in response to a write command by the host device, and the reserve partition inaccessible by the host device. Wherein the controller is configured to execute the at least one analytical program in response to an event trigger and perform a file processing action on the at least one data file to generate at least one information file. Wherein the controller is further configured to store the at least one information file in the reserve partition.

[0006] Preferably, the external storage device further comprises a real-time clock for measuring the time elapsed since the last command from the host device, and wherein the controller is further configured to store the at least one information file in the storage partition once the time elapsed exceeds a predetermined time.

[0007] Preferably, the controller is further configured to update a file system of the storage partition after the at least one information file has been stored in the storage partition.

[0008] Preferably, the controller prompts the host device to load the updated file system of the storage partition.

[0009] Preferably, the event trigger is the storing of the at least one data file in the storage partition.

[0010] Preferably, the event trigger is the timing out of a timer on the real-time clock.

[0011] According to another aspect of the invention, an external storage device for coupling with a host device is disclosed, the host device capable of providing commands to the external storage device when coupled, the external storage device comprising a controller; a nonvolatile medium for storing firmware, the firmware comprising at least one analytical program and an inbuilt power source capable of powering the external storage device independently when the external storage device is decoupled from the host device. The external storage device further comprises a storage memory medium comprising a storage partition and a reserve partition, the storage partition accessible by the host device and configured to store at least one data file in response to a write command by the host device, and the reserve partition inaccessible by the host device. Wherein the controller is configured to execute the at least one analytical program in response to an event trigger and perform a file processing action on the at least one data file to generate at least one information file. And wherein the controller is further configured to store the at least one information file in the reserve partition when the external storage device is coupled to the host device; and store the at least one information file in the storage partition while drawing power from the power source when the external storage device is decoupled from the host device.

[0012] Preferably, the power source is a high capacitance capacitor or a rechargeable battery.

[0013] Preferably, the external storage device further comprises a real-time clock for recording the time that the at least one information file has been stored in the storage partition.

[0014] Preferably, the controller is further configured to update a file system of the storage partition after the at least one information file has been stored in the storage partition.

[0015] Preferably, the event trigger is the storing of the at least one data file in the storage partition or the decoupling of the external storage device from the host device.

[0016] Preferably, the event trigger is the timing out of a timer on the real-time clock.

[0017] Preferably, the reserve partition further comprises a record file for containing metadata.

[0018] Preferably, after the file processing action, the controlleris further configured to update the record file with metadata pertaining to the file processing action.

[0019] Preferably, the controller is further configured to provide interface rendering information to the host device when coupled, for the host device to render a user interface on a display screen of the host device, the user interface providing a user of the host device any one of the following: access to the at least one data files and the at least one information files in the storage partition, the ability to erase the at least one data files and the at least one information files from the storage partition, access to the file processing capabilities of the analytical programs in the firmware, and the ability to regulate the size of the reserve partition. [0020] Preferably, the file processing action is any one of the following: a file compression action, an image processing action, a montage creation action, a file filtering action and a graph plotting action.

[0021] Preferably, the at least one information file in the reserve partition is erased periodically.

[0022] Preferably, the controller is further configured to select the at least one analytical program for execution and perform the file processing action based on a file extension of the at least one data file.

[0023] Preferably, the storage partition comprises a first type of non-volatile memory and a second type of non-volatile memory, the second type of non-volatile memory having higher endurance than the first type of non-volatile memory, wherein the at least one data file has not been modified over a period of time, and wherein the controller is configured to store the at least one data file in the second type of non-volatile memory.

[0024] According to another aspect of the invention, a method of implementing an external storage device with information processing capability is disclosed, the external storage device for coupling with a host device, the host device capable of providing commands to the external storage device when coupled, the method comprising the steps of loading at least one analytical program into firmware stored in a non-volatile medium of the external storage device; and partitioning a storage memory medium of the external storage device into a storage partition and a reserve partition, the storage partition accessible by the host device and configured to store at least one data file in response to a write command by the host device, and the reserve partition inaccessible by the host device. The method further comprises the steps of executing with a controller of the external storage device, the at least one analytical program in response to an event trigger to perform a file processing action on the at least one data file to generate at least one information file; and storing the at least one information file in the reserve partition.

[0025] Preferably, the method further comprises the steps of measuring with a real-time clock, the time elapsed since the last command from the host device; and storing the at least one information file in the storage partition once the time elapsed exceeds a predetermined time. [0026] Preferably, the method further comprises the step of updating a file system of the storage partition after the at least one information file has been stored in the storage partition.

[0027] Preferably, the method further comprises the step of the controller prompting the host device to load the updated file system of the storage partition.

[0028] Preferably, the event trigger is the storing of the at least one data file in the storage partition.

[0029] Preferably, the event trigger is the timing out of a timer on the real-time clock.

[0030] According to another aspect of the invention, a method of implementing an external storage device with information processing capability is disclosed, the external storage device for coupling with a host device, the host device capable of providing commands to the external storage device when coupled; the method comprising the steps of loading at least one analytical program into firmware stored in a non-volatile medium of the external storage device; partitioning a storage memory medium of the external storage device into a storage partition and a reserve partition, the storage partition accessible by the host device and configured to store at least one data file in response to a write command by the host device, and the reserve partition inaccessible by the host device, and executing with a controller of the external storage device, the at least one analytical program in response to an event trigger to perform a file processing action on the at least one data file to generate at least one information file. The method further comprises the steps of storing the at least one information file in the reserve partition when the external storage device is coupled to the host device, and after the external storage device has been decoupled from the host device, storing the at least one information file in the storage partition while drawing power from an inbuilt power source of the external storage device; or storing the at least one information file in the storage partition while drawing power from the power source when the external storage device is decoupled from the host device.

[0031] Preferably, the power source is a high capacitance capacitor or a rechargeable battery.

[0032] Preferably, the method further comprises the step of using a real-time clock to record the time that the at least one information file has been stored in the storage partition. [0033] Preferably, the method further comprises the step of updating a file system of the storage partition after the at least one information file has been stored in the storage partition.

[0034] Preferably, the event trigger is the storing of the at least one data file in the storage partition or the decoupling of the external storage device from the host device.

[0035] Preferably, wherein the event trigger is the timing out of a timer on the real-time clock.

[0036] Preferably, the method further comprises the step of updating a record file in the reserve partition with metadata after the file processing action, the metadata pertaining to the file processing action.

[0037] Preferably, the method further comprises the steps of coupling the external storage device to the host device, and providing with the controller, interface rendering information to the host device for the host device to render a user interface on a display screen of the host device, the user interface providing a user of the host device any one of the following: access to the at least one data files and the at least one information files in the storage partition, the ability to erase the at least one data files and the at least one information files from the storage partition, access to the file processing capabilities of the analytical programs in the firmware, and the ability to regulate the size of the reserve partition.

[0038] Preferably, the file processing action is any one of the following: a file compression action, an image processing action, a montage creation action, a file filtering action and a graph plotting action.

[0039] Preferably, the step of executing with a controller of the external storage device, the at least one analytical program in response to an event trigger to perform a file processing action, further comprises the step of selecting the at least one analytical program for execution and perform the file processing action based on a file extension of the at least one data file.

[0040] Preferably, the method further comprises the step of periodically erasing the at least one information file in the reserve partition

[0041] Preferably, the event trigger is a result of the user selecting a menu-option on the user interface. BRIEF DESCRIPTION OF THE DRAWINGS

[0042] The accompanying figures, where like reference numerals refer to identical or functionally similar elements throughout the separate views and which together with the detailed description below are incorporated in and form part of the specification, serve to illustrate various embodiments, by way of example only, and to explain various principles and advantages in accordance with a present embodiment.

[0043] Figure 1 is a schematic representation of an external storage device for use with a host device in accordance with embodiments of the invention.

[0044] Figure 2 is a schematic representation of an external storage device where the controller stores information files in the storage partition during the idle mode, in accordance with embodiments of the invention.

[0045] Figure 3 is a flowchart which depicts the controller storing information files in the storage partition when the external storage device of figure 2 is in the idle mode, in accordance with embodiments of the invention.

[0046] Figure 4 is a schematic representation of an external storage device where the controller stores information files in the storage partition during the offline mode, in accordance with embodiments of the invention.

[0047] Figure 5 is a flowchart which depicts the controller storing information files in the storage partition when the external storage device of figure 4 is in the offline mode, in accordance with embodiments of the invention.

[0048] Figure 6 is a flowchart which depicts the controller executing the analytical programs and storing information files in the storage partition directly when the external storage device of figure 7 is in the offline mode, in accordance with embodiments of the invention. [0049] Figure 7 is a schematic representation of an external storage device where the controller stores the information files directly into the storage partition during the offline mode, in accordance with embodiments of the invention.

[0050] Figure 8 depicts an exemplary user interface.

[0051] Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been depicted to scale. For example, the dimensions of some of the elements in the block diagrams or steps in the flowcharts may be exaggerated in respect to other elements to help improve understanding of the present embodiment.

DETAILED DESCRIPTION

[0052] The following detailed description is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any theory presented in the preceding background of the invention or the following detailed description.

[0053] The invention seeks to provide a novel external storage device with information processing capability, and capable of producing analytical and computational results. However, a challenge in making such an external storage device is the problem of storing the analytical and computational results in a manner where the file structure of the external storage device is not disrupted, while ensuring that the operating system of a host device can still read/recognize the analytical and computational results.

[0054] To overcome the above identified problem, embodiments of the invention teach partitioning the storage memory into a storage partition and a reserve partition. The storage memory can comprise non-volatile memory and volatile memory. By "partitioning", it means that portions of the storage memory are allocated to the storage partition while portions of the storage memory are allocated to the reserve partition. The storage partition functions as would a typical storage memory and can be read by and written into by the host device (the host device does not perform the actual writing. The host device sends a write command to the controller of the external storage device and it is the controller that does the actual writing. However for readability, this document will sometimes describe that the host device writes to a memory location, and when doing so, it is to be understood that this means that the controller does the writing to a memory location in response to a write command from the host device).

[0055] The reserve partition however, cannot be accessed, or is inaccessible by the host device. In other words, the host device is unable to write to or modify the files in the reserve partition. Embodiments of the invention therefore solves the above problem in that the controller of the external storage device can safely store the analytical and computational results in the reserve partition, without any concern that the host device will be writing to the reserve partition as well, which may have caused the system to crash or cause the file system to be corrupted. Data and the structure integrity of the file system in the reserve partition is preserved, because as the host device is unable to access the reserve partition, the scenario where the host device and the controller of the external storage device writes into the reserve partition at the same time will never occur.

[0056] When the controller detects that the external storage device is idle, the controller then copies or stores the analytical and computational results from the reserve partition to the storage partition, and updates the file system of the storage partition. The controller can determine that the external storage device is in an idle state when a predetermined time has lapsed since the last read/write command from the host device. The controller may prompt the host device to perform a remount or refresh or media change command to read or load the updated file system of the storage partition.

[0057] However, there is always the possibility that a user may suddenly use the host device to write to the storage partition while the controller is in the midst of writing to the storage partition. The safest time for the controller to write to the storage partition is when the external storage device is decoupled from the host device. Therefore, in embodiments of the invention, only when the external storage device is decoupled from the host device, will the controller store the analytical and computational results in the storage partition. Advantageously, the structure integrity of the file system in the storage partition is ensured as the scenario where both the controller and the host device are writing to the storage partition will never occur.

[0058] In such embodiments, the external storage device can have an inbuilt power source capable of powering the external storage device independently of the host device for periods of time. The power source can be a high capacitance capacitor or a rechargeable battery. The external storage device can also have a real-time clock for the controller to record the time in which the analytical and computational results were stored in the storage partition. The next time the external storage device is coupled to the host device, the updated file system will be loaded onto the host device and the analytical and computational results will be visible to the host device. A user can then view the analytical and computational results from the host device.

[0059] It is therefore the intent of the embodiments to disclose an external storage device for coupling with a host device, the external storage device comprising a controller, a non- volatile medium for storing firmware having analytical programs, and a storage memory medium. The storage memory medium is partitioned into a storage partition and a reserve partition. The storage partition is accessible by the host device and configured to store data files written by the host device. The reserve partition is inaccessible by the host device, in that the host device is unable to read from or write to the reserve partition. The controller is configured to execute the analytical programs in response to an event trigger and perform a file processing action on the data files to generate information files. The controller stores the information files in the reserve partition. When the controller detects that the external storage device has been left idle, the controller can then store the information files in the storage partition. The controller can detect that the external storage device has been left idle by using a real-time clock to measure the time elapsed since the last read/write command from the host device.

[0060] The embodiments also describe that the external storage device has an inbuilt power source capable of powering the external storage device independently. The controller can thus operate even when the external storage device is decoupled from the host device, and can execute the analytical programs and perform file processing actions on the data files to generate information files and store them in the storage partition.

[0061] The embodiments of the external storage device as described therefore has the advantages of being able to automatically perform file processing actions (e.g. a file compression action or an image processing action or a montage creation action) on data files and store the output (i.e. information files) in the reserve partition even when the external storage device is currently being used by a user via the host device. This promotes efficiency and multi-tasking. In embodiments of the external storage device having a power supply, the information files can be generated and stored in the storage partition even when the external storage device is not coupled to the host device. Therefore, useful information files can be advantageously generated in the background without user intervention. Information files (e.g. compressed files, optimized image files and video montages) can be presented to the user the next time the user uses the host device to access the external storage device. This helps saves the user time on mundane, run of the mill tasks.

[0062] Embodiments of the external storage device have benefits in efficiency and multitasking as useful file processing actions can be automatically done and the output stored in the storage partition without user instruction or user intervention. One practical use is the creation of video montages. After the writing of the image files (data files) to the storage partition by the host device, the controller executes the analytical programs and performs a montage creation action on the images files to generate a video montage (information file). The controller stores the video montage in the reserve partition first. When the controller detects that the external storage device has been left idle, the controller stores the video montage in the storage partition such that the video montage will be accessible to the user via the host device.

[0063] Embodiments of the present invention will be described, by way of example only, with reference to the drawings. Like reference numerals and characters in the drawings refer to like elements or equivalents.

[0064] Figure 1 shows external storage device 100 in accordance with embodiments of the invention. External storage device 100 is for coupling with host device 110. When coupled, host device 110 is a capable of sending read/write commands to external storage device 100. External storage device 100 comprises non-volatile medium 101 and controller 102. Preferably, controller 102 comprises a processor and a high speed volatile medium such as RAM for temporal storage of data for high speed processing. Non-volatile medium 101 can comprise ROM, EPROM, NAND or flash memory or the like. External storage device 100 comprises firmware and the firmware can be stored in non- volatile medium 101.

[0065] Preferably, the firmware is configured to recognise a multitude of file systems/ file structures, for example, FAT, NTFS, exFAT, Live File System, ReFS, HFS ext2, ext3, ext4, XFS, JFS, ReiserFS, btrfs, UBIFS, JFFS2, YAFFS, SquashFS, ZFS, and any other file system known in the art. Preferably, the firmware comprises analytical programs. The analytical programs are capable of performing file processing actions on the data files and the file processing actions can be, and are not restricted to, compressing data files, performing image processing on data files, creating a montage of data files, filtering the data files, ploting graphs based on the data files. The firmware may be updated to recognise new file systems or updated with new analytical programs. The update of the firmware can be done by a user downloading a version update executable on host device 110. Running the executable with external storage device 100 coupled to host device 100 will update the firmware with new file systems and new analytical programs.

[0066] External storage device 100 also comprises storage memory medium 103. Storage memory medium 103 can comprise magnetic media, optical media, solid state memory or other non- volatile memory (e.g. ROM, EPROM, NAND, NOR), and re- writable computer usable media and volatile memory. Storage memory medium 103 comprises a plurality of memory sectors. The memory sectors of storage memory medium 103 are partitioned into storage partition 104 and reserve partition 105. By "partitioning", it means that portions of storage memory medium 103 are allocated to storage partition 104 while portions of storage memory medium 103 are allocated to reserve partition 105. Storage partition 104 is for storing data files written by host device 110 into external storage device 100. Host device 110 does not perform the actual writing of the data files. In actuality, host device 110 sends a write command to controller 102 of external storage device 100 and it is controller 102 that does the actual writing. However, for readability, this document will at times describe that host device 110 writes data files, and when doing so, it is to be understood that this means that controller 102 writes the data files in response to a write command from host device 110.

[0067] Storage partition 104 also comprises file system 108. File system 108 comprises data structures which indicate the manner in which data files and information files are organised in storage partition 104. Every time external storage device 100 is coupled to host device 110, file system 108 will be loaded onto host device 110 so that host device 110 can see the file system structure with the data files and information files in storage partition 104.

[0068] Reserve partition 105 of storage memory medium 103 cannot be accessed or is inaccessible by host device 110. What this means is that even when external storage device 100 is coupled to host device 110, host device 110 is still unable to detect, recognise or access reserve partition 105 of storage memory medium 103. Therefore, host device 110 is unable to read from, or write to the memory sectors of reserve partition 105. The concept is that since reserve partition 105 is inaccessible by host device 110, controller 102 will be free to write to reserve partition 105 without fear of host device 110 writing to it as well. This "inaccessibility" of reserve partition 105 can be achieved by controller 102 simply not presenting reserve partition 105 to host device 110. One way of implementing this is by not mapping some physical memory sectors of storage memory medium 103 into logical sectors during memory mapping. These physical memory sectors will form the memory sectors for reserve partition 105. In doing so, the memory sectors in reserve partition 105 will not be visible to host device 110, and will therefore not be accessible by host device 110.

[0069] External storage device 100 also comprises input/output (I/O) port 106 for coupling with host device 110. Controller 102 is configured to execute the firmware in non- volatile medium 101 to control access to storage partition 104 in response to control signals and address signals received from host device 110 via I/O port 106. Controller 102 processes read and write commands from host device 110, and passes data to and from storage partition 104 in response to the read and write commands, respectively. Power can also be supplied from host device 110 to external storage device 100 via I/O port 106.

[0070] Controller 102 is configured to execute the analytical programs in non- volatile medium 101, and perform file processing actions on the data files stored in storage partition 104. The output generated as a result of the file processing actions is information files. Controller 102 stores/writes the information files into reserve partition 105. Reserve partition 105 comprises record file 107. After a file processing action has been performed, controller 102 updates record file 107 with metadata. This metadata can include for example: (1) the identity of the data files in which the file processing action was performed on, (2) the type of file processing action that had been performed, (3) the identity of the analytical program which was used to perform the file processing action, (4) the identity of the information files which had been generated, (5) the address of the memory sectors (be it in storage partition 104 or in reserve partition 105) where the information files had been written to or stored, (6) the date and time in which the information files were generated and stored. In essence, record file 107 serves as a repository for controller 102 to log and store the progress and the results of the file processing actions that had been performed. [0071] External storage device 100 can be in an "active" mode, an "idle mode" or an "offline" mode. External storage device 100 is in the active mode when it is coupled to host device 110 and is receiving read or write commands from host device 110 within a predetermined time. This predetermined time can be 60 mins. What this means is that in the active mode, external storage device 100 is receiving at least one command from host device 110 every 60 minutes. External storage device 100 is in the idle mode when it is coupled to host device 110, but the time elapsed since the last command from host device 110 has exceeded the predetermined time. External storage device 100 is in the offline mode when it is not coupled to host device 110.

[0072] Controller 102 executes the analytical programs in the firmware to perform file processing actions on the data files in response to an event trigger. The methodology of selecting which analytical programs to execute and which file processing actions to perform can be based on the file extensions of the data files. For example, if the file extensions of the data files are "JPG" (and hence image files), it can be hardcoded in the firmware for controller 102 to execute the analytical programs that perform image processing actions and montage creation actions. In another example, if the file extensions of the data files are ".MPG" (and hence video files), it can be hardcoded in the firmware for controller 102 to execute the analytical programs that perform file compressing actions to compress the video files which are typically large. Therefore, the appropriate file processing action is performed for the corresponding data file type.

[0073] When external storage device 100 is in the active mode, the event trigger can be when host device 110 has written a data file into storage partition 104. After controller 102 detects that host device 110 has written a data file into storage partition 104, controller 102 executes the analytical programs in the firmware to perform file processing actions on the data file. Another example of an event trigger that can occur when external storage device 100 is in the active mode is when a timer in a real-time clock has timed out. After controller 102 detects that the timer has timed out, controller 102 executes the analytical programs in the firmware to perform file processing actions.

[0074] When external storage device 100 is in the idle mode, the event trigger can be when a timer in a real-time clock has timed out. After controller 102 detects that the timer has timed out, controller 102 executes the analytical programs in the firmware to perform file processing actions. When external storage device 100 is in the offline mode, the event trigger can be when external storage device 100 had just been decoupled or disconnected from host device 110. After controller 102 detects that external storage device 100 has been decoupled from host device 110, controller 102 executes the analytical programs in the firmware and perform file processing actions. Another example of an event trigger that can occur when external storage device 100 is in the offline mode is when a timer in a real-time clock has timed out. After controller 102 detects that the timer has timed out, controller 102 executes the analytical programs in the firmware to perform file processing actions.

[0075] Figure 2 shows external storage device 100 where controller 102 stores information files 202 in storage partition 104 during the idle mode, in accordance with embodiments of the invention. External storage device 100 is coupled to host device 110 via I/O port 106 and cables. Controller 102 executes the analytical programs in the firmware and performs file processing actions on data files 201 in response to an event trigger. Controller 102 can execute the analytical programs when external storage device 100 is in the active mode or in the idle mode. Controller 102 can automatically determine the analytical programs to execute, so as to perform the corresponding file processing actions, based on the file extensions of the data files

201. The file processing actions performed by the analytical programs can be for example, file compression actions, image processing actions, montage creation actions, file filtering actions, graph plotting actions etc.

[0076] The output generated as a result of the file processing actions are the information files

202, and controller 102 stores/writes the information files 202 into reserve partition 105. Controller 102 can safely store the information files 202 in reserve partition 105 without any concern of host device 110 simultaneously writing to it as host device 110 is unable to access reserve partition 105. For each file processing action, controller 102 updates record file 107 with metadata such as (1) the identities of data files 201, (2) the type of file processing action that had been performed, (3) the identity of the analytical program which was used to perform the file processing action, (4) the identity of the information files 202 which had been generated, (5) the address of the memory sectors in reserve partition 105 where the information files 202 have been stored, (6) the time and date in which the information files 202 had been generated and stored.

[0077] When controller 102 determines that external storage device 100 is in the idle mode, controller 102 then stores the information files 202 in storage partition 104 as shown in figure 2. Controller 102 determines that external storage device 100 is in the idle mode when the time elapsed since the last command from host device 110 has exceeded a predetermined time. This predetermined time can be 60 mins. External storage device 100 can have a real-time clock 203 to keep track or measure the time elapsed since the last command from host device 110. Once information files 202 have been stored in storage partition 104, controller 102 can update file system 108 to reflect the current file structure of storage partition 104. Controller 102 may then prompt host device 110 to perform a remount/refresh/media change command to read or load the updated file system 108 of storage partition 104. This is so that the information files 202 in storage partition 104 can be accessed by host device 110.

[0078] Controller 102 can erase information files 202 from reserve partition 105 periodically. It is preferable to minimise the number of information files 202 in reserve partition 105 as reserve partition 105 has typically less memory segments than storage partition 104. It is therefore important to periodically free up space in reserve partition 105. Controller 102 can also update record file 107 with metadata. The metadata can be (1) the address of the memory sectors in storage partition 104 where the information files 202 had been stored, (2) the time and date when the information files 202 have been stored in storage partition 104 and (3) the address of the memory sectors in reserve partition 105 which had been freed up as a result of erasing the information files 202 from reserve partition 105.

[0079] Figure 3 is a flowchart which depicts controller 102 storing information files 202 in storage partition 104 when external storage device 100 of figure 2 is in the idle mode, in accordance with embodiments of the invention. In step 301, external storage device 100 is coupled to host device 110 and host device 110 writes data files 201 into a memory segment in storage partition 104. In step 302, an event trigger occurs. This event trigger can be the result of host device 110 having written data files 201 into storage partition 104. Alternatively, the event trigger can be the result of the timer in real-time clock 203 having timed out. In step 303, controller 102 executes the analytical programs in the firmware and performs a file processing action on the data files 201. Controller 102 can automatically determine the analytical programs to execute, so as to perform the corresponding file processing actions, based on the file extensions of the data files 201. The file processing action can be for example, a file compression action, an image processing action, a montage creation action or a graph plotting action. [0080] The output generated as a result of the file processing actions are information files 202, and in step 304, controller 102 stores/writes the information files 202 into reserve partition 105. In step 305, controller 102 updates record file 107 with metadata. In step 306, when controller 102 determines that external storage device 100 is in the idle mode, controller 102 then stores the information files 202 in storage partition 104. Controller 102 can determine that external storage device 100 is in the idle mode when the time elapsed since the last command from host device 110 has exceeded a predetermined time. In step 307, controller 102 updates file system 108 to reflect the current file structure of storage partition 104. In step 308, controller 102 prompts host device 110 to perform a remount/refresh/media change command to read or load the updated file system 108 of storage partition 104.

[0081] Figure 4 shows external storage device 100 where controller 102 stores information files 202 in storage partition 104 during the offline mode, in accordance with embodiments of the invention. External storage device 100 has an independent power source 401 so as to be able to power itself during the offline mode. Power source 401 can be inbuilt and can be a high capacitance capacitor or a rechargeable battery. The high capacitance capacitor is suitable for low power requirements while the rechargeable battery is suitable for high power requirements. Power source 401 can be charged during the times when external storage device 100 is coupled to host device 110 (i.e. during the active mode and idle mode). Due to power source 401, the storing of information files 202 into storage partition 104 can be done in the offline mode, instead of during the idle mode as described in the previous embodiments. Therefore, when external storage device 100 is decoupled from host device 110, power source 401 supplies power to controller 102, and controller 102 stores the information files 202 in storage partition 104 as shown in figure 4.

[0082] As the storing of information files 202 into storage partition 104 by controller 102 is done when external storage device 100 is offline, file system integrity is ensured, and the scenario where controller 102 and host device 110 are both writing to storage partition 104 is advantageously circumvented. Controller 102 can also use real-time clock 203 for recording the time that the information files 202 have been stored in storage partition 104. Once information files 202 have been stored in storage partition 104, controller 102 can update file system 108 to reflect the current file structure of storage partition 104. The next time external storage device 100 is coupled to host device 110, host device 110 will load in the updated file system 108 of storage partition 104 so that the information files 202 in storage partition 104 can be accessed by host device 110. Controller 102 can erase information files 202 from reserve partition 105 periodically. Controller 102 can also update record file 107 with metadata. The metadata can be (1) the address of the memory sectors in storage partition 104 where the information files 202 had been stored, (2) the time that the information file(s) 202 had been stored in storage partition 104 and (3) the address of the memory sectors in reserve partition 105 which had been freed up as a result of erasing the information files 202 from reserve partition 105.

[0083] Figure 5 is a flowchart which depicts controller 102 storing information files 202 in storage partition 104 when external storage device 100 of figure 4 is in the offline mode, in accordance with embodiments of the invention. In step 501, external storage device 100 is coupled to host device 110 and host device 110 writes data files 201 into a memory segment in storage partition 104. In step 502, an event trigger occurs. This event trigger can be the result of host device 110 having written data files 201 into storage partition 104. Alternatively, the event trigger can be the result of the timer in real-time clock 203 having timed out. In step 503, controller 102 executes the analytical programs in the firmware and performs a file processing action on the data files 201. Controller 102 can automatically determine the analytical programs to execute, so as to perform the corresponding file processing actions, based on the file extensions of the data files 201. The file processing action can be for example, a file compression action, an image processing action, a montage creation action or a graph plotting action.

[0084] The output generated as a result of the file processing actions are information files 202, and in step 504, controller 102 stores/writes the information files 202 into reserve partition 105. In step 505, controller 102 updates record file 107 with metadata. In step 506, external storage device 100 is decoupled from host device 110. In step 507, powered by power source 401, controller 102 stores the information files 202 in storage partition 104. In step 508, controller 102 uses real-time clock 203 to record the time that the information files 202 have been stored in storage partition 104. In step 509, controller 102 updates file system 108 to reflect the current file structure of storage partition 104. The next time external storage device 100 is coupled to host device 110, host device 110 will load in the updated file system 108 of storage partition 104 so that the information file(s) 202 in storage partition 104 can be accessed by host device 110. [0085] Figure 6 is a flowchart which depicts controller 102 executing the analytical programs and storing information files 202 in storage partition 104 directly when external storage device 100 of figure 7 is in the offline mode, in accordance with embodiments of the invention. Figure 7 shows external storage device 100 where controller 102 stores information files 202 directly into storage partition 104 during the offline mode. This is in contrast with the previous embodiments where controller 102 stores the information files 202 in reserve partition 105 first, then subsequently to storage partition 104. In step 601, external storage device 100 is coupled to host device 110 and host device 110 writes data files 201 into a memory segment in storage partition 104.

[0086] In step 602, external storage device 100 is decoupled from host device 110. In step 603, an event trigger occurs. This event trigger can be the result of external storage device 100 having been decoupled from host device 110 in step 602. Alternatively, the event trigger can be the result of the timer in real-time clock 203 having timed out. In step 604, powered by power source 401, controller 102 executes the analytical programs in the firmware and performs a file processing action on the data files 201. Controller 102 can automatically determine the analytical programs to execute, so as to perform the corresponding file processing actions, based on the file extensions of the data files 201. The file processing action can be for example, a file compression action, an image processing action, a montage creation action or a graph plotting action.

[0087] The output generated as a result of the file processing actions are information files 202, and in step 605, powered by power source 401, controller 102 stores/writes the information files 202 directly into storage partition 105. These embodiments are therefore advantageous because controller 102, independent of host device 110, can generate information files 202 and store them directly to storage partition 104. In step 606, controller 102 uses real-time clock 203 to record the time that the information files 202 have been stored in storage partition 104. In step 607, controller 102 updates file system 108 to reflect the current file structure of storage partition 104. The next time external storage device 100 is coupled to host device 110, host device 110 will load in the updated file system 108 of storage partition 104 so that the information files 202 in storage partition 104 can be accessed by host device 110.

[0088] In step 608, controller 102 updates record file 107 with the metadata. The metadata can be (1) the identities of data files 201, (2) the type of file processing action that had been performed, (3) the identity of the analytical program which was used to perform the file processing action, (4) the identity of the information files 202 which had been generated, (5) the address of the memory sectors in storage partition 104 where the information files 202 have been stored, (6) the time and date in which the information files 202 had been stored in storage partition 104.

[0089] During the active mode or idle mode, controller 102 is capable of providing interface rendering information to host device 110. Host device 110 can use the interface rendering information to render user interface 800 on a display screen of host device 110. User interface 800 can comprise a plurality of menu-options. The menu-options allow a user to excess the file processing capabilities of the analytical programs in the firmware of the external storage device 100. The menu-options also allow a user to manipulate the memory segments in storage memory medium 103 e.g. free up or "zero-lize" memory segments, regulate the size of reserve partition 105 etc. These menu-options can be represented by folders. Figure 8 depicts an exemplary user interface 800.

[0090] User interface 800 can include menu-options: memory 801, generated information files 802, functionalities 803, trash 804, and reserve 805. When the user selects memory 801, the user can view and access the data files 201 stored in storage partition 104. When the user selects generated information files 802, the user can view and access the information files 202 stored in storage partition 104.

[0091] When the user selects functionalities 803, the user can have access to the file processing actions (e.g. file compression actions, image processing actions, montage creation actions, file filtering actions and graph plotting actions) of the analytical programs in the firmware of external storage device 100. The user can then select the data files 201 and which file processing action to be performed, which will then act as an event trigger for controller 102 to execute the analytical programs.

[0092] When the user selects trash 804, the user is able to erase data files 201 and information files 202 from storage partition 104. Typically, deleting files from a hard disk does not completely remove the files as most operating systems simply sever the link to the file, but the file still occupies the memory segments in the hard disk. Using the functionality trash 704 however, completely erases the selected data files 201 and information files 202 to free up or "zero-lize" the memory segments. When the user selects reserve 805, the user will be able to regulate the size of reserve partition 105.

[0093] In embodiments, an application programming interface (API) can be provided for other software applications in host device 110 to have access to the file processing actions of the analytical programs in the firmware of external storage device 100. Commands from these software applications will then act as an event trigger for controller 102 to execute the analytical programs and perform file processing actions on selected data files 201. The information files 202 generated as a result of the file processing actions will be presented to the software applications.

[0094] In embodiments, controller 102 updates record file 107 with metadata pertaining to the number of times a data file 201 has been accessed. The firmware is capable of intercepting the data packet between host device 110 and external storage device 100 and is therefore able to know the number of times a data file 201 is read.

[0095] In embodiments, storage memory medium 103 can comprise non-volatile memory and volatile memory. In embodiments, reserve partition 105 of storage memory medium 103 can comprise volatile memory such as RAM and DRAM, while storage partition 104 of storage memory medium 103 can comprise non-volatile memory. In these embodiments, when external storage device 100 is decoupled from host device 110, power source 401 can supply power to reserve partition 105 to preserve information files 202, while information files 202 are copied and stored into storage partition 104.

[0096] In embodiments, storage partition 104 of storage memory medium 103 can comprise different types of non-volatile memory. Some types of non-volatile memory e.g. single level cell (SLC) flash have higher levels of endurance than other types of non-volatile memory e.g. multi-level cell (MLC) flash. Controller 102 is configured to determine which data files 201 and information files 202 have not been modified, or have not been modified for a long time. One way of doing this is to track the time elapsed from the creation date or modification date of the data files 201 and information files 202. The fact that these files have not been modified for a while suggests their importance and that they can be earmarked for archival. Controller 102 is configured to store and archive these data files 201 and information files 202 in the portions of storage partition 104 which comprise non-volatile memory having higher levels of endurance. In embodiments, the non-volatile memory (such as a solid state drive) of storage partition 104 can have different modes of operation having differing IOPS (input/output operations per second). Controller 102 is also configured to detect the frequency of input/output experienced by storage partition 104 (or its utilization rate), and switch the nonvolatile memory to a mode with higher IOPS to provide better performance.

[0097] By "external", this means that external storage device 100 is peripheral to the host device 110, and is not incorporated into host device 110 such as a desktop, laptop, computer terminal, smart phone, mobile device or the like. External storage device 100 is not encapsulated by host device's 110 housing, and not integral with host device 110. External storage device 100 is a separate device, that can be readily coupled to, and readily disconnected from, the ports of host device 110 via cables and I/O port 106.

[0098] Unless specifically stated otherwise, and as apparent from the following, it will be appreciated that throughout the present specification, discussions utilizing terms such as "processing", "transferring", "loading", "storing", "executing" "scanning", "calculating", "determining", "replacing", "generating", "initializing", "outputting", or the like, refer to the action and processes of a computer system, or similar electronic device, that manipulates and transforms data represented as physical quantities within the computer system into other data similarly represented as physical quantities within the computer system or other information storage, transmission or display devices.

[0099] In the application, unless specified otherwise, the terms "comprising", "comprise", and grammatical variants thereof, intended to represent "open" or "inclusive" language such that they include recited elements but also permit inclusion of additional, non-explicitly recited elements.

[00100] It will be apparent that various other modifications and adaptations of the application will be apparent to the person skilled in the art after reading the foregoing disclosure without departing from the spirit and scope of the application and it is intended that all such modifications and adaptations come within the scope of the appended claims.