`Rasbkovskiy et al.
`
`IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
`US006122744A
`patent Number:
`l)ate of Patent:
`
`6)122)744
`Sep. 19, 2000
`
`[i i]
`
`[45]
`
`[54] SELECTING A ROUTINE BASED ON
`PROCL'SSING POWER
`
`[75]
`
`Inventors: Oleg B. Rashkuvskiy, Cupertino;
`Ajaya V. Durg, Sunnyvalc, both of
`Calif.
`
`[73] Assigncc:
`
`Intel Curpuratiun, Santa Clara, Calif.
`
`[22[
`
`[21i Appl. Noz 09/082,140
`May 20, 1998
`Filed:
`Int. Cl.'.........................
`[51]
`[S2] U.S. CI..
`[SS] Field of Search
`
`............. G06F I/04
`. 713/300, 713/Sot
`713/3(K), 323,
`713/501
`
`[56[
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5.4!S,565
`:1,st 1,204
`5. 77S,413
`5,80),684
`S,S09.316
`
`5)1995 Smith ..............
`4/1996 ('rump ci al.
`7)1998 Sieveus ei al.
`9/1998 1.)skat)
`9)1998 Gouzu .............
`
`348/273
`7 13/31)0
`711,'5
`345/213
`... 713)323
`
`4,862,368
`),940,6))7
`
`I,'1999 Miller et al.
`8 199') Hwaos
`
`713)501
`713/51)1
`
`OTHER PUBLICATIONS
`I.ehoczky et al., "An Optimal Algoothm for Scheduling
`Soft—Apcriodic Tasks in Fixed—Priority Prccmptivc Sys-
`tems', IEEE, pp. 110—123, 1992.
`Davis ct al., "Scheduling Slack Time in Fixed Priority
`Pre —Emptive Systems", IEEE, pp. 222—231, 1993.
`Ripoll et al., "An Opumal Algonthm for Scheduling Soft
`'I'asks in lyynamic—Priority Preemptive Systems**,
`Aperiodic
`ILiL'L', vol. 23, No. /i, pp. 388~)0, .)un 1997
`/'rimory Examiner/ O)lena A Auve
`At)orner) Age))r, or Firm Trop, Pruner Sr Ilu, P(1
`ABSTRACT
`
`A method inclutlcs dctcrmining an operating frcqucncy of a
`processor. Based on thc operating frcqucncy, a routine is
`selected irom a group of at
`least two routines, aml
`the
`selected routine is executed. The rouune may also be
`selected based on an unused processing bandwidth that is
`available to the processor.
`
`29 Claims, 4 Draiving Sheets
`
`40
`
`Google Exhibit 1055
`Google v. VirtaMove
`
`
`
`U.S. Patent
`
`Sep. 19, 2lNO
`
`Sheet 1 of 4
`
`6,122,744
`
`Figure 2
`(PRIOR ART)
`
`
`
`U.S. Patent20'ep. 19,2lNO
`
`24',122,744
`
`Sheet 2 of 4
`
`26
`
`30
`
`32
`
`34
`
`40
`
`42
`
`44
`
`46
`
`Figure 4
`
`Figure 6
`
`
`
`U.S. Patent
`
`Sep. 19, 2lNO
`
`Sheet 3 of 4
`
`6,122,744
`
`31
`
`31
`
`37
`
`37
`
`57
`
`57
`
`Figure 5
`
`Figure 7
`
`Figure 8
`
`
`
`U.S. Patent
`
`Sep. 19, 2lNO
`
`Sheet 4 of 4
`
`6,122,744
`
`24
`
`20
`
`Figure 9
`
`
`
`6,122,744
`
`SELECTING A ROUTINE BASED ON
`PROCESSIIIIG POWER
`
`IIA('K('ROUNI)
`
`The invention relates to selecnng a rounne based on
`processing power.
`A computer may cxccutc a routine to perform a function.
`Although thc complexity of thc routine may improve an
`output of thc function, morc complex routines typically
`require more computanons and thus, more processing nme
`by the computer. The processing nme required to process the
`routine may also be a functinn of the available processing
`po&ver of the computer
`For cxampkb rcfcrring to FIG. 1, a typical digital camera is
`12 uses a rectangular array ol. pixel sensa&s 5 to eleclncally
`capture an optical image 11. To accomplish th&s, a shutter
`(not shown) of the camera 12 momentarily exposes the
`image 11 to the sensors 5 for a prerletermined exposure t&me
`After the exposure, each sensor 5 indicates an intens&ty of zc
`light from a porhon of thc image 11.
`The camera 12 typically processes these md&ca&tons to
`form a frame of data (which digitally represents the captured
`image) and transfers the frame nf data (via a bus 15, for
`example) to a computer 14 for prncessing. I'or video, the
`camera 12 may capture scvcral optical images and furnish
`scvcral frames of data, each of which indicates onc of the
`captured images. Thc computer 14 may then usc thc frames
`to recreate captured video on a display 5 or a printer 7.
`L'ach pixel may be represented by several (three, for
`example) bytes which md&cate the color components of the
`if thc color of each pixel
`pixel. For cxamplc,
`is bein
`reprcscnted in a rcd grccn blue (RGB) color space, then each
`pixel may be represented by three bytes. one byte repre-
`senung the red component, one byte representing the green
`component and one byte representing, the blue component
`Rcfcrring to FIG 2, thc computer 14 may process the
`stream of data to cnhancc, analyze and rcstorc the images
`captured by thc camera 12. For example, thc camera 12 may
`prov&&le a stream of data that represents an image 17 (only
`part of the image shown in FIG. 2) havmg a resolution of
`320 columns by 240 rows I lowever, the computer 14 might
`desire an image 19 (only part of the image shown in I l(l 2)
`a resolution of 040x480 and thus, may rcquirc a
`bavin
`tcchniquc callctl upsampling, or interpolation, to obtain the
`color components for thc atltlitional, or "missing" pixels
`For example, to obtain lhe color components for pixels of
`the higher resolution image 19, the computer 14 may per-
`form a I:2 direct mapping. In this manner, Ihe computer 14
`mav use the color components nf some pixels (pixels 9, for
`example) of the lower resolutinn image 17 to obtain color
`components for pixels (pixels 22a and 22c, for example) of
`the higher resolution image 19. As a result of this direct
`mapping, some of lhe pixeis (pixels 22a aml 22c, as
`examples) of lhe higher resolution image 19 might have the
`same color components as correspondm ~ pixels (pixels 9, as
`examples) of the lower resolutinn image 17
`However, the higher resolution image 19 has approx&-
`mately twice as many pixels as the lower resolution image „c
`17. As a result, thc I 2 mapping by thc computer 14 docs not
`furnish thc color components for all pixels of thc image 19.
`To lill in the color components for Ihe remaining pixels, the
`computer 14 might use a color inlerpolanon technique.
`As an example, Ihe computer may interpolate Ihe color as
`components for the pixel 22b by using the color components
`of pixels 22a and 22c that are adjacent to, or are "neighbors**
`
`ss
`
`to, Ihe pixel 22b. In this manner, Ihe computer 14 may
`average the color components of neighboring, pixels 22a and
`22c to obtain color components for the pixel 22b.
`Generally, thc accuracy of thc interpolation is a function
`of the number of. neighboring pixels used and the type of
`interpolation algorithm. For example, in general, an inter-
`polation algonthm that uses two neighboring pixels may not
`be as accurate as an interpolation algorithm that uses eight
`neighboring pixels Also, more accuracy may be achieved if,
`for example, distances to thc neighboring pixels (for thc
`pixel whose color components arc being intcrpolatcd) arc
`taken into account in the interpolanon aml if, lor example,
`a nonlinear weighting technique (a spline-based interpola-
`tion algonlhm, for example) is used.
`Althou h thc complexity of thc interpolation algorithm
`may in&prove thc quality of thc image 19, in general, morc
`computations arc required for a morc complex algorithm
`which, in turn, may require more computer processing nme.
`The processing time may also be a funcnon of lhe available
`prncessing power of the computer 14 I'or example, a type
`of processor heing used by the computer 14, the operating
`frequency of the computer 14, and/or a ban&I&vidth nf the
`computer 14 that is availablc for interpolation processing
`may all aifcct the available processing power of the com-
`puter 14.
`Providers of software for the computer 14 typically select
`routines (a routine that uses an interpolatinn algorithm, for
`cxamplc) to accommodate a &vide range of processing pow-
`ers and thus, a &vide range of computers. Howcvcr, by trying
`lhe quality of data
`to accommodate such a wide ran e,
`protluced by the routme may not be opnmized for the
`available processm ~ power of the computer.
`thcrc is a contmuing nccd for a system which
`Thus,
`cflicicntly accommodates computers of varying processing
`powers.
`
`SUMMARy
`In one embodiment, a method includes determining an
`operating frcqucncy of a processor Based on this
`tlctcrmination, a routine is selcctcd from a group of at least
`two routines, and the selected rounne is executed.
`In another embothment, an arncle includes a processor
`includes inslrucnons. The
`readable storage medium that
`instructions cause a processor to determine a processing
`bandwidth heing used by the processor anil determine an
`unused proccssin bandwidth availablc for additional pro-
`cessing. Based on thc unused processing bandwidth,
`thc
`instructions caused thc processor to acket a routine from a
`group ol al least two routines. The instrucnons further cause
`the processor to execute the selected routine.
`
`BRIEF DESCRIPTION OF THE DRAWING
`I IG I is a block diagram of a d&gital imaging system of
`the prior art.
`FIG. 2 is an illustration of a mapping function that maps
`color components of a low resolution image to color com-
`ponents of a higher resolution image.
`FIG. 3 is a block diagram of a digital imaging system
`according to an embodiment of the invennon.
`I IGS. 4 and (& are floiv diagrams of selection routines to
`select various soft&vere routines
`I I GS. 5, 7 and 5 are illustrations of look-up tables used by
`the selection routines.
`I IG 9 is a block diagram of a computer nf the imaging
`system of lil(3. 3
`
`
`
`6,122,
`
`744
`
`&0
`
`3
`DETAILED DESCRIPTION
`Rcfcrring to FIG. 3, an cmbodimcnt 20 of a video ima in
`system in accordance with onc cmbodimcnt of thc invention
`includes a computer 24 and a camera 22. Through lhe use of
`the computer 24 may perform di nial
`sot&ware rouunes,
`imaging functions which may include scaling, enhancing
`and or restoring image data that is funiished by the camera
`22. To optimize both thc time to perform any onc of these
`functions and thc quality of thc data produced by thc
`thc computer 24 may first cxcculc a selection 10
`function,
`program Z6 before performing Ihe funcuon. The selecuon
`program 26 may cause the computer 24 lo evaluate Ihe
`available processing power of the cnmputer 24, and based on
`this evaluation, select an executable software routme 27
`(from a group of routines 27) which is then cxccutcd by the &5
`computer 24 to perform thc function.
`Although any onc of thc routines 27 may bc cxccuted to
`perform lhe tuncuon, the different rounnes 27 may vary in
`complexity and may produce dill'erenl qualnies of: data. For
`example, some of: the routines 27 may produce data that,
`when used to render an image on a rlisplay, produces a more
`visually appealing image than the data produced by some of
`the other routines 27. As another cxamplc, some of the
`routines 27 may bc morc complex and thus, rcquirc more .
`calculations by the computer 24 than some of the other
`rouunes 27. However, the rounnes 27 that require more
`calculations may produce higher qualiiy outputs. As an
`example, for the case of digital image prncessing, a routine
`27 that requires more calculations may cause the computer
`24 to produce an image that is morc visually appealing.
`To cnsurc exccssivc processing time is not consumed by
`thc computer 24,
`thc sclcction program 26,
`in some
`embodiments, selects lhe routine 27 thai produces the high-
`esl qualify output for an allouetl, predetermined processin ~
`time 'I'he predetermined prncessing, time might be selected
`based on the type (interpolatinn or scaling functions, as
`examples) of the particular function and may be a user
`configurablc option.
`As a result of this selection technique, computers having do
`morc processing power may cxccutc morc complicatcil
`routines 27, anil computers having less processing power
`may cxccutc less complicated routines 27. For cxamplc, the
`function may relate to upsampling or converting a low
`resoluuon image to a higher resolution image. If the com-
`puter 24 has a relatively small available processing power,
`the selection routine 26 may cause the computer 24 to select
`a routine 27 that uses a linear interpnlation algorithm to
`perform thc scaling Although linear interpolation algo-
`rithms arc gcncrally faster, thc linear al orithms may pro- so
`duce lower quahty data Conversely, il the computer 24 has
`a relauvely large available processing power, the selection
`routine 26 may cause the computer 24 to select a routine 27
`that uses a more complicated interpnlation algorithm (an
`algorithm that uses a sync biter function, for example) hut
`furnishes a higher quality output.
`The advantages of selecting a routine based on available
`processing power may include onc or morc of thc following.
`Processing time may bc optimized. Data quality may bc
`optimized. Routines for future processors may bc installcil oc
`on the computer. For digital image processing, the cost of the
`digital camera is minimized, as processing functions may be
`performed by the computer
`the selecuon rouune 26 may
`In some embodiments,
`evaluate the avadable processing power of. Ihe computer 24 os
`based on a number of different factors As example, a type
`of microprocessor 80 (a Pentium microprocessor, a Pen-
`
`&0
`
`uum II microprocessor or a Pen&turn&Et microprocessor
`with MMX technology, as examples) that the computer 24
`uses to execute instructions of the routine 27, the operating
`frequency of the microprocessor 80, and the available band-
`width of thc microprocessor 80 (for cxccuting the routine
`27) may be used to dcterminc thc availablc processing
`power of lhe computer Z4
`Thc availabkb or unuscil processing bandwidth of thc
`computer 24 gcncrally rcfcrs to thc banilwidth of thc com-
`puter 24 that is nol being currently used by other executing
`prt&grams.
`Retermng lo FIG. 4, in some embodiments, the selection
`routine 26 mav (upon execuuon by lhe microprocessor 80,
`fir example) cause the computer 24 to determine (block 30)
`the type of the microprocessor 80 and determine (block 32)
`the nperating frequency of the microprocessor 80 The
`computer 24 may dcterminc thc type of thc processor by, for
`cxamplc, executing a CPU identificatio utility application
`prt&gram, such as a utility application program called CPUI-
`D EXE available from Intel*a websiie ai
`"htlp.,'eveloper.intel.corn/design'pertloot)cpuid,'index.him." The
`computer 24 may determine the operating frequency of the
`prncessor 19 by, for example, executing the following C
`code to call a function of a basic input 'output system (BIOS)
`of thc computer 24:
`
`uns gned lon cptmotmspeed (nt
`
`locksi
`
`speed
`
`st&eel FREQ IVFO cpu
`HKEY hKey;
`LPBYTE PtocSpccd.
`DWORD bugcn, tcu
`tf ('RcgopcnKcyEx (HKEY I.OCAL HACHIVE. "HARDWARE't
`DESCRIPTIOI X System)',Centra)P&o esto&L0" 0, KEY READ
`a hK yfi
`
`Pt
`
`sp d =(),
`
`tet=Re Que yValueEx (hKey. — HHzx HULL. Kt:LL
`(LPBYTE) RF&o Speed, Rbunen).
`t (tet '= ERROR SUCCESS)
`tet=ReqQue yValueEx (hKey. — Hhzx HULL Vi&LL
`(LPBYTE) RP&ocSpccd, Rbuficn),
`tt (tct '= ERRORSUCCESS)
`tct=Rcq&VnctyValucEx (hKc) "-mhzb VI)LL, Kt!LL.
`(LPBYTE) RP&ocSpccd, Rbuficn),
`il gi'los K ) IhK y),
`t == I RROR sl'('I'I SS)
`il'
`
`t
`
`pu speed = cpuspeed( I cks)
`speed norm fteq.
`return Hatt
`
`Based on the type of microprocessor 80 and the operating
`frequency, the routine 26 may then cause the computer 24 to
`sclcct (block 34) onc of thc routines 27 to perform thc
`ilcsircd function.
`Retermng lo FIG. 5, in some embodiments, the selection
`of lhe routines 27 may be aided by a look-up table 28. The
`look-up table Zg may include rouune idenuliers 37 that point
`to difFerent routines 27 In this manner, the computer 24
`selects one of the identifiers 37 based on, for example, the
`type of the microprocessor 80 and thc operating frequency
`of thc microprocessor 80. Morc than onc of thc idcntificrs 37
`may identify Ihe same routine 27.
`In some embodiments, the selecuon rounne 26 may use
`more than one loot-up table. For example, referring to
`I'IGS. 7 and 8,
`the selection routine 26 may cause the
`computer 24 to use two look-up tables 43 and 45 'I'he table
`
`
`
`6,122,744
`
`43 mcludes pointers 35 that point to columns of the table 45.
`In this manner, lhe computer 24 selects the porn&era 35 based
`on, for cxamplc, thc type of thc microprocessor 80 and the
`operating frcqucncy of thc microprocessor 80. As an
`example, for an operating frequency I a and a processor type
`Pc, the computer selects the identifier 35 called Pl'R2.
`in &urn, points lo one of Ihe
`The selected pointer 35,
`columns of the table 45 which includes ilifi'erent rouune
`identificrs 57 which point
`to dift'eront routines 27. The
`computer 24 sclccts an entry of Ihc sclcctcd column bascll on
`0„,) of the computer 24
`the available bandwidth (0„ IL .
`In this manner, to use the tables 43 and 45, the selection
`rouune 26 causes Ihe computer 24 to determine (block 4U
`(see FIG. 6)) the type of microprocessor 8U (used to execute
`frc-
`the routine 27), dctcrminc (block 42) thc opcratin
`
`&0
`
`I'he available process-
`ing bandividth is the unused bandwidth that is available to
`the processor for execuung additional instructions. Base&1 on
`the type of operaung frequency,
`the selecuon routine 26
`causes thc computer 24 to sclcct thc appropriate pointer 35 zn
`from lhe table 43 (block 46) and using the pointer and the
`bamlwitlth, select the appropriale rouune 27 from the table
`45
`
`qucncy of thc microprocessor 80 and dctcmiinc (blocl'4)'-'heavailable processing banrlwidth.
`
`There are a number of difi'erent ways to determine the
`available bandwidth of the computer 24 I'or example, for a
`WindowsCa& operating system, thc sclcction program 26 may
`cause thc computer 24 to base a determination of the
`available processing bandwidth on the number of processes
`that are created and the prionly of these processes. The
`selection program 26 might also consider the priority of
`threads that are being used in these processes. 11&e select&on
`the type of application
`program 26 may also cons&tier
`programs that arc currently tieing cxccutcd by Ihc computer
`24 and the application program that is currently cxccuting as
`a foregrouml process. The delerminauon may also use, for ZS
`example, a W&ndows applicauon program called SYS-
`MON.EXE which accesses the Performance Registry of
`Windo&vsa and allows mnnitoring, of system performance
`and resources
`Thc determination of availablc processing bandwillth may an
`also be based on harllwarc observations. For example,
`referring to FIG. 9, in the computer 24, logic 122 w&upled to
`a local bus 82 may incremenl a counter 120 whenever the
`bus 82 rs active In this manner, the selection program 26
`may cause the microprocessnr 80 to periodically read a
`value (a count, for example) frnm the counter 120 and based
`on this value, dctcrminc thc available processing bandwillth.
`Thc computer 24 might also include a system memory 88
`the selecuon
`which might store, for example, a copy of.
`the tables 29, 43 and&or 45.
`rounne 26 amf
`In some
`embodiments, the microprocessor 80 executes the selecuon
`routine 26 to determine a type of the microprocessor 80; to
`determine an operating frequency nf the microprocessor 80,
`and based on the type and operating frcqucncy, to select one
`of thc routines 27. Thc microprocessor 80 might also base
`the srdection on an available processm ~ bandwrdth of the
`microprocessor 8U. Atter the selection of the rouune 27, the
`microprocessor 811 may then execute lhe selected routine.
`The memory 88, the microprocessnr 80 and the bridge/
`system controller mrcuitry 84 are all coupled to the local bus
`82. Thc circuitry 84 also interfaces thc host bus 82 to a
`downstream bus 99 which is coupled to an I/O controller 90
`and a network interface card 92, as examples. The computer
`24 may also have, as examples, a CD-ROM drive IUII, a
`fioppy disk dnve 94 and,'or a hard disk ilnve 96.
`In other embodiments, the computer system may mclude
`multiple microprocessors, and some of these microproces-
`
`n
`
`s
`
`ss
`
`aors might perform the above-staLed funcuons that are
`pcrformcd by thc microprocessor 80.
`While thc invention has been disclosed with rcspccl to a
`1&miled number of. embodiments, those skilled in the art w&11
`appreciate numerous modifications anil variations there-
`from. Il is intended thai the appended claims cover all such
`moifificalions and variauons as fall within the true spirit and
`scnpe of the invention.
`What is claimed.
`l. An article comprrs&ng a processor readable siorage
`medium storing instructions to cause a processor to
`dcterminc an operating frcqucncy of thc processor;
`select a routine from a group of. al least Iwo routines, Ihe
`selected routine being adapted lo subslannally opumize
`execution of the selected routine at
`the determined
`frequency relative to the remaining said at least two
`routines; and
`execute Ihe, selecletl rounne.
`2 The article of claim 1, wherein the medium further
`stores instructions lo cause the computer to call a BIOS
`function to determine the operating frequency
`3 'I'he article of claim I, ivherein the medium further
`stores instructions to dctcrminc a type of thc processor and
`further base thc sclcction of thc routine on thc type.
`4 The article of claim 3, wherein the medium further
`stores inslrucuons lo cause the computer lo use lhe type of
`processor and the operating frequency to retneve an iden-
`tifier that identifies the selected routine
`5 The article of claim I, wherem the routines comprise
`lhgital imaging routines.
`6 Thc article of claim 5, whcrcin thc digital imaging
`routines comprise an interpolation routine.
`7 An article comprrs&ng a processor readable siorage
`me&hum compritnng instructions lo cause a processor lo:
`determine a processing banrlw&dth being, used by the
`processor;
`determine an unused processin ~ bandwidth available for
`additional processing by Ihe processor,
`based on the unused processing bandwirlth, sclcct a rou-
`tine from a group of at least two routines; and
`execute Ihe, selecletl rounne.
`8 The article of claim 7, wherein the medium further
`stnres instructions to cause the processor to rleterm inc a type
`of the processor, and based on the type and the unused
`proccssin banllvvidth, sclcct thc routine from thc grnup.
`9 Thc article of claim 8, whcrcin thc instructions Io cause
`the processor to determine the type include an assembly
`language instruction.
`10. The article of claim 7, wherein lhe medium further
`stnres instructions to cause the processnr to determine an
`operating frequency of the processor, anil based on the
`opcratin frequency and the unuse&1 processing bandwidth,
`sclcct thc routine from thc group.
`11. The arncle of claim 10, wherein the inslrucnons to
`cause the processor lo determine the operating Irequency
`inclutfes a BIOS funcnon calL
`I'he article of claim 7, wherem the storage medium
`12.
`further stores instructions to cause the prncessor to use a
`type of the processor an operating frcqucncy of thc proces-
`to rctricvc an idcntificr that
`idcntifics the sclcctcd
`sor
`rou line.
`13. The arncle of claim 7, wherein Ihe rouunes compr&se
`ihgital imaging routines.
`14. 'I'he article of claim 13, wherein the rnutines comprise
`an interpolation routine
`
`
`
`6,122,744
`
`15. A method for use with a processor, composing.
`determining an unused prncessing bamlwidth available
`for additional processing liy lhc processor;
`baserl on the unused processing bamlwidth, selectrng a
`routine from a group ol. al leasl two routines, and
`executing the selected routine.
`16. Thc method of claim 15, further comprising:
`determining an operanng frequency of the processor, aml
`further basing the selection nn the nperating frequency
`17. 'I'he method of claim 15, further comprising:
`determining a type of the processor, aml
`further basing the selection nn the type of processor
`lg. 'I'he method of claim 15, further comprising:
`calling an AVI function to determine thc unused process-
`ing bandwidth
`19. The method of claim 15, further comprising:
`determining an operating frequency of the processor,
`determining a type of thc processor; anil
`further basing the selection on ihe operating frequency
`and the type of processor
`20. An article comprising a processor readable storage
`medium storing instructions to cause a processor to:
`determine a processing bandwidth bemg used by the
`processor;
`determine an unused processing bandwidth available for
`additional processing by the processor;
`select a routine from a group of al least lwo routines, the
`selecteil routine being adapted lo substantially opnmixe
`execution of the selected routine using at least a portion
`of the determined unused prncessing bandwidth rela-
`tive to thc remaining said al least two routines; and
`execute the selected rounne
`21. The article of claim 2U, wherein lhe medium further
`stores instructions to cause the processor lo delermme a lype
`of the processor, and based on the type and the unused
`processin bandwidth, select the routine from the group
`
`22. The article of claim 2U, wherein the medium further
`stnres instructions to cause the processnr to determine an
`operating frequency of the processor, anil based on the
`operating frequency and the unused prncessing bandwidth,
`sclcct thc routine from thc group.
`23. The article of claim 20, whcrcin thc storage medium
`further stores inslrucnons lo cause the processor lo use a
`type of the processor and an operating Irequency of the
`prncessor to retrieve an identifier that irlentifies the selected
`routine.
`24. 'I'he article of claim 20, wherein the rnutines comprise
`rhgital imaging routines.
`25. Thc article of claim 20, whcrcin thc routines comprise
`an interpolation routine.
`26. A method for use with a processor, comprising:
`determining an unused processing bandwidth available
`for additional processing by thc processor;
`seleclitlg ii roulitle from a group of at leasl two roulitles,
`the selected routine being adapted io substantially
`optimire execution of the selected routine using at least
`a portion of the determined unused processing band-
`width relative to the remaining said at least two rou-
`tines; and
`executing lhe selecteil rounne.
`27. The method of claim 26, further comprising.
`determining an operating frcqucncy of thc processor; and
`further bamng the selection on lhe operating Irequency.
`25. The method of claim 26, further comprising.
`determining a type of the processor, anil
`further basin the sclcction on thc type of processor.
`29. The method of claim 26, further comprising.
`determining an operating frequency of the processor;
`determining a type of thc processor; and
`further basing the selection on the operating Irequency
`anil the type of processor.
`
`is
`
`30
`
`33
`
`