All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Phillips <phillips@arcor.de>
To: root@chaos.analogic.com, Linus Torvalds <torvalds@transmeta.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: HZ, preferably as small as possible
Date: Thu, 18 Jul 2002 15:25:34 +0200	[thread overview]
Message-ID: <E17VBHi-0004oH-00@starship> (raw)
In-Reply-To: <Pine.LNX.3.95.1020718084908.15746A-100000@chaos.analogic.com>

On Thursday 18 July 2002 14:57, Richard B. Johnson wrote:
> On Wed, 17 Jul 2002, Linus Torvalds wrote:
> > On Wed, 17 Jul 2002, Richard B. Johnson wrote:
> > >
> > > It is hardly novel and I can't imagine how Bresenham or whomever
> > > could make such a claim to the obvious. Even the DOS writer(s) used
> > > this technique to get one-second time intervals from the 18.206
> > > ticks/per second.
> > 
> > Ehh.. Look at _existing_ linux code to do exactly the same.
> > 
> > See update_wall_time_one_tick() and second_overflow() (which does a lot
> > more besides, but it does largely boil down to this "average fractions
> > using basic integer math" thing.
>
> Maybe you see something in the code I don't. In fact, the hardware
> apprears to have been programmed to interrupt at the HZ rate
> using the constant, CLOCK_TICK_RATE, defined in ../asm/timex.h.
> Maybe the hardware can't be programmed to interrupt at HZ so the
> real ticks are adjusted by 'average fractions' code, but it is
> very unclear if this is being done.
> 
> Here is a 20 year-old source snippit of some synthetic division
> code used to correct the DOS time by substituting part of INT 08.

Yes, that's the same algorithm all right, and 'synthetic division'
is a much better name for it than the one I used.  IMHO, we should be
doing this even when there happens to be an integral relationship 
between timer interrupt rate and HZ.  It eliminates a bunch of
posturing we'd otherwise be stuck with to explain/work around
restrictions in the choice of intervals.  With a little bit of head
scratching it's also possible to add the bookkeeping necessary to
handle varying physical interrupt rates, while still maintaining
the *exact* correct HZ tick count.

Stripping some cruft from your historical example:

 	SUB	WORD PTR [ACCUMULATOR],NUMERATOR
 	JNC	NO_TICK
 	MOV	AX,DIVISOR
 	ADD	WORD PTR [ACCUMULATOR],AX	; Synth div
 	CALL	TICK
NO_TICK:

Pretty hard to beat that for efficiency.

-- 
Daniel

  reply	other threads:[~2002-07-18 13:21 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-10 19:59 HZ, preferably as small as possible Grover, Andrew
2002-07-10 21:09 ` george anzinger
2002-07-11  6:03   ` Hannu Savolainen
2002-07-11  7:15     ` george anzinger
2002-07-12  0:36       ` Stevie O
2002-07-12  0:50         ` Thunder from the hill
2002-07-12  0:55           ` Robert Love
2002-07-12  0:58             ` Thunder from the hill
2002-07-12  1:24             ` Alan Cox
2002-07-12  1:37             ` Mark Hahn
2002-07-12  1:09         ` george anzinger
2002-07-12  1:26           ` Roland Dreier
2002-07-12 17:30             ` george anzinger
2002-07-12  1:35           ` Stevie O
2002-07-12  3:01         ` Bernd Eckenfels
2002-07-11 12:54     ` Thunder from the hill
2002-07-11 15:59       ` Martin Dalecki
2002-07-10 21:28 ` Andrew Morton
2002-07-10 21:35   ` Benjamin LaHaise
2002-07-10 21:38     ` Andrew Morton
2002-07-10 21:42       ` Benjamin LaHaise
2002-07-11  2:14         ` CaT
2002-07-11 17:01     ` Martin Dalecki
2002-07-10 22:01   ` Thunder from the hill
2002-07-10 22:09     ` Cort Dougan
2002-07-11 13:36       ` Whoa... (was: Re: HZ, preferably as small as possible) Mark Mielke
2002-07-11 21:08         ` Daniel Phillips
2002-07-10 22:41     ` HZ, preferably as small as possible Thunder from the hill
2002-07-10 22:47       ` Thunder from the hill
2002-07-10 22:49       ` Eli Carter
2002-07-10 23:05         ` Thunder from the hill
2002-07-10 23:08       ` Dave Mielke
2002-07-10 23:13         ` Thunder from the hill
2002-07-10 23:50     ` J.A. Magallon
2002-07-11  0:28   ` Lincoln Dale
2002-07-11 11:35     ` Kasper Dupont
2002-07-11 12:30       ` Alan Cox
2002-07-11 13:37         ` Kasper Dupont
2002-07-11 15:46           ` Alan Cox
2002-07-11 18:51       ` george anzinger
2002-07-15  5:06 ` Linus Torvalds
2002-07-15 16:26   ` Robert Love
2002-07-15 18:56     ` Linus Torvalds
2002-07-15 19:52       ` mbs
2002-07-15 20:01         ` yodaiken
2002-07-16 11:41   ` Vojtech Pavlik
2002-07-17 19:33   ` Daniel Phillips
2002-07-17 20:31     ` Richard B. Johnson
2002-07-17 20:40       ` Daniel Phillips
2002-07-17 21:02         ` Richard B. Johnson
2002-07-17 21:02       ` Linus Torvalds
2002-07-17 21:16         ` Daniel Phillips
2002-07-18 12:57         ` Richard B. Johnson
2002-07-18 13:25           ` Daniel Phillips [this message]
2002-07-18 10:10       ` Kai Henningsen
2002-07-17 20:55     ` Linus Torvalds
  -- strict thread matches above, loose matches on Subject: below --
2002-07-11  2:46 Grover, Andrew
2002-07-11  3:01 ` Jeff Garzik
2002-07-11 11:45   ` Alan Cox
2002-07-11 17:08   ` Martin Dalecki
2002-07-11 19:21     ` Albert D. Cahalan
2002-07-16  9:17       ` Kai Henningsen
2002-07-11 20:34     ` Bill Davidsen
2002-07-12 12:01       ` Martin Dalecki
2002-07-15  5:15       ` Linus Torvalds
2002-07-15  6:56         ` Albert D. Cahalan
2002-07-15  8:24           ` Russell King
2002-07-15 15:48             ` David Mosberger
2002-07-15 18:20               ` Albert D. Cahalan
2002-07-15 18:30                 ` David Mosberger
2002-07-15 16:07             ` Albert D. Cahalan
2002-07-15 17:06               ` Russell King
2002-07-15 18:43                 ` Albert D. Cahalan
2002-07-15 18:53                   ` Russell King
2002-07-15 18:50               ` Linus Torvalds
2002-07-15 20:15                 ` Albert D. Cahalan
2002-07-15  8:58         ` Dave Mielke
2002-07-11  7:09 ` george anzinger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E17VBHi-0004oH-00@starship \
    --to=phillips@arcor.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=root@chaos.analogic.com \
    --cc=torvalds@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.