This application claims priority under 35 U.S.C. §119(a) from Korean Patent Application No. 10-2012-0102474 filed on Sep. 14, 2012, the subject matter of which is hereby incorporated by reference.
The inventive concept relates to devices and methods capable of processing continuous shooting image data (CSID). More particularly, the inventive concept relates to devices and methods capable of real-time processing and storing CSID generated by high-resolution continuous shooting functions in a nonvolatile storage device regardless of a particular data storage capacity (or available data storage capacity) of a constituent random access memory.
Many contemporary mobile devices such as smart phones, tablet personal computers (PCs), and digital cameras include a Random Access Memory (RAM) that is used during the execution of applications and operating systems, a nonvolatile storage device that is used to store user data, and a camera module that is capable of generating image data (i.e., still image data and/or continuous shooting image data). As the number of camera pixels included in the camera module increases, image resolution increases. A greater number of pixels also supports improved continuous shooting functions.
Contemporary mobile devices supporting continuous shooting function(s) typically store the CSID generated by the continuous shooting function in a dedicated portion of RAM. Then, the CSID stored in RAM is copied to the nonvolatile storage device once the dedicated portion of RAM is full. Such mobile devices repeat this 2-step approach (i.e., first filling a dedicated portion of RAM, and then moving the CSID stored in RAM to the nonvolatile memory) because the RAM may be operated in a write mode that is sufficiently fast to store the CSID in RAM within given time constraints. However, write modes available for contemporary nonvolatile storage devices are too slow to meet similar time constraints.
Unfortunately, the size of the dedicated portion of RAM allocated to CSID storage, as well as the write block size for the CSID being stored in the RAM and the corresponding number of continuous shooting images that may be captured by a particular image processing system are all restricted. For example, it has become impractical to many instances to increase the size of the dedicated portion of RAM allocated to CSID storage because certain applications executed by mobile devices during (or in relation to) a continuous shooting function also demand considerable memory space in RAM. In other conventional instances, when the data storage capacity of the RAM is exceeded by extended continuous shooting operations, either the continuous shooting operation must be halted, or the resolution of the resulting CSID is degraded.
An embodiment of the inventive concept provides a method for operating a flash storage device in an image processing system during execution of multiple continuous shooting (CS) operations that respectively generate CS image data (CSID), wherein a memory array of the flash storage device includes a first memory region and a second memory region, the method comprising; receiving region allocation information (RAI) from a host, allocating in response to the RAI a portion of the first memory region as a dedicated CSID buffer region used to temporarily store only CSID during execution of the CS operations, and allocating a portion of the second memory region as a normal data region used to store normal data during a normal program operation, wherein the first memory region is configured to support data access operations including the normal program operation performed at a first speed, and the second memory region is configured to support data access operations performed at a second speed slower than the first speed.
Another embodiment of the inventive concept provides an image processing system comprising; a host that generates continuous shooting image data (CSID) and a flash storage device including a memory cell array including a first memory region and a second memory region. A portion of the first memory region is a dedicated CSID buffer region that temporarily stores only CSID, and the second memory region stores normal data provided to the flash storage device by the host during a normal program operation. The first memory region supports data access operations including the normal program operation performed at a first speed, and the second memory region supports data access operations performed at a second speed slower than the first speed.
In various configurations, the host 200 may be operated in one or more CS modes that generate “continuous shooting image data” or “CSID.” Examples of CS modes include burst mode, multi-shot mode, continuous video mode, etc. In certain embodiments of the inventive concept, the CSID generated by the host 200 while operating in a CS mode may be communicated on-the-fly to the flash storage device 300. In this context, the term “on-the-fly” will be understood by those skilled in the art as denoting data processing approaches that immediately process data as it is generated in real time.
In relevant portion, the host 200 comprises a read only memory (ROM) 210, a processor 220, a camera module 230, a random access memory (RAM) 240, a flash storage device interface controller 250, and a user interface (UI) 260. In certain embodiments of the inventive concept, the host 200 may be embodied using system-on-chip (SoC) fabrication techniques.
During a CS mode, the camera module 230 may variously be used to generate CSID.
The ROM 210 may be used to store data defining one or more application(s), related files and/or operating systems (OS), or host firmware necessary to control the operation of the host 200. The OS and/or host firmware may be executed under the control of the processor 220 after being loaded from the ROM 210 to the RAM 240. The ROM 210 may be implemented using one or more non-volatile memory device(s).
As instructed by the OS and/or host firmware, the processor 220 may be used to control operation of the camera module 230, and inter-operation of the camera module 230 with RAM 240, flash storage device interface controller 250, and UI 260.
According to certain embodiments of the inventive concept, the RAM 240 may be implemented using volatile memory, such as a dynamic RAM (DRAM), a static RAM (SRAM), a thyristor RAM (T-RAM), a zero capacitor RAM (Z-RAM), a Twin Transistor RAM (TTRAM) and similar. In the illustrated embodiment of
During initialization of a CS mode, the processor 220 may be used to generate “region allocation information” (RAI) that is communicated to the flash storage device 300 via the flash storage device interface controller 250. The RAI will typically include at least one of; a defined image resolution, a CS frame rate, and a CS time. In certain embodiments of the inventive concept, the RAI may include a CSID buffer region size or a CSID buffer region size value. Particular RAI may be predetermined by a manufacturer of the image processing system 100 or a constituent host incorporating the image processing system 100), or it may defined in accordance with user inputs communicated to the image processing system 100 via the UI 260. The provision and use of RAI will be described in some additional detail hereafter.
In certain embodiments of the inventive concept, the host 200 additionally includes an integral display (not shown in
During a CS mode, the processor 220 may be used to generate a CSID flag (FLAG) indicating that the particular data being communicated by the processor 220 to the flash storage device 300 is CSID. Additionally, after (or near) termination of a CS mode, the processor 220 may be used to generate a migration command (MC), wherein the MC is communicated via the flash memory interface controller 250 to the flash storage device 300. In this regard, the MC may be communicated separately or in conjunction with the CSID flag, and/or RAI. When received by the flash memory interface controller 250, the MC is interpreted to secure or “allocate” a region in the flash storage device 300 dedicated to the storing of CSID (hereafter, “the CSID region).
In a first assumed case (CASE I), CSID provided by the camera module 230 is directly communicated from the camera module 230 to the flash storage device 300 via the flash storage device interface controller 250. However, in a second assumed case (CASE II), CSID provided by the camera module 230 is indirectly communicated to the flash storage device 300 via the flash storage device interface controller 250 after being intermediately buffered in the RAM 240. The buffered CSID may then be provided from the RAM 240 to the flash storage device 300 via and flash storage device interface controller 250 under the control of the processor 220.
In either CASE I or CASE II, an image processing system with embodiments of the inventive concept may be used to store CSID in a nonvolatile memory device on-the-fly and at relatively high data processing speeds. That is, the host 200 of
In the description that follows, it is assumed that the host 200 of
Returning to the illustrated embodiment of
In certain embodiments of the inventive concept, the data processing system 100 allows a user via the UI 260 to input one or more “resolution parameters” (e.g., an image resolution, a CS frame rate, and/or a CS time). Alternately, one or more resolution parameters may be pre-set by the manufacturer of the data processing system 100. In either event, the processor 220 may be used to generate the RAI according to one or more resolution parameter(s).
The flash storage device 300 may be variously embodied as will be understood by those skilled in the art. The flash storage device 300 may be physically embedded (or integrated) within the image processing system 100, or it may be provided in a manner that allows physical attachment/detachment with the image processing system 100 (e.g., an embedded multimedia card (eMMC)). In certain embodiments of the inventive concept, the flash storage device 300 may be a solid state drive (SSD), universal flash storage (UFS) a secure digital (SD) card, a Universal Serial Bus (USB) flash drive, a subscriber identification module (SIM) card, or a Universal Subscriber Identity Module (USIM) card.
A flash memory type storage device has been assumed for the illustrated embodiment of
As will be described in some additional detail hereafter, the flash storage device 300 may include flash memory cells conventionally arranged in one or more memory cell array(s). The constituent memory cells may be accessed using single level data techniques and/or multi-level data techniques according to designated region(s) within the memory cell array. Thus, the flash storage device 300 in various embodiments of the inventive concept may be said to include single level memory cells (SLC) and/or multi-level memory cells (MLC) such as triple level cells (TLCs) and/or quad level cells (QLCs).
During a CS mode, the flash controller 310 may be used, for example, to control the definition and allocation of various memory region(s) within a memory cell array 331, storage of CSID, and execution of a migration operation invoked by receipt of a MC. In this regard, the flash controller 310 may be used to interpret a migration command MC received from the host 200 and control the execution of a corresponding migration operation by flash memory 330. That is, the flash controller 310 may be used to monitor a “nominal CSID period” during which CSID is stored in an allocated CSID memory region. In this manner, the flash controller 310 may control execution of a migration operation in accordance with a nominal CSID time period.
In the embodiment illustrated in
In the embodiment illustrated in
Thus, consistent with the illustrated embodiment of
As illustrated in
The storage firmware 315 being executed by the flash controller 310 may be used to interpret a RAI received from the host 200. In response to the RAI, the flash controller may allocate one or more blocks (e.g., 331A, 331B-1, 331B-2, and 331C-1 through 331C-5) to each designated region of the flash memory 330. Here, for example, blocks 331A, 331B-1 and 331B-2 are assumed to be blocks including SLC configured to support access operations executed at a relatively fast speed. Accordingly, the flash controller 310 allocates the block 331A to the firmware storage region 331A, and allocates blocks 331B-1 and 331B-2 to the dedicated CSID buffer region. In contrast, the flash controller 310 allocates blocks 331C-1 through 331C-5, including MLC configured to support access operations executed at a relatively slow speed, to the normal data region 331C.
As further illustrated in
Under the control of the flash controller 310, the control logic circuit 333 may be used to control execution of data access operation (e.g., read, write (program) and/or erase operations) directed to selected memory cells of the flash memory 330. The page buffer 335 may be used to program data (i.e., normal write data or CSID) received from the host 200 in either the first memory region or the second memory region of the flash memory 330 depending on the data type and/or the type of operation being executed.
For example, assuming a given image resolution of 8 Mbytes per frame, a CS frame rate of 10 frames per second, and a CS time is 2 seconds as resolution parameters communicated by the RAI, the flash controller 310 must allocate a minimum of 160 Mbytes (or 8 Mbytes×10/s×2 s) for the dedicated CSID buffer region intended to store CSID (S103).
When received, the RAI may be stored in a register or defined location in flash memory 330. However, when the flash storage device 300 is assumed to be an eMMC having an extended card specific data register (EXT_CSD register) according to certain embodiments of the inventive concept, the RAI may be stored in the conventionally understood VENDOR_SPECIFIC_FIELD of the EXT_CSD register in accordance with a SWITCH command provided by the host 200. Hence, the dedicated CSID buffer region may be allocated in accordance with certain region allocation information (RAI) stored in the flash memory 330 or in accordance with the VENDOR_SPECIFIC_FIELD field of an EXT_CSD register. In this regard, those skilled in the art will understand that various Joint Electron Devices Engineering Council (JEDEC) standards are available that characterize and/or define the structure, constitution and/or operating conditions of eMMCs. These standards may be readily obtained and consulted by recourse to http://www.jedec.org. For example, the embedded multimedia card (eMMC) electrical standard, version 4.51 published June 2012 (i.e., JESD84-B451) contains many terms and technical definitions that are useful to an understanding of certain embodiments of the inventive concept incorporating an eMMC.
The host 200 may then send the CSID flag (FLAG) indicating that the data being communicated is, in fact, CSID. The host 200 may also send a CSID size value (CSIDSize) defining the size of the CSID along with the CSID to be stored in the CSID buffer region of the flash memory 330 (S212).
Upon receiving the CSID flag, the CSID size value, and the CSID, the flash controller 310 will control operation of the flash memory 330 in such a manner that a “CSID write operation” is executed for the CSID in accordance with the received CSID size value in the dedicated CSID region. To execute the CSID write operation, the flash memory controller 310 may first determine whether a currently calculated, remaining CSID buffer region value (Remained_CSIDBufferSize) indicating the size of the remaining memory space in the CSID buffer region is greater than the received CSID size value (S214). If not (S214=NO) and the remaining memory space in the CSID buffer region is inadequate to store the CSID in an abnormal case, the incoming CSID must be stored in the second memory region (e.g., the normal data region 331C of
Of note, even though the dedicated CSID buffer region is too small to store the received CSID in an abnormal case, the host 200 may nonetheless communicate the CSID to the flash memory 300. That is, consistent with the working examples described in relation to
However, if the size of the remaining memory space in the CSID buffer region is adequate to store the CSID (S214=YES) in a normal case, the flash memory controller 310 will calculate a new remaining CSID buffer region value (Remained_CSIDBufferSize) by subtracting the CSID size value from the current CSID buffer region value (S216). Next, the flash memory may calculate a size value for a written portion of the CSID buffer region currently “in-use” (Written_CSIDBufferSize). As may be understood from the foregoing, a new value for the written portion of the CSID buffer region may be calculated by adding the size of value for the CSID to a current value for the written portion of the CSID buffer region (S218).
The flash memory 330 may now store the CSID in the dedicated CSID buffer region within the first memory region 331B under the control of the flash controller 310 (S220). Then, the host 200 may determine whether the CS operation is complete (S222). If not (S222=No), the method continues as described above until the CS operation is complete.
As described in the context of normal and abnormal cases, when the size of available space in the dedicated CSID buffer region is greater than the size of incoming CSID, the flash controller 310 will control the flash memory 330 in a manner such that the CSID is stored in the dedicated CSID buffer region in the first memory region 331B, else the flash controller 310 will control the flash memory 330 in a manner such that the CSID is stored somewhere other than the designated CSID buffer region, like the normal data region in the second region 331C of the flash memory 330.
In certain embodiments of the inventive concept where the storage device 300 is implemented using an eMMC, the CSID flag may be communicated using the conventionally understood command (CMD23), and CSID may be communicated using the conventionally understood command (CMD25), for example.
Referring to
For convenience of explanation, it is assumed that the respective blocks of CSID generated by the sequentially executed CS operations have the same size. Accordingly, the flash controller 310 initiailizes a migrated data unit (MU) size (MigratedDataSize) to ‘0’ upon receipt of the migration command (S312). The flash controller 310 then determines whether the currently allocated size of the dedicated CSID buffer region (CSIDBufferSize) agrees with the received RAI (S314).
When the size of the dedicated CSID buffer region is sufficient to ensure acceptable write performance during CS operations (S314=YES), that is, when the size of the remaining memory space for the dedicated CSID buffer region (Remained_CSIDBufferSize) following execution of a current CS operation is least equal to or greater than the size of memory space in the dedicated CSID buffer region that will remain following execution of a next CS operation (FCSIDBufferSize), then the memory space re-allocation operation for the dedicated CSID buffer region is complete (S318). That is, when the currently remaining size of available memory space in the dedicated CIS buffer region (Remained_CSIDBufferSize) following execution of a current CS operation is at least as great as the size of memory space needed to execute a next CS operation in a sequence of CS operations (FCSIDBufferSize), write performance may be maintained at acceptable levels and no further memory space re-allocation related to the sequence of CS operations need be made at this time.
However, when the size of the dedicated CSID buffer region (CSIDBufferSize) is insufficient to ensure acceptable write performance (S314=NO), that is, when (Remained_CSIDBufferSize) is less than (FCSIDBufferSize) with respect to current and next CS operations directed to the dedicated CSID buffer region and in view of current RAI, then as much as MU worth of the CSID currently stored in the dedicated CSID buffer region may be copied (or “migrated”) from the dedicated CSID buffer region to the second memory region 331C (e.g., a normal data region) so as to increase the size of the remaining available memory space in the dedicated CSID buffer region (i.e., increase Remained_CSIDBufferSize) (S320).
Once CSID migration from the dedicated CSID buffer region is complete (S322=YES), a cumulative size of migrated CSID (MigratedDataSize) is increased by as much as MU according to the actual quantity of CSID copied from the dedicated buffer region (S324).
Steps S314 to S324 in the foregoing re-allocation operation may be repeated until the resulting size of the remaining available memory space in the dedicated CSID buffer region is sufficient to secured acceptable write performance for ongoing CS operations in a sequence of CS operations. In contrast, if it is determined that the size of the remaining memory space in the dedicated CSID buffer region (Remained_CSIDBufferSize) is less than MU (S326), then the re-allocation operation directed to the dedicated CSID buffer region is deemed to fail (S328).
The method of
Thus, as described with reference to
Referring to
Then, the flash controller 310 may compare the size of the copied CSID with the size of a “free region” (i.e., available memory space) in the second memory region (S320-1). As a result of the comparison, when the size of the migrated CSID is greater than the size of the free region of the second memory region (S320-1=YES), then the CSID migration step (S320 of
However, if the size of the copied CSID is smaller than the size of the free region of the second memory region (S320-1=NO), then the flash controller 310 selects a “source block” (e.g., a SLC block) of the dedicated CSID buffer region storing CSID (S320-3), and further selects a “target block” (e.g., a MLC block) of the second memory region to which the copied CSID will be programmed (S320-4)
Assuming that flash controller 310 respectively selects, for example, SLC block 331C-1 and MLC block 331C-2, a size value for data (P_DataSize) programmed in the second memory region may be set to ‘0’ (S320-5).
The flash controller 310 may then compare the size of data (P_DataSize) programmed with the migration unit (MU) (S320-6). When the migration unit MU is greater than the size of data (P_DataSize) programmed, the flash memory 330 reads as much as a read unit (RU) from the source block (S320-9).
Thus, the flash memory 330 may store as much as a read unit's worth in the target block (S320-10). A migration operation, i.e., an operation of migrating or copying as much as the read unit RU from the source block to the target block, includes an internal migration operation using the page buffer 335 or an external migration operation using the RAM 313 included in the flash controller 310, e.g., a SRAM.
The flash controller 310 may increase the size of the data programmed (P_DataSize) by as much as the read unit, and then perform step S320-6 again.
As illustrated in
After the address remapping is finished (S320-7), a portion of the continuous shooting image data CSID, e.g., the migration unit MU, stored in the dedicated region CSIDBuffer of the first memory region 331B is migrated to the second memory region 331C.
Steps S320-1 to S320-8 are performed until all of the CSID stored in the dedicated CSID buffer region of the first memory region 331B has been copied to the second memory region 331C.
Certain methods and an apparatuses for processing continuous shooting image data according to embodiments of the inventive concepts may ensure acceptable write performance while writing high-resolution continuous shooting image data in a storage device regardless of the data storage capacity of a host-provided RAM used to buffer the CSID during continuous CS operations.
Although a few embodiments of the inventive concept have been shown and described, it will be appreciated by those skilled in the art that changes may be made in these embodiments without departing from the scope of the inventive concept as defined in the appended claims and their equivalents.
Number | Date | Country | Kind |
---|---|---|---|
10-2012-0102471 | Sep 2012 | KR | national |