Date: Wed, 2 Jan 2002 21:35:52 -0800 (PST) From: Matthew Dillon <dillon@apollo.backplane.com> To: Peter Wemm <peter@wemm.org> Cc: John Baldwin <jhb@FreeBSD.ORG>, arch@FreeBSD.ORG, Bernd Walter <ticso@cicely8.cicely.de>, Mike Smith <msmith@FreeBSD.ORG>, Bruce Evans <bde@zeta.org.au>, Michal Mertl <mime@traveller.cz>, Peter Jeremy <peter.jeremy@alcatel.com.au> Subject: Re: When to use atomic_ functions? (was: 64 bit counters) Message-ID: <200201030535.g035Zq062246@apollo.backplane.com> References: <20020103045849.5B53039EC@overcee.netplex.com.au>
next in thread | previous in thread | raw e-mail | index | archive | help
:> Most of the critical section code in the system is going to be at :> the top level. sti and cli *ARE* expensive, that's why the original :> spl code went to such great lengths to avoid calling them. I :> believe one or both instructions synchronizes the cpu pipeline, :> interrupting instruction flow. It is nasty stuff. : :Not quite.. We went to extremes to avoid touching the ISA PIC, since that :meant going over the 4.77Mhz (or 8Mhz) isa bus.. potentially taking many :hundreds of cpu clock ticks per inb/outb. cli/sti is nothing compared to :that. The spl code optimized the mask updates on the PIC, not cli/sti :as such. The APIC is worse since it could take 40+ IO operations to set :the complete mask, although thankfully at FSB speeds (not :cpu core speed), not ISA speed. : :Cheers, :-Peter :-- :Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au An ISA or PCI bus access is certainly expensive, but I don't see how it applies to spl*() calls. The interrupt handler assembly has to manipulate the controller no matter how spl*()'s are implemented and that is where most of the optimizations were made (things like AUTO_EOI and such). Since spl*() calls manipulate multiple interrupt sources I don't think anyone would ever consider actually trying to screw around with the PIC in spl*(), even if the PIC had been fast. -Matt To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200201030535.g035Zq062246>