This application is based upon and claims the benefit of priority from the prior Japanese Patent Application No. 2012-123452, filed on May 30, 2012, the entire contents of which are incorporated herein by reference.
Embodiments of the present invention relate to a data management technology suitable for a hard disk drive (HDD), a universal serial bus (USB) memory, or the like applied to a personal computer (PC).
In recent years, PCs have widely been spread for both business use and personal use. In PCs, various memory apparatuses such as RAMs, HDDs, or USB memories capable of writing/reading data are used. Various data management methods for such kinds of memory apparatuses have been suggested until now.
In corporations, n PCs are used by m (where n<m) staffs, so that the PCs can be shared.
When the PCs are shared, it is not desirable that data used by users remain in the PCs from a viewpoint of security or privacy protection. Further, it is not desirable that other users take out the data stored in the PC. Furthermore, it is not desirable to data relevant to a PC system state be changed by the users using the PC.
An information processing apparatus that appropriately manages data of an auxiliary memory apparatus is provided to prevent data from leaking. The information processing apparatus according to an embodiment includes a first memory apparatus, a second memory apparatus, and a caching unit. The caching unit stores write data to be written on the second memory apparatus in a cache area ensured on the first memory apparatus. When a first event occurs, the caching unit initializes a management information table, in which the address of the cache area in which the write data is stored is associated with the address of the second memory apparatus in which the write data is to be stored, and restores the second memory apparatus to a state pervious to a state in which data is written.
Hereinafter, embodiments will be described with reference to the drawings.
First, a first embodiment will be described.
As illustrated in
Basic software such as an operating system (OS) 10 is stored in the system HDD 4. When the firmware is operated by the CPU 1 and an execution program or configuration information stored in the system HDD 4 is loaded on the memory 2, the system is activated only by the CPU 1 and the memory 2. Thereafter, an execution program loaded on the memory 2 reinitializes the I/O controller 3, the I/O devices connected to the I/O controller 3, and the auxiliary storage apparatus.
At this time, for example, as illustrated in
Various applications 16 can operate data using the corresponding file system driver 12 without considering the physical configuration or characteristics of the system HDD 4 or the USB memory 5 or a controller of the I/O controller 3.
In the information processing apparatus illustrated in
In the read cache, a program code and data frequently used are stored in a memory apparatus (cache memory) with a faster access speed and are read at high speed. Thus, the frequency of access to a memory apparatus with a slow access speed can be lowered. On the other hand, in the write cache, writing is assumed to be completed only when data to be written is once stored in a memory apparatus (cache memory) with an access speed faster than that of a final-stage memory apparatus. When a program being executed continues to operate, and then the data stored in the memory apparatus with the fast access speed is collectively written to the final-stage memory apparatus, a response speed is superficially improved.
In
The USB memory 5 configured by a NAND flash memory or the like in
When a computer is shared using thin-client terminals or the like by a plurality of users, it is not desirable that information written by an immediately previous user remain in the system HDD 4 from a viewpoint of information security. To avoid this problem, a technology for reliably removing information written by the immediately previous user is required.
The information processing apparatus 100 has a configuration suitable for these requests. Hereinafter, the configuration will be described in detail.
First, an overview of a realization method will be described. A normal write cache executes a flash process after giving a notification of completion of the write request. For example, the normal write cache detects an idle state of the CPU 1, the memory 2, the system HDD 4, or the USB memory 5 and writes the data overwritten on the cache memory onto the system HDD 4 or the like at a timing at which load does not interfere with execution of another program. This write operation is a flash process.
On the other hand, the information processing apparatus 100 according to the embodiment once stores all of the data written on each device (for example, the system HDD 4) in the write cache memory. When the writing is permitted, the flash process is executed for the first time. The data may not be written to the device as long as the writing is not permitted. The permission mentioned here is authentication to a server or a user's operation, but the permission is not determined as the authentication or the user's operation. Thus, by storing data to be written once in the write cache memory, the data can be also read.
In the information processing apparatus 100, dedicated Level 1 Buffer (data buffer) 2A and a configuration management area 2B are ensured inside the memory 2. The configuration management area 2B is an area in which configuration management information is stored. Here, the USB memory 5 is a speed-up target memory at the time of a cache operation. The system HDD 4 is an auxiliary memory apparatus that operates, for example, at the time of system activation. When the system HDD 4 is used as the cache memory, a Level 2 Buffer 4B (data buffer) and a configuration management area (Shadow) 4A as a replication of the configuration management area 2B are ensured in the system HDD 4. When a sufficiently large capacity can be ensured as a Level 1 Buffer 2A on the memory 2, such a configuration in which the configuration management area (Shadow) 4A or the Level 2 Buffer 4B illustrated in
In practice, however, a sufficiently large area of the Level 1 Buffer 2A may not be ensured, since the capacity of the memory 2 is limited. Therefore, when data to be written on the USB memory 5 is assumed to be greater than the capacity of the Level 1 Buffer 2A, the Level 2 Buffer 4B inside the system HDD 4 is allocated to take countermeasures against the shortage of the capacity of the Level 1 Buffer 2A. In the configuration of this case, the configuration management area (Shadow) 4A is not used. In terms of information security, the system HDD 4 to which the Level 2 Buffer 4B is allocated is required not to be easily removed, but it is not essentially required.
In the information processing apparatus 100 illustrated in
In this embodiment, the cache operation is executed by the filter driver 14. An example of a data structure necessary for the filter driver 14 to execute the cache operation will be described.
In
In the columns of “original addresses” of the memory tables illustrated in
The uppermost entry in the memory table illustrated in
In the device tables illustrated in
The uppermost entry in the device table illustrated in
On the other hand, in the uppermost entry in the device table illustrated in
As an example (not illustrated), the use or the in-device address can remain as a blank. The blank indicates an address is neither a speed-up target by a cache nor a device in which Level 2 Buffer 4B is ensured. In
Further, when the Level 2 Buffer 4B is used, rewriting from other than the filter driver 14 is required to be prohibited. Therefore, a request issued from the class driver 13 is monitored and a request to rewrite data on the Level 2 Buffer 4B is aborted.
In this embodiment, as the configuration management information, the data indicating the operation mode and the device table are stored as initialization options of the driver 15 in the system device (here, the system HDD 4). When the driver 15 receives such option information at the time of activation, the respective tables illustrated in
When the filter driver 14 is activated, the filter driver 14 allocates the configuration management area 2B to the memory 2 to store the configuration management information (block A1). When the configuration management area (Shadow) 4A is ensured, the filter driver 14 refers to the configuration management area 4A to obtain additional configuration management information, referring to the initialization options (block A2). In this embodiment, the configuration management area (Shadow) 4A is not ensured.
The filter driver 14 ensures the Level 1 Buffer 2A in the memory 2, referring to the initialization options (block A3). The filter driver 14 ensures the Level 2 Buffer 4B in the system HDD 4, referring to the initialization options or the configuration management information of the configuration management area 2B (block A4). Based on such information, the filter driver 14 determines the memory tables, the device table, data of the operation mode, and the like and starts the cache operation.
In this embodiment, the learning state (=the memory table) does not need to be stored, since the configuration management area (Shadow) 4A is not ensured in the system HDD 4.
When the service/user application 11 notifies the filter driver 14 of the shutdown, the filter driver 14 confirms whether the level 2 buffer 4B is volatile from the operation mode of the configuration management area 2B (block B1). For example, when the configuration management area (Shadow) 4A is not ensured in the system HDD 4 or when the Level 2 Buffer 4B is set to be initialized at each time of activating the system, “Yes” is set in Level 2 Volatile of the data of the operation mode. In this case, when the shutdown is notified of, the filter driver 14 does not execute any operation.
Conversely, when the configuration management area (Shadow) 4A is ensured in the system HDD 4, “No” is set in Level 2 Volatile of the data of the operation mode. In this case, the filter driver 14 issues a flash request to be described below to all of the speed-up target devices and waits for the completion of the operation (block B2). When the filter driver 14 completes the flash request, the filter driver 14 writes the contents of the configuration management area 2B on the configuration management area (Shadow) 4A (block B3). Then, the filter driver 14 requests the system HDD 4 having the configuration management area (Shadow) 4A and the Level 2 Buffer 4B to execute the original flash process (block B4).
When the filter driver 14 receives the read request from the application 16, the filter driver 14 determines whether the device number and the read address of the received read request are the number and the address of a speed-up target (block C1). When the device number and the read address of the received read request are not the number and the address of a speed-up target, the filter driver 14 executes a normal read process (block C2) and notifies the OS 10 of the process end (block C3). When the device number and the read address of the received read request are the number and the address of a speed-up target, the filter driver 14 retrieves whether the read address of the request is cached from the memory table and executes cache determination of hit on the Level 1 Buffer 2A, hit on the Level 2 Buffer 4B, or mistake in which no hit on both Level 1 Buffer 2A and the Level 2 Buffer 4B (block C4).
When the hit on the Level 1 Buffer 2A is achieved, the filter driver 14 copies the hit on data from hit on the Level 1 Buffer 2A to a user Buffer 2C (block C5) and notifies the OS 10 of the process end (block C3). The user Buffer 2C refers to a work area of the memory 2 indicated by a copy point included in the read request and the write request.
When the hit on the Level 2 Buffer 4B is achieved, the filter driver 14 searches a vacant block including no Dirty in the Level 1 Buffer 2A (block C6). When the filter driver 14 does not find a vacant block, the filter driver 14 reads data from the Level 2 Buffer 4B to the user Buffer 2C (block C7) and notifies the OS 10 of the process end (block C3). Conversely, when the filter driver 14 finds the vacant block, the filter driver 14 allocates the vacant block of the Level Buffer 2A as the device and the address of the read request and accordingly updates the memory table (block C8). The filter driver 14 reads the data from the Level 2 Buffer 4B to the assigned the Level 1 Buffer 2A (block C9). Further, the filter driver 14 copies the data from the Level 1 Buffer 2A to the user Buffer 2C (block C5) and notifies the OS 10 of the process end (block C3).
When the mistakes in both the Level 1 Buffer 2A and the Level 2 Buffer 4B occur, the filter driver 14 determines whether a read cache operation is executed, by referring to the data of the operation mode (block C10). When the read cache operation is not executed, the filter driver 14 executes a normal read process (block C11) and notifies the OS 10 of the process end (block C3).
Even when the read cache operation is executed, the filter driver 14 searches a vacant block including no Dirty in the Level 1 Buffer 2A (block C12 in
When the filter driver 14 finds the vacant block including no Dirty in block C12, the filter driver 14 allocates the device and the address of the vacant block of the Level 1 Buffer 2A as the device and the address of the read request and accordingly updates the memory table (block C13). Then, the filter driver 14 reads the data read from the speed-up target device (here, the USB memory 4) to the allocated the Level 1 Buffer 2A (block C14). Further, the filter driver 14 copies the data from the Level 1 Buffer 2A to the user Buffer 2C (block C15) and notifies the OS 10 of the process end (block C16).
Next, the filter driver 14 determines whether the allocation of the Level 2 Buffer 4B is completed for the address of the read request (block C17). When the allocation is completed, the filter driver 14 writes the contents of the Level 1 Buffer 2A on the Level 2 Buffer 4B (block C18) and ends the process. When the Level 2 Buffer 4B is not assigned in block C17, the filter driver 14 determines whether the non-allocation of the Level 2 Buffer 4B corresponds to a case in which the Level 2 Buffer 4B is not ensured or a case in which the Level 2 Buffer 4B including no Dirty is searched but not found (block C19). When the Level 2 Buffer 4B is not ensured or when the filter driver 14 does not find the Level 2 Buffer 4B including no Dirty, the filter driver 14 directly ends the process. Conversely, when the Level 2 Buffer 4B is ensured and when the filter driver 14 finds the Level 2 Buffer 4B including no Dirty, the filter driver 14 allocates the Level 2 Buffer 4B to the address of the read request and accordingly updates the memory table (block C20). Then, the filter driver 14 writes the contents of the Level 1 Buffer 2A on the Level 2 Buffer 4B (block C18) and ends the process.
When the filter driver 14 receives a write request from the application 16, the filter driver 14 determines whether the device number and the write address of the received write request are a device number and a write address of the speed-up target (block D1). When the device number and the write address of the received write request are not the device number and the write address of the speed-up target, the filter driver 14 executes a normal write process (block D2) and notifies the OS 10 of the process end (block D3). When the device number and the write address of the received write request are the device number and the write address of the speed-up target, the filter driver 14 searches whether the write address of the request is cached from the memory table and executes cache determination of hit on the Level 1 Buffer 2A, hit on the Level 2 Buffer 4B, or mistake in which no hit on both Level 1 Buffer 2A and the Level 2 Buffer 4B (block D4).
In a case of the hit on the Level 1 Buffer 2A and the mistake in the Level 2 Buffer 4B, the filter driver 14 copies data stored in the user Buffer 2C and desired to be written to the already allocated the Level 1 Buffer 2A (block D5). Then, the filter driver 14 sets Dirty as the block which copied the data of the Level 1 Buffer 2A (block D6) and notifies the OS 10 of the process end (block D3).
In a case of the hit on the Level 2 Buffer 4B, the filter driver 14 copies data stored in the user Buffer 2C and desired to be written to the Level 2 Buffer 4B (block D7) and sets Dirty as the block which copied the data of the Level 2 Buffer 4B (block D8). Next, the filter driver 14 determines whether the Level 1 Buffer 2A is also hit (block D9). When the hit on the Level 1 Buffer 2A, the filter driver 14 copies data stored in the user Buffer 2C and desired to be written to the already allocated the Level 1 Buffer 2A (block D5). The filter driver 14 sets Dirty in the block of the Level 1 Buffer 2A on which the data is copied (block D6) and notifies the OS 10 of the process end (block D3). When the mistake in the Level 1 Buffer 2A occurs in block D9, the filter driver 14 notifies the OS 10 of the process end (block D3).
When the mistake in both the Level 1 Buffer 2A and the Level 2 Buffer 4B occurs, the filter driver 14 checks whether a write cache operation is stopping (block D10). When the write cache operation is being stopped, the filter driver 14 executes a normal write process (block D11) and notifies the OS 10 of the process end (block D3).
When the filter driver 14 determines that the write cache operation is being executed in block D10, the filter driver 14 searches a vacant block including no Dirty of the Level 1 Buffer 2A (block D12). When the filter driver 14 does not find the vacant block, the filter driver 14 notifies the OS 10 of error end (block D13). When the filter driver 14 finds the vacant block in block D12, the filter driver 14 allocates the vacant block of the Level 1 Buffer 2A to the address of the write request and accordingly updates the memory table (block D14). The filter driver 14 copies the data stored in user Buffer 2C and desired to be written to the allocated vacant block of the Level 1 Buffer 2A (block D5). Then, the filter driver 14 sets Dirty in the block of the Level 1 Buffer 2A on which the data is copied (block D6) and notifies the OS 10 of the process end (block D3).
When the filter driver 14 receives a flash request from the service/user application 11, the filter driver 14 determines whether the device number and the flash address of the received flash request are the number and the address of a speed-up target (block E1). When the device and the address of the received flash request are not the device and the address of the speed-up target, the filter driver 14 executes a normal flash process (block E2) and notifies the OS 10 of a process end (block E3). When the filter driver determines that the device and the address of the received flash request are the device and the address of the speed-up target in block E1, the filter driver 14 determines whether the Level 2 Buffer 4B is ensured (block E4). When the Level 2 Buffer 4B is not ensured, the filter driver 14 does not execute any operation and notifies the OS 10 of the process end without performing any (block E3).
When the filter driver 14 determines that the Level 2 Buffer 4B is ensured in block E4, the filter driver 14 searches whether a block in which Dirty is set is present in the Level 1 Buffer 2A from the memory table (block E5). When the filter driver 14 does not find the Dirty block and the configuration management area (Shadow) 4A is ensured, the filter driver 14 writes configuration management information of the configuration management area 2B on the configuration management area (Shadow) 4A (block E6). Then, the filter driver 14 executes a flash process on the Level 2 Buffer 4B (block E7) and notifies the OS 10 of the process end (block E3). In the embodiment, since the configuration management area (Shadow) 4A is not ensured, block E6 is not executed and the process proceeds to block E7.
When the filter driver 14 finds the block in which Dirty is set in the Level 1 Buffer 2A in block E5, the filter driver 14 checks whether the Level 2 Buffer 4B is allocated, by referring to the column of the Level 2 address of the entry of the memory table indicating that the block in which Dirty is set in the found Level 1 Buffer 2A (block E8). When the Level 2 Buffer 4B is not allocated, the filter driver 14 allocates the Level 2 Buffer 4B and accordingly updates the memory table (block E9). The filter driver 14 writes data of the block in which Dirty of the Level 1 Buffer 2A is set on the Level 2 Buffer 4B (block E10). Next, the filter driver 14 clears the setting of Dirty of the Level 1 Buffer 2A (block Ell) and sets Dirty as the block allocated to the Level 2 Buffer 4B (block E12). The processes of block E5 to block E12 are repeated, until the setting of Dirty is cleared from the Level 1 Buffer 2A. When the setting of Dirty is cleared from Level 1 buffer 2A, the processes of block E5, block E6, block E7, and block E3 are executed and ends.
Here, a point is that the process ends by writing data only in the Level 2 Buffer 4B and the data is not yet written on the USB memory 5 which is a speed-up target device.
Various cache initialization conditions are assumed. An initialization condition by a user's operation will be described as a representative example. The service/user application 11 is connected to the user interface. As the user interface of the information processing apparatus 100, a switch or a button used to clear the contents of a cache is disposed for each target device. Pressing down the button is Trigger 1.
When Trigger 1 is generated, the service/user application 11 issues “Special Request 1” to the filter driver 14. When Trigger 1 is generated, the filter driver 14 searches the memory table, separates the Level 1 Buffer 2A by setting “Invalid” in the Level 1 Buffer 2A allocated for the cache operation of the speed-up target device (here, the USB memory 5), and simultaneously clears the setting of Valid/Dirty of each block of the Level 1 Buffer 2A (block F1). Subsequently, the filter driver 14 searches the memory table, separates the Level 2 Buffer 4B by setting “Invalid” in the Level 2 Buffer 4B allocated for the cache operation of the speed-up target device, and simultaneously clears the setting of Valid/Dirty of each block of the Level 2 Buffer 4B (block F2). The contents of Level 1 buffer 2A and the Level 2 Buffer 4B allocated for the cache operation are cleared (invalidated) through the execution of block F1 and block F2. Finally, the filter driver 14 causes valid blocks (=information regarding another speed-up target device) for other devices to remain and executes reinitialization of the memory table (block F3). The blocks F1 and F2 are invalidation processing.
Since all of the processes are executed within the memory 2, the original contents can be read instantaneously.
In this embodiment, since the speed-up target device is the USB memory 5, the speed-up target device can be easily detached from the information processing apparatus 100. When the speed-up target device is detached, there are two methods of detaching the speed-up target device by giving a preliminary notice from the OS 10 and detaching the speed-up target device without a preliminary notice. In this embodiment, even in either method, the filter driver 14 itself detects the detachment phenomenon and executes an operation equivalent to the operation performed when Trigger 1 is generated.
When ejection is detected, the filter driver 14 determines whether the detached device is a speed-up target device (hereinafter, an example will be made on the assumption that the USB memory 5 is detached) (block G1). When the detached device is not the USB memory 5, the filter driver 14 does not execute any operation. When the detached device is the USB memory 5, the filter driver 14 searches a block including the data of the USB memory 5 by the memory table (block G2). When the filter driver 14 does not find the data, the filter driver 14 does not execute any operation.
When the filter driver 14 finds the block including the data of the USB memory 5 in block G2, the filter driver 14 searches the memory table, separates the Level 1 Buffer 2A by setting “Invalid” in the Level 1 Buffer 2A allocated for the cache operation of the USB memory 5, and also clears the setting Dirty/Valid of each block of the Level 1 Buffer 2A (block G3). Likewise, the filter driver 14 separates the Level 2 Buffer 4B by setting “Invalid” in the Level 2 Buffer 4B allocated for the cache operation of the USB memory 5 and also clears the setting Dirty/Valid of each block of the Level 2 Buffer 4B (block G4). The filter driver 14 repeats the processes of block G2 to block G4, until the block including the data of the USB memory 5 is not present in the memory table. The contents of Level 1 buffer 2A and the Level 2 Buffer 4B allocated for the cache operation are deleted (invalidated) through the execution of block G3 and block G4.
Thus, by instantaneously erasing the data written to the USB memory 5, it is possible to prevent the data from leaking in advance.
Various write conditions in which data stored in the cache memory is written on a device are assumed. A write condition by a user's operation will be described as a representative example. The service/user application 11 is connected to the user interface. As the user interface of the information processing apparatus 100, a switch or a button used to permit the data stored in the cache memory to be written on a device is disposed. Pressing down the button is Trigger 2.
When Trigger 2 is generated, the service/user application 11 issues “Special Request 2” to the filter driver 14. When Trigger 2 is generated, the filter driver 14 issues a flash request illustrated in
When the completion of the flash request is notified through the process of
In block H3, the filter driver 14 checks whether the block of level 1 Buffer 2A is allocated as the cache memory, referring to the column of the Level 1 address in the entry of the memory table in which the Dirty block of the Level 2 Buffer 4B is allocated can be found. When the block of the Level 1 Buffer 2A is allocated as the cache memory, the filter driver 14 determines whether a block state of the Level 1 Buffer 2A is Valid and Dirty, referring to the column of the block state in the entry (block H5). When the block state is Valid and Dirty, the filter driver 14 appropriately combines the valid data on the merging Buffer 2D and the Level 1 Buffer 2A to reconstruct the data on the merging Buffer 2D (block H6). Then, the filter driver 14 clears the setting of Valid and Dirty of the Level 1 Buffer 2A (block H7).
When the filter driver 14 determines that the block of the Level 1 Buffer 2A is not allocated as the cache memory in block H5 or the block state of the Level 1 Buffer 2A allocated as the cache memory is not Valid and Dirty and after the process of block H7 is completed, the filter driver 14 writes the data of the merging Buffer 2D on the USB memory 5 (block H8). Next, the filter driver 14 clears the setting of Dirty of the Level 2 Buffer 4B (block H9). The processes of block H3 to block H9 continue, until the Dirty block is not present in the Level 2 Buffer 4B.
When level 2 Buffer 4B is not ensured in block H2 and when the Dirty block is not present in the Level 2 Buffer 4B in block H3, the filter driver 14 searches the Dirty block of the Level 1 Buffer 2A from the memory table (block H10). When the filter driver 14 finds the Dirty block in the Level 1 Buffer 2A, the filter driver 14 writes the data of the Dirty block of the Level 1 Buffer 2A on the USB memory 5 (block H11) and clears the setting of the Dirty of the Level 1 Buffer 2A (block H12). The processes of block H10 to block H12 continue, until the Dirty block is not present in the Level 1 Buffer 2A.
When all of the Dirty blocks of the Level 1 Buffer 2A and the Level 2 Buffer 4B are not present in block H10, the filter driver 14 checks data of the operation mode (block H13). When a variable name of the data of the operation mode, Write Cache Enable/Disable is set to be Disable as the check result, the series of write processes is completed. On the other hand, when the variable name, Write Cache Enable/Disable is set to be Enable, there is a possibility that a Dirty block is newly generated during the series of processes. Therefore, the filter driver 14 sets the variable name of the data of the operation mode, Write Cache Enable/Disable, to be Disable (block H14) and repeats the processes from block H2.
The rewritten data are all written on the USB memory 5 (the speed-up target device permitted to execute the writing) through the process. In this state, since the write cache is stopped, the USB memory 5 can be ejected only at this timing with the latest data being maintained. When the USB memory 5 is not ejected and uncontrolled or rewriting is prohibited through a user's operation, the service/user application 11 issues “Special Request 3” to the filter driver 14. Issuing “Special Request 3” is Trigger 3. Then, the filter driver 14 reactivates the write cache (block I1 in
The service/user application 11 periodically monitors a summary of the configuration management information output by the filter driver 14. When the Level 2 Buffer 4B is not allocated, the service/user application 11 prompts cache initialization/Dirty flash by notifying the user of a warning at the time at which an occupation ratio of the Dirty blocks of the Level 1 Buffer 2A exceeds a preset constant value. When the allocation of the Level 2 Buffer 4B is completed, the service/user application 11 prompts cache initialization/Dirty flash by notifying the user of a warning at the time at which an occupation ratio of the Dirty blocks of the Level 2 Buffer 4B exceeds a preset constant value.
In the information processing apparatus according to the embodiment, as described above, a risk of the data leakage can be reduced by controlling the writing of the data on the USB memory 5 (disturbing the update of the data) during the write cache operation.
Next, a second embodiment will be described.
The MPU 202 interprets various requests from the HOST 110 and appropriately controls a memory 203 and a media controller 204. A control program stored in a firmware (FW) 205 is being executed in the MPU 202 and the media controller 204. Further, the media controller 204 executes position control of a motor/head 206, generation of a timing signal, reading control on a medium 207, modulation control of write data, error correction control, and the like in response to a request of the MPU 202.
In the medium 207, a user data area 207A is disposed as an area to which the HOST 110 can gain direct access. In a concealed area from the HOST 110, a substitution address area 207B is disposed in which substitution address information on a fault area or substitution address information of configuration management information used by the MPU 202 is stored. Further, the configuration management area (shadow) 207C and the Level 2 Buffer 207D described above are disposed in the concealed area. In an auxiliary memory apparatus having a general rotation medium, a pre-read cache or a write cache using the memory 203 is realized in the MPU 202 in order to conceal a mechanical movement time generated in the medium 207 or the motor/head 206. In the second embodiment, an additional logic is added to the write cache.
More specifically, a dedicated Level 1 Buffer (data buffer) 203B and a configuration management area 203A storing configuration management information are ensured inside the memory 203 of the HDD 200. Here, the user data area 207A of the medium 207 is a speed-up target device in a cache operation. A configuration management area (Shadow) 207C storing a copy of the configuration management information and a Level 2 Buffer (data buffer) 207D are prepared in the area of the medium 207 which is not usable directly from the HOST 110.
An I/O panel 200A is a user interface unique in the second embodiment. In the second embodiment, since a panel in which LEDs turn on and off during access includes an input switch, an instruction can be given to the MPU 202. An instruction from the I/O panel 200A can be substituted with a special request from the HOST 110. Here, two buttons are illustrated in the I/O panel 200A. One of the two buttons is an initialization button B1 and the other is a flash button B2. Two LEDs are illustrated. One of the two LEDs is an access lamp L1 and the other is a Dirty increase warning lamp L2.
The HDD 300 may execute the same operation as the HDD 200. In this case, the dedicated I/O panel 200A may also be connected to the HDD 300, as necessary.
The second embodiment is different from the first embodiment in that write data is maintained even when shutdown is performed and original data can be read instantaneously.
In the configuration illustrated in
Here, the I/O panel 200A is connected to the HDD 200, but may be substituted with the same management application as the service/user application 11 operated inside the HOST 110. Even when the I/O panel 200A is not connected, a management application corresponding to the service/user application 11 activated inside the HOST 110 may be provided. Further, even when the same application as the service/user application 11 is not provided, an operation aimed in the embodiment can be realized.
In the second embodiment, the cache operation is executed by the MPU 202. A firmware operating the MPU 202 is stored in the FW 205. An example of a data structure necessary to execute the cache operation will be described.
In the second embodiment, the configuration management information is stored in advance in the configuration management area (Shadow) 207C.
In general, the volatile memory 203 loses contents, when power is turned off. Therefore, the configuration management area (Shadow) 207C of the medium 207 is used as an area in which the configuration management information is maintained. The configuration management area (Shadow) 207C corresponds to the configuration management area (Shadow) 4A of the first embodiment.
In the second embodiment, when power is turned on to the entire system including the auxiliary memory apparatus, the MPU 202 of the HDD 200 initializes a peripheral controller using the FW 205. At this time, the initialization is executed such that the media controller 204, the medium 207, and the motor/head 206 can be also accessed from the MPU 202.
At a time point at which the medium 207 can be accessed from the MPU 202 after initialization, the MPU 202 reads the substitution address information or the like on a fault area from the substitution address area 207B and stores the substitution address information in the memory 203.
The FW 205 stores the address or size of the configuration management area (Shadow) 207C, the size of the Level 1 Buffer 203B, the default contents of the data of an operation mode, and the like. The MPU 202 ensures the configuration management area 203A inside the memory 203, referring to the FW 205 (block corresponding to block A1 of
Here, a point is that a cache learning state at the time of the previous activation can be recreated by reading the memory table from the configuration management area (Shadow) 207C. In the case of this installation example, setting of variable Level 2 Volatile/Nonvolatile of the data of the operation mode is Nonvolatile.
In the second embodiment, it is necessary to store the contents of the memory table, since the configuration management area (Shadow) 207C is ensured.
In detection of shutdown, substitution detection of shutdown is executed using a Standby Immediate command in a case of an ATA command and using a STOP_UNIT command in a case of an SCSI command or the like. When the MPU 202 is notified of such a command, the MPU 202 checks the variable Level 2 Volatile/Nonvolatile of the data of the operation mode (the result is Nonvolatile) (block corresponding to block B1 of
On the other hand, when the flash request is completed, the MPU 202 writes the contents of the configuration management area 203A on the configuration management area (Shadow) 207C (block corresponding to block B3 of
A read request and a write request will not be described, since the read request and the write request are the same as those of the first embodiment.
The second embodiment is almost the same as the first embodiment, but is different in that a process corresponding to block E6 of
As in the first embodiment, various cache initialization conditions are assumed. As the most representative example of this embodiment, an example in which a physical button of the I/O panel 200A is used will be given. When the MPU 202 detects that an initialization button B1 of the I/O panel 200A is pressed down during the activation of the HDD 200, Trigger 1 is generated. The MPU 202 searches the memory table of the configuration management area 203A, separates the Level 1 Buffer 203B by setting “Invalid” in each block of the Level 1 Buffer 203B allocated for the cache operation of the speed-up target device, and simultaneously clears the setting of Valid/Dirty of each block of the Level 1 Buffer 203B (block corresponding to block F1 of
Since all of the processes are executed within the MPU 202 and the memory 203, the original contents can be read instantaneously. The configuration management area (Shadow) 207C is updated when the flash request or a shutdown request is detected.
An operation of updating the configuration management area (Shadow) 207C is executed after setup of the OS or the like is completed and at a timing when the user of the computer (the HOST 110) to which the HDD 200 is connected is switched, during a normal activation after flash of a Dirty block to be described below. Then, a new user cannot read the content changed by the immediately previous user, and thus a leakage accident can be prevented.
Precisely, the second embodiment is realized to achieve this aim, a method of issuing a special request is effective based on authentication at the time of activating the computer rather than the physical button of the I/O panel 200A.
Likewise in the above-described initialization, an example in which a physical button is used will be given. When the MPU 202 detects that a flash button B2 of the I/O panel 200A is pressed down during the activation of the HDD 200, Trigger 2 is generated.
When Trigger 2 is generated, the MPU 202 executes the same process as the process of receiving the flash request (block corresponding to block H1 of
When a process equivalent to the flash request described with reference to
The MPU 202 checks whether the block of level 1 Buffer 203B is allocated as the cache memory, referring to the column of the Level 1 address in the entry of the memory table in which the Dirty block of the Level 2 Buffer 207D is allocated. When the block of the Level 1 Buffer 203B is allocated as the cache memory, the MPU 202 determines whether a block state of the Level 1 Buffer 203B is Valid and Dirty, referring to the column of the block state in the entry (block corresponding to block H5 of
When the MPU 202 determines that the block of the Level 1 Buffer 203B is not allocated as the cache memory or the block state of the Level 1 Buffer 203B allocated as the cache memory is not Valid and Dirty and after the process corresponding to block H7 of
When the Dirty block is not present in the Level 2 Buffer 207D, the MPU 202 searches the Dirty block of the Level 1 Buffer 203B from the memory table (block corresponding to block H10 of
When all of the Dirty blocks of the Level 1 Buffer 203B and the Level 2 Buffer 207D are not present, the MPU 202 checks data of the operation mode. When a variable, Write Cache Enable/Disable, is set to be Disable as the check result, the series of write processes is completed (corresponding to the positive determination of block H13 of
The rewritten data are all written on the user data area 207A through the process. In this state, since the write cache is stopped, a system updating process such as a process of updating the OS is performed at this timing. When the updating process or the like is completed, the flash button B2 of the I/O panel 200A is pressed down again. Then, Trigger 3 is generated and the MPU 202 resumes the write cache (block corresponding to block I1 of
The MPU 202 periodically monitors the configuration management information. When an occupation ratio of the Dirty blocks of the Level 2 Buffer 2070 exceeds a preset constant value, the MPU 202 prompts the flash of the cache initialization/flash of the Dirty block by giving a warning notification via an LED of the I/O panel 200A. The monitoring can be substituted with a monitoring application such as the service/user application 11.
In the memory apparatus according to the second embodiment, as described above, as in the information processing apparatus according to the first embodiment, a risk of the data leakage can be reduced by controlling the writing of the data on the medium (disturbing the update of the medium) during the write cache operation. Therefore, the system state can be maintained. Accordingly, for example, installation of unauthorized software or the like can be cancelled later.
Since the operation control process of each embodiment can be realized by software (program), the advantages of each embodiment can easily be realized by installing the software in a general computer through a computer-readable memory medium storing the software.
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
Number | Date | Country | Kind |
---|---|---|---|
2012-123452 | May 2012 | JP | national |