throbber
Proceedings
`
`Fifth International Syniposiurn on
`Wearable Computers
`
`8-9 October 2001
`
`Zurich, Switzerland
`
`Sponsored by
`
`IEEE-Computer Society
`
`IEEE~
`
`COMPUTER
`SOCIETY
`♦
`
`Los Alamitos, Calif omia
`Brussels = Tokyo
`Washington
`
`GOOGLE EXHIBIT 1041
`GOOGLE v. NEONODE
`IPR2021-01041
`
`Page 1 of 10
`
`

`

`Copyright © 2001 by The Institute of Electrical and Electronics Engineers, Inc.
`All rights reserved
`
`Copyright and Reprint Permissions: Abstracting is permitted with credit to the source. Libraries may
`photocopy beyond the limits of US copyright law, for private use of patrons, those articles in this volume
`that carry a code at the bottom of the first page, provided that the per-copy fee indicated in the code is paid
`through the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923.
`
`Other copying, reprint, or republication requests should be addressed to: IEEE Copyrights Manager, IEEE
`Service Center, 445 Hoes Lane, P.O. Box 133, Piscataway, NJ 08855-1331.
`
`The papers in this book comprise the proceedings of the meeting mentioned on the cover and title page.
`They reflect the authors' opinions and, in the interests of timely dissemination, are published as presented
`and without change. Their inclusion in this publication does not necessarily constitute endorsement by the
`editors, the IEEE Computer Society, or the Institute of Electrical and Electronics Engineers, Inc.
`
`IEEE Computer Society Order Number PRO l 318
`ISBN 0-7695-1318-2
`ISBN 0-7695-1319-0 (case)
`ISBN 0-7695-1320-4 (microfiche)
`ISSN 1530-0811
`
`Additional copies may be ordered from:
`
`IEEE Computer Society
`Customer Service Center
`10662 Los Vaqueros Circle
`P.O. Box 3014
`Los Alamitos, CA 90720-1314
`Tel: + 1714821 8380
`Fax: + I 714 821 4641
`http ://computer.org/
`csbooks@computer.org
`
`IEEE Service Center
`445 Hoes Lane
`P.O. Box 1331
`Piscataway, NJ 08855-1331
`Tel: + I 732 981 0060
`Fax: + I 732 981 9667
`http://shop.ieee.org/store/
`customer-service@ieee.org
`
`IEEE Computer Society
`Asia/Pacific Office
`Watanabe Bldg., 1-4-2
`Minami-Aoyama
`Minato-ku, Tokyo 107-0062
`JAPAN
`Tel: + 81 3 3408 3118
`Fax: + 81 3 3108 3553
`tokyo.ofc@computer.org
`
`Editorial production by Danielle C. Young
`
`Cover art production by Joe Daigle/Studio Productions
`
`Printed in the United States of America by The Printing House
`
`~~ -~_rie ra~ Library System
`t ,rnvers ,ty of Wisconsin - Madison
`728 State Street
`Madison, WI 53706-1494
`U.S.A.
`
`IEEE~
`COMPUTER
`SOCIETY
`♦
`
`GOOGLE EXHIBIT 1041
`GOOGLE v. NEONODE
`IPR2021-01041
`
`Page 2 of 10
`
`

`

`This material may be protected by Copyright law {Title 17 U.S. Code)
`
`Energy trade-offs in the IBM Wristwatch computer
`
`\
`
`Noboru Kamijoh, Tadanobu Inoue) C. Michael Olsen+, M. T. Raghunath+, Chandra Narayanaswami+
`{kamijo,inouet}@jp.ibm.com, {cmolsen,mtr,chandrasj@us.ibm.com
`IBM Research Division, Tokyo, Japan
`<+> IBM Research Division, Yorktown Heights, NY, USA
`
`Abstract
`
`We recently demonstrated a high function wrist watch
`computer prototype that runs the Linux operating system
`and also Xii graphics libraries. in this paper we describe
`the unique energy related challenges and tradeoffs we
`encountered while building this watch. We show that the
`usage duty factor for the device heavily dictates which of
`the powers, active power or sleep power, needs to be
`minimized more aggressively in order to achieve the
`longest perceived battery life. We also describe the energy
`issues that percolate through several layers of software all
`the way from de vice usage scenarios, applications, user
`interfaces, system level software to de vice drivers. All of
`these need to be systematically addressed to achieve the
`battery life dictated by the hardware components and the
`capacity of the battery in the de vice.
`
`1 Introduction
`
`We built the high function IBM wrist watch computer
`prototype to study several areas of mobile computing such
`as user interfaces [I] , high resolution displays [2] , system
`software, wireless
`communication,
`security,
`and
`interaction patterns between various pervasive devices. We
`view this watch as a wearable computing platform rather
`than a special purpose device. Therefore our goals differ
`quite significantly from those posed to the designer of a
`traditional wrist watch with just time keeping functions.
`We chose a watch form factor (Figure 1) because
`watches are easily accessible and get misplaced less often
`than PDAs and ceir phones since they are worn, not
`carried. It is also commonly believed that many people
`glance at their watches up to forty times a day and this we
`think is a good reason to put some additional useful
`information, such as upcoming appointments on the watch
`face. The watch is also an ideal device for conveying
`information alerts to the user, since it is instantly viewable.
`takes many of the
`The watch form
`factor also
`packaging, user interface, and power problems to the
`exfreme which appealed to several of us.
`
`1530-0811/01 /$10.00 © 2001 IEEE
`
`133
`
`Figure 1. Wrist watch prototypes
`
`Our watch has a touch sensitive screen and a roller
`wheel for user interaction. The main card has an ARM 7
`based Cirrus EP 7211 processor, 8MB of Flash memory
`and 8MB of DRAM, and serial, IrDA, and expansion
`interfaces. We have two monochrome displays, a 96xl20
`reflective LCD and a 640x480 Organic LED (OLED)
`display [2] . Bluetooth™ functionality is provided by an
`auxiliary card that connects to the main card in some
`watches. The watch is powered by a rechargeable Lithium
`polymer batter with 60mAh capacity at a nominal voltage
`of 3.7V. Figure 2 shows the hardware block diagram.
`We chose the Linux operating system for our watch
`because of the availability of source code and a wide
`variety of software tools, and programmer familiarity .
`Third party software developers are less likely to be
`interested in learning new APis unless the platform is
`already widely deployed. For the same reason we chose
`the XI 1 graphics library instead of defining a new library.
`People are often impressed by the amount of function
`we have managed to fit
`into such a small package.
`However, a question that often gets asked is how long the
`batteries last. Obviously the battery life on a watch like
`ours will not compare favorably with conventional watches
`that have limited functionality. Notwithstanding, battery
`life is an important aspect that we paid attention to, and is
`at the heart of many trade-offs in the design of the entire
`system [3] . In the rest of this paper, we discuss the
`trade-offs we made and the motivations behind these
`
`GOOGLE EXHIBIT 1041
`GOOGLE v. NEONODE
`IPR2021-01041
`
`Page 3 of 10
`
`

`

`trade-offs.
`
`LI-Polymer
`BattMy
`
`Buzzer
`
`Figure 2. Hardware block diagram
`
`1.1 The Energy Challenge
`
`The holy grail, energy wise, in the design of mobile
`devices is to enable them to be self sustaining [4].
`Calculators powered by solar cells and self-winding
`mechanical watches are examples of devices that have
`attained this goal.
`Though the energy challenge is often interpreted as
`making the device run as long as possible and be as energy
`efficient as possible, a more pragmatic viewpoint is
`whether battery
`life can exceed some acceptance
`thresholds. Under normal usage patterns, cell
`phone
`batteries last about a week which appears to be an
`acceptable threshold. An analogy can be drawn from
`automobiles. Both car buyers and manufacturers do not
`agonize excessively and solely over gas mileage and pay
`attention to form and function because most people don't
`need to refuel on each trip, and when they do, it is fairly
`easy to refuel. The device is likely to get used if it
`provides services to the user that outweigh the difficulty
`for caring for it. So we have the dual challenge of
`providing useful function while minimizing the effort of
`caring for it.
`Devices that are unable to attain the goal of self
`sustenance often use primary cells and attempt to make the
`replacement of the batteries easy and less frequent. If the
`energy requirement is such that the user will need to
`replace the battery too often, rechargeable batteries have to
`be employed to minimize user aggravation and to protect
`the environment. However, while rechargeable batteries
`can be charged a several hundred times, they generally
`hold four to five times less energy than non-rechargeable
`ones for comparable size and weight (5). Devices that
`operate on rechargeable batteries must also attempt to
`reduce the time taken to charge up the battery.
`
`134
`
`If the recharging can be serendipitous, i.e., combined
`with some other benefit that is delivered to the user, such
`as receiving information from the Internet, the user may
`not perceive recharging as an inconvenience.
`
`1.2 Challenges in a wrist watch form factor
`
`In addition to the general energy challenge faced by
`other wearable computing devices,
`there are several
`additional challenges imposed by the choice of a wrist
`watch form factor.
`The simplest way to increase the battery life is to use a
`larger capacity battery which will be larger and heavier,
`but the size and weight requirements on a wrist watch
`place an upper bound on the capacity of the battery that
`it. Witb
`the best available
`can be used
`to power
`rechargeable Lithium polymer batteries
`today,
`the
`maximum capacity of a battery measuring 3cm x 2cm x
`0.5cm, that can be fit into a regular size watch, is about
`200mAh.
`Second, replacing batteries on a watch is generally
`difficult due to the small size of the watch and the need to
`make the waich water resistant. As per our discussions
`with people who repair watches, a significant number of
`customer complaints directly result from users trying to
`replace the batteries without the right tools. Traditional
`watch manufacturers attempt to make the battery last so
`long that the user is more inclined to buy a new watch
`when it is time to replace the battery.
`The third problem relates to user perception. Users are
`not accustomed to having to recharge wrist watches, but
`may be willing to recharge other devices su~h as cell
`phones and PDAs. It is important to make the user
`perceive a high function wrist wa tch as being similar to
`these other devices rather than traditional wrist watches.
`As mentioned earlier, an advantage of the wrist watch is
`that it is instantly viewable. A constraint that arises from
`this aspect is that the watch should preferably have some
`useful information on its display at all times. While saving
`energy by turning off the display is an option on many
`devices, doing so on a watch may take a significant
`advantage away unless it can be done so cleverly that the
`display is always on when the user is looking at the watch.
`In the following sections we describe the energy related
`tradeoffs associated
`to
`the device usage model,
`the
`hardware, system level software and application level
`software. We end with some suggestions for further
`improvement of battery life.
`
`2 Device usage model
`
`Wearable computing devices are generally in one of
`two modes, sl~eping or active. The device is in the active
`state typically ,when the device is doing something for the
`user; e.g., performing some computation, obtaining and
`
`GOOGLE EXHIBIT 1041
`GOOGLE v. NEONODE
`IPR2021-01041
`
`Page 4 of 10
`
`

`

`displaying data etc. The rest of the time, the device sleeps.
`It transitions to the active mode in response to some action
`by the user or the environment. Depending on how long
`the device takes to come out of the sleep mode, there may
`also be states in between these two extremes, such as an
`idle mode where the device responds more guickly to the
`user than if it were in the sleep mode.
`J
`As a gross approximation one may characterize the
`device using two power metrics: The power consumed in
`the active mode (Pac,ivc) and the power consumed in the
`sleep mode (P,1eep)- One can also approximate the actual
`usage of the device using a single metric: the usage duty
`factor (D) which is the fraction of the time the device
`spends in the active mode.
`Informal surveys reveal that owners of Palm Pilots TM
`use them about ten times a day for about 30 seconds at a
`time. This adds up to about 5 minutes per day or a duty
`factor of about 0.0035 . Users of the ParcTAB [6] reported
`that their device was on· for less than I 00 seconds at a
`time. With today's hardware, the device can periodically
`go into a sleep mode, unbeknownst to the user, even when
`the user is actively interacting because of the reaction time
`of the human user and further reduce the actual duty factor.
`The exceptions to low duty factors tend to be devices that
`perform active functioQS even when the user is not
`consciously and actively using the device. An example of
`such a device is an MP3 player watch where the user only
`needs to initiate the play function and cause the watch to
`actively run and play the music requested.
`Observations of the usage patterns of wristwatches
`suggest that the amount of time the user actually spends
`interacting with the advanced features on a digital watch is
`generally an insignificant fraction of the total time. This is
`true for many high function wrist watches as well.
`Calculators probably have an even smaller duty factor.
`Based on these metrics, the average power consumed
`by the device is given by P,1ccv (1-D) + Pac,ivcD. Ifwe further
`define the ratio of active power to sleep power as the
`power factor ratio: PFR =; Pac,;vJPs1ccp, then the total power
`consumed by the device is P,1ccp (1-D) + PFR * P,1ccp D =
`P,1ecp (1-D + PFR*D).
`The PFR for our watch ranges from around 30 to I 00 as
`seen from table in section 3. In comparison, PFR for a
`PalmPilot™ ranges from 60 to 280 [7], the Psion Series
`5™ PDA ranges from 70 to 240 [8], and the Compaq Itsy
`ranges from 30 to 90 [9, 10].
`The battery
`life can be approximated as Battery
`Capacity (mWh) / Average power consumed. This is an
`approximation since battery capacity
`is not really a
`constant but is a function of the precise wave form of the
`load as opposed to just the average [5, 11 ]. Nevertheless, it
`is useful to examine the effects of the different parameters
`on the battery life.
`
`135
`
`Figure 3 below shows the interplay between the usage
`duty factor and the predicted battery life for the watch for
`different power factor ratios. The duty factor is shown on a
`logarithmic scale. The battery life is normalized to one
`when the device is in the sleep mode all of the time. Once
`is built,
`the PFR
`is
`fixed, and
`the
`the hardware
`predominant way of extending
`the battery life is to
`minimize the actual duty factor.
`the
`Ideally, both the minimum sleep current and
`maximum current consumption must both be minimized.
`But which is more important depends on the duty factor.
`At the frequently encountered low duty factors, it is
`very important to focus on minimizing the sleep power
`because reducing the PFR has less perceivable impact on
`relative battery life because we are at the left end of the
`curves in Figure 3. On the other hand, if the duty factor is
`much higher, say two hours a day, then we operate in the
`middle of the graph and it is important make the PFR
`smaller by reducing the active current consumption very
`aggressively.
`
`0.9
`o.a
`:5 0.7
`i 0.6
`CD 0.5
`-i 0 .4
`i 0.3
`
`0.2
`
`0.1
`
`0
`
`f
`
`]
`
`PF •10 -
`PFA• 20 - (cid:173)
`PFA•SO - (cid:173)
`PFA•100 ---e--(cid:173)
`PFA• 250 -------
`
`f
`]
`
`f f
`~
`
`Usage Oury Faclor
`
`!
`
`ls,
`
`{
`6i
`
`{ f
`
`;li
`
`,:.

`
`Figure 3. Relative battery life versus duty factor
`
`3 Hardware level energy trade-offs
`
`The upper and lower bounds on the battery life for a
`device are determined by hardware. The maximum battery
`life depends on the minimum sleep current that can be
`achieved. Similarly, the minimum battery life is dictated
`by the maximum current consumption when all hardware
`components are turned on.
`We attempted to keep the energy requirement as low as
`possible by
`choosing energy efficient components
`whenever possible. However, energy efficiency often
`comes with less function, e.g., task specific hardware can
`generally operate at a lower energy cost compared to a
`programmable processor, and smaller memories consume
`less power to refresh than larger ones. Compared to other
`wrist watches our design trades off energy efficiency for
`greater function , as is evident from the 32-bit processor
`and large amount of memory we incorporated.
`Fitting all of the components onto a small board,
`measuring 27.5 mm x 35.3 mm, was very challenging.
`
`GOOGLE EXHIBIT 1041
`GOOGLE v. NEONODE
`IPR2021-01041
`
`Page 5 of 10
`
`

`

`Even when more energy efficient components were
`available, we were unable to use them because they were
`larger and would have increased the size of the circuit
`board. For instance we used a voltage regulator with a
`leakage current of IOOµA since it was a factor of 8 smaller
`than a voltage regulator with a leakage current of I 0µA.
`Often controls are provided to turn off portions of the
`hardware to save energy. For example, in some systems
`multiple DRAM banks are used and some banks are
`powered off when the software knows that a particular
`DRAM bank is not being used. However, we do not have
`the room on the main board to be able to fit several
`memory modules and hence cannot apply multiple DRAM
`banks to mitigate the power problem in the sleep mode.
`Likewise we did not have any room to have a battery
`backup or a capacitor to preserve DRAM contents if the
`main battery was discharged.
`In order to drive all of the components in our watch,
`except for Bluetooth™, we needed a battery that could
`supply currents as high as 50 mA. This constraint ruled out
`coin cells and led us to choose a rechargeable Lithium
`Polymer battery. A
`rechargeable battery was also
`appropriate since we did not want to open the watch to
`replace the battery often.
`Within the constraints of function and size, we designed
`the hardware to be as energy efficient as possible. The
`processor we chose, an EP72 l I chip [ 12] from Cirrus
`Logic, supported most of our required peripherals such on
`chip ROM, integrated LCD controller, IrDA controller,
`UART, serial, PCM and serial bus interfaces, etc., and we
`did not require the space or power for additional glue
`logic. The processor itself was used in bare die package
`instead of the regular package to save both space and
`power. We run the processor at 18Mhz though it can run
`up to 74 Mhz. The processor supports two power saving
`modes called Idle and Standby which are described below.
`In addition, we ensured the input devices on the watch,
`namely a touch panel, a roller wheel and a tilt sensor,
`consumed no power in the Standby mode.
`feature we
`Another
`significant
`power
`saving
`incorporated into the OLEO display was the ability rapidly
`turn the pixels on and off and to control its brightness by
`adjusting the ratio of the time that the pixels are on to the
`time they are is off. We also have a clear instruction in the
`OLEO that clears the display without requiring the CPU to
`zero all the pixels individually.
`Table
`I
`lists
`the manufacturer specified power
`consumption for various components in operational and
`sleep state in our system. (Vdd=3 .3V in most cases.)
`The range for power quoted by the specifications sheets
`for some components is rather large and the actual
`consumption is determined by the usage scenario and how
`the components are configured and interoperate, e.g., can
`the Flash and the DRAM be consuming their peak powers
`
`at the same time due to the bus architecture. Tools are
`needed to measure power accurately (13]. Also, measuring
`the power consumed by the various components is not
`straightforward in many situations because there may be
`no way to turn off a particular component explicitly, e.g.,
`the DRAM, once Linux is running. In these situations we
`devise a set of tests that are similar to power on self test,
`and measure the power consumed by various components
`before the operating system is loaded. One more issue we
`had was that the battery capacity also reduces over time
`and some of our current batteries appear to have only
`35mAh as opposed to 60mAh when they were fresh.
`
`Table 1. Power from data sheets
`Sleep
`Ooerational
`max/typ Tm W]
`max/typ [mW]
`50/-
`0.010/-
`363/-
`0.660/-
`72/-
`-/0.001
`1.8/-
`0.008/-
`86/66
`0.003/0.000
`-/3
`0.017/0.000
`27/15
`0.031
`7.2/4.8
`0.002
`0.6/0.3
`0.003/0.000
`0.6/0.3
`0.003/0.000
`198/132
`1.82
`
`Component
`CPU (EP 7211)
`DRAM (8MB)
`Flash (8MB)
`Touchpanel controller
`IrDA
`LCD
`Codec
`SPK Amp
`DC-DC 3V
`DC-DC 2.SV
`Bluetooth (early hw)
`
`Furthermore we managed to reduce the operational
`voltage to be a little lower, i.e. from 3.3V to 3.0V, by
`selecting all other components such as Flash memory,
`DRAM, touch panel controller and the IrDA module to be
`the same and this reduced the power consumption by an
`estimated 17 .3%, assuming sta_tic CMOS. The voltage
`· regulators consume 200 µA and 45 µA is consumed in bias
`circuits. Better regulators were larger and therefore not an
`option for us. Table 2 shows the current consumption in
`the watch in the different states of its usage. (Multiply by
`3.7V (nominal battery voltage)
`to get corresponding
`power.)
`In comparison, typical standby currents of the Palm
`Illx TM ( 4 MB of RAM) is 300µA, that of the Psi on Series
`5™ is 540µA (8 MB of RAM). In active modes (with the
`backlight off though), the current cons"1mption in the Palm
`Illx™ ranges from around 15 mA to 65, mA[7], and that
`for the Psion Series 5™ ranges from 35 mA to 130 mA [8] .
`The backlights on the Palm Illx add about 40 mA and on
`the Psion Series 5 add about 70 mA to the above numbers.
`How far can we go with hardware improvements? Even
`with the 200mAh in a state of the art Lithium polymer
`battery, if the system designer wants the battery to last a
`year, to a , first order approximation, ignoring battery
`non-linearitfes and dependence on battery
`recovery
`processes o~ peak current drained and the self discharge of
`the battery, the average current consumption in the device
`
`136
`
`GOOGLE EXHIBIT 1041
`GOOGLE v. NEONODE
`IPR2021-01041
`
`Page 6 of 10
`
`

`

`should be 200/(365*24) = 23µA or less. This is an order of
`magnitude lower than the Palm Illx TM consumes with 4MB
`RAM. We also have to fight about a 5% self discharge rate
`per month in Lithium polymer batteries [14].
`
`I
`
`Table 2. C urrent consum~ t1on
`Total current
`LCD
`DRAM
`Processor
`Active
`15-55mA
`OPERATION On
`access
`average of
`0.3-40mA
`27.SmA
`Processor
`Refresh
`> 298µA
`Self Refresh
`298µA
`
`14mA
`IDLE
`
`348µA
`On
`
`<3744µA
`STANDBY
`
`348µA
`On
`
`4.6mA
`
`913µA
`
`22µA
`STANDBY
`
`Off
`
`348µA
`
`Self Refresh
`298µA
`
`22ttA
`
`OttA
`
`565µA
`
`4 System software level energy trade-offs
`
`As noted earlier, battery life depends to a large extent
`on the power consumed in the sleep state if the usage duty
`factor is low. So reducing the power consumed in the sleep
`state is the first issue we looked at.
`
`4.1 Kernel Optimizations
`
`the sleep mode, the task
`in
`When the system is
`scheduler in the Linux kernel sees no tasks that are ready
`to run. In this situation, the kernel switches the processor
`into the Idle mode. Also the kernel relies on a timer to
`IO ms
`interrupt it every
`in order to guarantee fair
`scheduling amongst the tasks that are ready to run. Every
`IO ms when the timer interrupt occurs the processor
`switches to the active mode for a short duration when it
`updates the kernel time variables and checks the task
`queue. If there are no tasks that are runnable, the kernel
`puts the processor back into the Idle mode. The processor
`also comes out of the Idle mode when there is an external
`interrupt as would occur if the user wanted to interact with
`the watch. Also tasks can request to be woken up at some
`point in the future. The kernel maintains a list of such tasks
`in a timer list. At each timer tick the kernel checks to see if
`sufficient time has elapsed to wake up one or more
`sleeping tasks.
`the
`the energy required by
`As observed earlier,
`processor in the Idle mode is much higher than the energy
`required in the Standby mode. So we first focused on
`trying to get the processor into the Standby mode instead
`of the Idle mode when there was no work to do.
`On the ARM processor we used in our watch the 10 ms
`timer is not available in the Standby mode. However 1/0
`interrupts work and a real
`time clock (RTC) which
`operates on a one second granularity is available. Also the
`
`137
`
`processor may take up to 250ms to get out of Standby
`mode but coming out of the Idle mode typically takes only
`a few clock cycles. From a user perspective, the 250ms
`delay is perceptible, but this may be a small price to pay
`for the improved battery life.
`In order to take advantage of the more efficient Standby
`mode, we had to rewrite the Linux timing methodology for
`our system. The basic idea is as follows: Whenever the
`scheduler found that it could put the processor in the Idle
`mode, we scan the timer list to see how much time needs
`to elapse before any of the tasks need to woken up. If this
`time-out interval is long enough we put the processor in
`Standby mode after programming the real-time clock
`(RTC) to wake us up before this time-out. When we come
`out of the Standby mode either on a RTC interrupt or some
`other interrupt, we adjust the kernel time variables so that
`the kernel knows how much time has really elapsed. If the
`nearest task is too close for the 1 second granularity of the
`RTC, we go into Idle mode instead and program the lOms
`timer to wake us up at the time-out period.
`Our changes to the Linux kernel seem to work fine with
`all of the applications we have tested so far, though we
`have not tested this code with a more demanding set of
`user workloads.
`
`while(l)
`if ( !current->need_resched &&
`!hlt_counter)
`cli ();
`if (
`lwork_candidate() ) {
`get_nearest_timeout();
`adjust_hw_timer();
`
`)
`sti ();
`if ( B_STANDBY_VALXD
`proc_stdby () ;
`else
`proc_idle();
`
`current->policy = SCHED_YIELD;
`schedule();
`
`Figure 4. Modified Linux 2.2.1 "main idle loop"
`
`Figure 4 shows a pseudo code snippet of the changes
`we made. This code is from the "main idle loop" in Linux,
`and is in the file arch/arm/kernel/process.c. The lines in
`bold are the statements we have added. The operation is as
`follows. Whenever the current task that is executing in
`Linux has run to completion, control is returned to the
`main idle loop. At the very top of the loop, the current task
`is checked to see if it needs scheduling. If there is no
`current task that needs scheduling, work_candidate ()
`is called to resolve if there are other tasks that are eligible
`for scheduling. If there are no tasks, then there's no work
`
`GOOGLE EXHIBIT 1041
`GOOGLE v. NEONODE
`IPR2021-01041
`
`Page 7 of 10
`
`

`

`to be done at the current time. So to determine when there
`is work to be done, we parse the Linux timer list in
`to
`find
`the
`nearest
`get_nearest_timeout ()
`time-out. The returned time-out value is then used by
`adjust_hw_timer () to program either the RTC (if
`the time is long enough) or the 1 Oms timer to expire before
`or at that time-out value. adjust_hw_timer () also
`sets the flag B_STANDBY_VALID if the time is long
`enough to go into Standby mode.
`The selection, programming and handling of the
`hardware timers and the related issue of keeping accurate
`time is complex and we expect to publish the details in the
`future.
`
`4.2 Other Optimizations
`
`Once we have done all that we can to reduce the power
`consumption in the sleep state, the next focus from a
`system software perspective is to ensure that the duration
`spent in the active state in response to user action is
`minimized. The time spent in the active state depends to an
`extent on the libraries and APis used. It is important to
`strike a balance between widely used APis versus highly
`energy-optimized custom code. In order to reduce the time
`spent in the active state, device drivers are optimized to
`reduce the number of instructions that are executed in
`response to interrupts. Device drivers also use interrupts
`and eliminate polling or kernel timer based scheduling
`whenever possible.
`As noted above, we run the X 11 graphics library on our
`watches. The X 11 code consists of the Xserver and the
`Xlib library that applications can link to. The Xserver
`typically draws directly to a frame buffer and in our case
`would typically directly write to the LCD or the OLEO.
`Individual byte or word writes to these devices are
`expensive in terms of power consumption and can also
`result in a visible flicker. We address both of these
`problems by letting the Xserver write to a shadow display
`buffer maintained in DRAM. When we know that the
`Xserver has completed all of its drawing calls and will go
`into a mode where it waits for the next event, we copy the
`contents of the shadow display buffer to the actual display.
`
`5 Application level energy trade-offs
`
`In the default mode the application displays the time
`and calendar information. By using the touch screen and
`the roller wheel the user can navigate to other screens and
`access information such as phone lists, things to do, etc.
`The application program is written in C and uses the X 11,
`math and standard C libraries.
`While it is clear that the application code may have
`control over the energy consumed in the active mode, it is
`interesting to note that in the case of our watch it has an
`impact on the energy consumed in the sleep mode as well.
`
`Our watch shows the current time on the display when the
`watch is in the sleep mode. Both the LCD and OLEO
`displays consume less energy if fewer pixels are turned on.
`So the application code can help reduce the amount of
`energy required in the sleep mode by turning on fewer
`pixels. The impact of the number of pixels on the energy
`required is greater on the OLEO display, but on the LCD
`the difference is not as pronounced.
`On the 640x480 OLEO display, we calculated the
`number of pixels that had to be turned on to display both
`an analog clock face (with hands) and a numeric time
`display. We found that an analog clock face could be
`displayed with fewer pixels. We can reduce the number of
`pixels for a digital display by reducing the font size, but
`this impacts readability. In addition, an analog clock face
`was generally perceived to be much ·easier to read (since it
`also indicated the amount of time remaining till some point
`in the future as well as the current time) and appeared
`more elegant. The different screens we compared are
`shown in Figure 5 below in actual size.
`Eliminating the second hand increased the time the
`watch could spend in sleep state from one second to sixty
`seconds as it was sufficient for the watch to wake up once
`a minute to u date the hands rather than once a second.
`
`"
`......_,
`
`-
`
`. -
`
`Hollow minute hand
`
`On Pixel count: 3849 (1.25%)
`
`-
`
`I
`
`-----....-----
`
`-
`
`Thinner hands
`
`On Pixel count: 3280 (1.07%)
`
`Triangular hands
`
`On Pixel count: 4088 (1.33%)
`
`10:10:00
`
`120 pixel tall Verdana font
`
`On Pixel count: 13916 (4.53%)
`
`10 10·00
`
`120 pixel tall Arial font
`
`'
`
`On Pixel count: 9492 (3.09%)
`
`80 pixel tall Arial font, w/o seconds
`
`1ll 1[)
`
`On Pixel count: 2589 (0.84%)
`
`Figure 5. Representation vs. pixel count
`
`138
`
`GOOGLE EXHIBIT 1041
`GOOGLE v. NEONODE
`IPR2021-01041
`
`Page 8 of 10
`
`

`

`We examined all the different screens presented by the
`application software, making changes to convey the same
`information with fewer pixels. Fonts, icons and graphics
`shown on the LED are all designed to minimize the
`number of pixels that are turned on. On I an emissive
`display with a fine dot pitch, we find that firie lines (even
`those that are just one pixel wide), are quite visible.
`Accordingly, fonts that use thin lines are preferred to bold
`fonts. Icons are designed to use outlines instead of solid
`fills so that fewer pixels are turned on. Thin line graphics
`are used whenever possible.
`In a memory constrained device such as ours, we first
`concentrate on reducing the size (memory footprint) of the
`libraries and application executables to ensure that they fit.
`However, often there is a trade-off between size and the
`dynamic number of instructions executed to accomplish a
`certain task. For instance we· can get code to execute faster
`(i.e., fewer number of instructions) if we use macros
`instead of functions or expand functions in-line. Reducing
`the number of instructions to perform a certain t

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket