Method and apparatus for swapping state data with scan cells

Error detection/correction and fault detection/recovery – Pulse or data error handling – Digital logic testing

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C714S030000, C714S727000, C326S047000, C716S030000, C716S030000, C716S030000

Reexamination Certificate

active

06691268

ABSTRACT:

FIELD OF THE INVENTION
This invention relates to managing state data, and more particularly, to a method and apparatus which uses an enhanced scan cell to swap state data in an electronic or other computational system, primarily for multi-tasking purposes.
BACKGROUND OF THE INVENTION
In an electronic system, or other computational system, it is sometimes advantageous for cost, size, or other reasons to simultaneously process multiple tasks. As used herein, the term “task” refers to the collection of operations, or pieces, necessary to complete a particular process (e.g., decoding an incoming facsimile image). The terms “electronic system” or “computational system” or “system,” as used herein, covers a wide variety of devices that are recognized by those skilled in the art including, but not limited to, integrated circuit (ICs), hybrids, and multi-chip modules (MCMs). The term also includes printed circuit boards (PCBs), subsystems, and combinations of PCBs and/or subsystems.
The appearance of executing more than one task at the same time in a single system is known as “multi-tasking.” Multi-tasking is accomplished by dividing two or more tasks into smaller, manageable pieces, and then, interspersing the processing of the pieces. By quickly switching from the pieces of one task (e.g., when it is made inactive or suspended) to the pieces of another task (e.g., when it is made active, initiated, or resumed), an appearance of simultaneous task execution is created.
The ultimate goal of multi-tasking is to fully utilize the capabilities of a system by preventing long periods of idle time where no useful processing is occurring due to a lack of data, and/or commands, or user input. An additional reason for multi-tasking is the fact that a minimal hardware implementation of an algorithm may provide far more processing bandwidth than a single task requires. Without multi-tasking, this bandwidth is wasted and the hardware is under-utilized. For example, without multi-tasking, a system that requires the appearance of simultaneously executing two tasks would require two processors, even though a single processor could be built to have enough bandwidth to process both tasks in the necessary time. In some cases, the processor needed would be the minimal implementation and require no modification and in other cases, the processor would require some speed improvements but would still be substantially smaller and cheaper than having two smaller processors.
For maximum efficiency, a system must have the ability to switch tasks at any time; this is known as a “preemptive multi-tasking.” For example, consider an image processing device (IPD) working on a first task, such as decoding an incoming facsimile image. In an ideal system, the IPD decodes the incoming image until an information transfer is required—i.e., once the IPD decodes all of the information that is currently available for that incoming image. Then, right-away, the IPD switches to working on a second task, perhaps processing a scanned-in image, while the information transfer takes place. After receiving more information for the first task, the IPD then immediately switches back to working on the first task where it left off. The IPD continues to switch between the two tasks whenever an information transfer is required until both tasks are completed. Thus, a preemptive, or unrestrained, multi-tasking system makes better use of its processing devices by immediately switching between tasks according to the availability of information.
Often, however, task switching requires the storage of the context (i.e., the state data) of a system, or of a functional block therein (e.g., a partition of logic internal to an IC), at the end of processing a piece of one task; and the retrieval of context information at the beginning of processing a piece of a resumed task. This introduces a bottleneck for multi-tasking systems because of the time and overhead required to manage state information (i.e., saving/restoring state data) for the individual pieces of multiple tasks. Furthermore, this problem is exasperated in complex systems that have unexposed functional blocks, such as logic buried in an IC, because of the limited access to the internal state data therein. For example, the PM-22 IC from Pixel Magic, Inc., contains an input pipeline, a JBIG pre-processing pipeline, and a JBIG decoder pipeline, wherein the first two pipelines affect the state data for the JBIG decoder pipeline. Although some of the state date in these pipelines can be read when saving the state of a piece of a task, much of the internal logic for the JBIG decoder pipeline is not exposed (e.g., it is buried within the IC), and thus, during multi-tasking the state data therein is not directly accessible.
A prior art solution for restoring the appropriate state data for a resumed task is to replay the previously saved input data to the JBIG decoder pipeline (i.e., the unexposed functional block), and then, wait for the decoder to regenerate the missing state data. Adding to the difficulty of this procedure is the fact that, when resuming a task, the state data in the input and pre-processing pipelines usually is not the input byte sequence needed to regenerate the state data in the JBIG decoder pipeline. Thus, to regenerate the correct state data to resume a task, all of the pipelines need to first be primed, which requires numerous, time-consuming calculations.
To coordinate these complex calculations, one prior art solution restrains task switching to specific “boundaries,” and thus, does not allow preemptive multi-tasking. For example, an application employing the PM-22 IC to process images, programs the IC to stop processing an image at the end of a predetermined line, or a “line boundary,” as if it was the end of the image. Next, the application prompts the IC to save the accessible state data, and then, to switch to a different image for processing.
In operation, the IC processes a first piece of a first task, such as decoding a first image up until a particular line boundary for the first image. Then, the IC saves the resulting, accessible state data at the end of the first piece of the first task. Next, the IC begins to process a first piece of a second task, such as decoding a second image up until a predetermined line boundary for the second image. Again, the IC saves the resulting, accessible state data at the end of the first piece of the second task.
To switch back to the first task and resume decoding the first image, the application must prompt the IC to restart its decoder at the line boundary where it stopped decoding the first image. In order to do this, however, the application must first restore the previously saved state data—i.e., the accessible state data that resulted after the first piece of the first task was processed—to the IC's decoder. Then, the application must wait for the decoder to regenerate the appropriate state data by processing the previously saved state data that was accessible at the time the first task was suspended.
Requiring task switching to occur on line boundaries is annoying from a multitasking standpoint because it does not allow the application to task switch in reaction to an event. Moreover, requiring tasks to switch on specific boundaries does not fully utilize the capabilities of a system. Furthermore, system memory is reduced and/or additional hardware (e.g., registers), system control, and CPU intervention (e.g., from a coupled host) is required for storing/restoring state data for the pieces of the multiple tasks. Thus, it is highly desirable to expose more of. a system's functional blocks, or modules, so that state data can be managed more efficiently during multi-tasking.
During the manufacturing process of a system, the exposure and accessibility of state data is also of interest for testing and debugging. This is especially true with regard to today's complex ICs, many of which have multi-tasking capabilities. Often, the clues to system problems are found in the states of functional blocks within an IC

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method and apparatus for swapping state data with scan cells does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method and apparatus for swapping state data with scan cells, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for swapping state data with scan cells will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3352318

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.