Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Time to require SSE2

212 views
Skip to first unread message

sayrer

unread,
Dec 2, 2009, 6:31:33 PM12/2/09
to
I think this is a reasonable requirement for releases after Firefox
3.6.

Does anyone disagree?

L. David Baron

unread,
Dec 2, 2009, 9:16:48 PM12/2/09
to sayrer, dev-pl...@lists.mozilla.org
On Wednesday 2009-12-02 15:31 -0800, sayrer wrote:
> I think this is a reasonable requirement for releases after Firefox
> 3.6.

Do we know how many of our users are running on CPUs without SSE2?

If we knew how to map "GenuineIntel family 6 model 15 stepping 6" to
whether a CPU supports SSE2, we could figure out rough numbers from
crash data, which has that part of the CPUID information. I haven't
found a good source for that mapping.

-David

--
L. David Baron http://dbaron.org/
Mozilla Corporation http://www.mozilla.com/

Rob Arnold

unread,
Dec 2, 2009, 9:54:35 PM12/2/09
to sayrer, dev-pl...@lists.mozilla.org

I don't think you've provided enough information for me to make an informed
opinion. What are the benefits? Obviously speed, but how much? Does it
simplify code? I'm looking for hard numbers here.

Can the SSE requirement be disabled at compile time? Can we fail gracefully
on systems that don't have SSE? Hopefully we wouldn't offer 3.7 as an update
to users who can't use it.

How does this interact with our OS support? Windows XP shipped supporting
systems that don't have SSE. Can we really claim then to support Windows
2000/XP SP2 if they supports systems without SSE?

-Rob

Mike Beltzner

unread,
Dec 2, 2009, 10:09:25 PM12/2/09
to dev-pl...@lists.mozilla.org
On 12/2/2009 6:31 PM, sayrer wrote:
> I think this is a reasonable requirement for releases after Firefox
> 3.6.

First off, I'm assuming that you're speaking about requirements for
Tracemonkey's JIT; would this also be a requirement for NanoJIT? Do ARM
architectures get a pass?

Second, could you explain why you think it's a reasonable requirement?
Your opinion carries considerable weight, but I'm not sure why you think
it's something we should do.

Wikipedia states that the following CPUs support SSE2:

* AMD K8-based CPUs (Athlon 64, Sempron 64, Turion 64, etc)
* AMD Phenom CPUs
* Intel NetBurst-based CPUs (Pentium 4, Xeon, Celeron, Celeron D, etc)
* Intel Pentium M and Celeron M
* Intel Core-based CPUs (Core Duo, Core Solo, etc)
* Intel Core 2-based CPUs (Core 2 Duo, Core 2 Quad, etc)
* Intel Core i7
* Intel Atom
* Transmeta Efficeon
* VIA C7
* VIA Nano

and while I can't think of a (full desktop or laptop) computer sold in
the past 5 years that shipped without one of those CPUs, I'm sure that
there are a number of institutions that are still rockin' older CPUs. I
do, however, have significant doubts that Firefox 3.6 performs very well
on any of those systems.

> Does anyone disagree?

At this point I neither agree or disagree, as I'm without the required
context and data to make an informed decision.

cheers,
mike

Christopher Blizzard

unread,
Dec 2, 2009, 10:50:47 PM12/2/09
to Mike Beltzner, dev-pl...@lists.mozilla.org
On 12/2/2009 7:09 PM, Mike Beltzner wrote:
> and while I can't think of a (full desktop or laptop) computer sold in
> the past 5 years that shipped without one of those CPUs, I'm sure that
> there are a number of institutions that are still rockin' older CPUs.
> I do, however, have significant doubts that Firefox 3.6 performs very
> well on any of those systems.

I would like to hear more about this as well - the what, why and when?
I'll bet that there are a lot of people out there using Mozilla on older
x86 chips. (I wonder if the new VIA-based OLPC machines support SSE -
possible they are using a different chip than the one on Mike's list!)

I'm not saying we have to support those systems, but it would be good to
inform them that we're not going to with some kind of warning.

--Chris

Joshua Cranmer

unread,
Dec 2, 2009, 11:34:58 PM12/2/09
to
On 12/2/2009 10:09 PM, Mike Beltzner wrote:
> and while I can't think of a (full desktop or laptop) computer sold in
> the past 5 years that shipped without one of those CPUs, I'm sure that
> there are a number of institutions that are still rockin' older CPUs. I
> do, however, have significant doubts that Firefox 3.6 performs very well
> on any of those systems.

My parents' computer was purchased about 8 years ago, and it seems to
work just fine running Firefox (more time is spent waiting on the
computer to boot than anything else). It's not 3.6; it's either 3.0 or
3.5, though.

Benjamin Smedberg

unread,
Dec 3, 2009, 12:00:43 AM12/3/09
to

When Firefox 3.5 was coming out there were a noticeable group of people who
were running machines without CMOV, specifically AMD K6 and some Via C3s.
They experienced a startup crash in 3.5b99 (bug 500277). All of those people
will not have SSE2 processors. I don't think we know what group of computers
that actually is: from what I've discovered, all the new netbook processors
have SSE2.

I don't agree or disagree yet, but I think we probably need to collect some
data.

--BDS

Andreas Gal

unread,
Dec 3, 2009, 12:56:42 AM12/3/09
to Benjamin Smedberg, dev-pl...@lists.mozilla.org

Essentially all hardware within the last 5 years shipped with SSE2. The vast majority of our users does have SSE2. David Anderson had some statistics for a gaming network, and there it was around 98.5% (our actual number might be a bit lower, since our users aren't all gamers).

Modern machines have capabilities we are currently not using efficiently. We should. As an example, converting a double to an integer is approximately 2.5x faster when using SSE2. I am not even that concerned about the cost of conditionally enabling SSE2 at runtime. I am more worried about further extending our testing requirements. If we officially support legacy non-SSE2 hardware, we should also test it. We currently really don't. The JIT generates significantly different code for SSE2 and non-SSE2. We barely ever test the FPU path.

Once we start adding more and more SSE2 code (which we should!), this is only going to get worse. So either we have to commit significant resources to testing for 5+ year old hardware, or we should make a bold leap and embrace SSE2, which was released around 10 years ago. If we commit to SSE2, we can also start using SSE2 compiler flags, which will give us a certain performance benefit for math-intensive code (not huge, a couple percent, lets not even argue about that here).

By the way, I don't mind keeping non-SSE2 support, especially as a compile-time setting. If our community wants to do non-SSE2 builds, that would be fantastic and we should take patches and help the best we can (i.e. link from our download page). But as a business, I think it might make sense to focus our attention on making best use of the hardware of 98% of our users, instead of putting them at a disadvantage in favor of 2% of our users.

Andreas

> _______________________________________________
> dev-platform mailing list
> dev-pl...@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform

Mike Beltzner

unread,
Dec 3, 2009, 1:10:59 AM12/3/09
to dev-pl...@lists.mozilla.org
On 12/3/2009 12:56 AM, Andreas Gal wrote:
> Essentially all hardware within the last 5 years shipped with SSE2.
> The vast majority of our users does have SSE2. David Anderson had
> some statistics for a gaming network, and there it was around 98.5%
> (our actual number might be a bit lower, since our users aren't all
> gamers).

Looking at that list of CPUs, I agree. SSE2 has been available since
2001, and the CPUs in that list have been commonplace on "entry level"
computers since about 2005 or so.

Sadly, I don't think gamers are a good model for computer technology
across a general user population, since they're far more likely to
upgrade their gear as their software almost always pushes the envelope
of what's possible in terms of graphics and performance. I do think that
there's ways to gather the data, and think that we should be willing to
pay for it (might be the easiest way.)

Thanks for spelling out the benefits; I figured that there were real
gains to be had. Benchmarking with SSE2 optimizations would also help in
the analysis, of course, but I know that means doing the work in advance
of knowing if we're going to fully invest.

Overall, I suspect that if a machine is old enough to not have SSE2
support, it may already be the case that Firefox 3.5 performs poorly on
it. Pull out your oldest computer and try running Firefox 3.5, and see
how it feels. This might make the SSE2 question moot.

cheers,
mike

Bobby Holley

unread,
Dec 3, 2009, 1:20:45 AM12/3/09
to Andreas Gal, Benjamin Smedberg, dev-pl...@lists.mozilla.org

> Essentially all hardware within the last 5 years shipped with SSE2.
> The vast majority of our users does have SSE2. David Anderson had
> some statistics for a gaming network, and there it was around 98.5%
> (our actual number might be a bit lower, since our users aren't all
> gamers).

I think this likely makes more than "a bit" of difference. Unless this
is casual flash-gaming, we're talking about what is probably the most
performance-conscious demographic of non-technical users. We should
certainly try to get numbers for firefox users (possibly also with
data about how likely these users are to take upgrades).

>
> Modern machines have capabilities we are currently not using
> efficiently. We should. As an example, converting a double to an
> integer is approximately 2.5x faster when using SSE2. I am not even
> that concerned about the cost of conditionally enabling SSE2 at
> runtime. I am more worried about further extending our testing
> requirements. If we officially support legacy non-SSE2 hardware, we
> should also test it. We currently really don't. The JIT generates
> significantly different code for SSE2 and non-SSE2. We barely ever
> test the FPU path.

It seems a bit silly to deny users upgrades to unambiguously better
software just because we're worried about super-rigorous testing.
Presumably, most math-intensive stuff is more likely to be caught by
automated testing as opposed to manual QA. So it seems like we could
just have a couple of tinderboxes running the non-SSE2 every once and
a while. Presumably, problems would be rare and easy to isolate, so we
could even scrimp on the number of slaves. Human QA could then consist
of a few smoke tests instead of a full run-through.

We shouldn't worry about optimizing non-SSE2 code, since these people
are on slow hardware anyway. Since conditional SSE2 code is usually
added as an alternative to an existing correct implementation, the
burden of maintaining two code paths should be mitigated.

> By the way, I don't mind keeping non-SSE2 support, especially as a
> compile-time setting. If our community wants to do non-SSE2 builds,
> that would be fantastic and we should take patches and help the best
> we can (i.e. link from our download page). But as a business, I
> think it might make sense to focus our attention on making best use
> of the hardware of 98% of our users, instead of putting them at a
> disadvantage in favor of 2% of our users.
>

2% of our user-base is still > 4 million people.

-bholley

> Andreas
>
> On Dec 2, 2009, at 9:00 PM, Benjamin Smedberg wrote:
>

John J. Barton

unread,
Dec 3, 2009, 1:56:09 AM12/3/09
to
Andreas Gal wrote:
> Essentially all hardware within the last 5 years shipped with SSE2.
My primary machine shipped in 2003: your cutoff date makes me jealous ;-)

The vast majority of our users does have SSE2. David Anderson had some
statistics for a gaming network,
and there it was around 98.5%

1.5% of 300 Million is "only" 4.5 Million crashes. Or can these be
detected so the result will be "Firefox 3.6 is a great match for your
vintage computer"?

(our actual number might be a bit lower, since our users aren't all gamers).

Or that dazzled by the small performance gains of CPUs in the last five
years?

jjb

Fowl

unread,
Dec 3, 2009, 3:03:39 AM12/3/09
to
I have some.. concerns:

* A gaming survey isn't representative.
* Just because Intel released it 10 years ago doesn't mean that every
chip suddenly get the ability. The Athlon XP still widely distributed
in 2004 does not have SSE2.
* 5 years really isn't that long in hardware terms, especially on the
sort of hand-me-down machines that get given to people for web access.
* Breaking with OS requirements is not nice.

I glad that data is going to be collected before anything rash is done.

Marco Bonardo

unread,
Dec 3, 2009, 8:25:07 AM12/3/09
to
Il 03/12/2009 4.09, Mike Beltzner ha scritto:
>
> Wikipedia states that the following CPUs support SSE2:
>
> * AMD K8-based CPUs (Athlon 64, Sempron 64, Turion 64, etc)
> * AMD Phenom CPUs
> * Intel NetBurst-based CPUs (Pentium 4, Xeon, Celeron, Celeron D, etc)
> * Intel Pentium M and Celeron M
> * Intel Core-based CPUs (Core Duo, Core Solo, etc)
> * Intel Core 2-based CPUs (Core 2 Duo, Core 2 Quad, etc)
> * Intel Core i7
> * Intel Atom
> * Transmeta Efficeon
> * VIA C7
> * VIA Nano

The only interesting CPU category i don't see here is Athlon XP series.
I still have a couple machines running those, and they're pretty good
processors that i still expect to see in small-home-servers or secondary
machines. Still i doubt a last-gen browser is really useful in these
kind of machines seeing the use-cases.

Oh and Via C3 that are still used in a large number of mini-itx boards,
but again those are usually not used as internet-browsing-machines (i
also have one of these).

-m

sayrer

unread,
Dec 3, 2009, 9:56:34 AM12/3/09
to
On Dec 2, 10:09 pm, Mike Beltzner <beltz...@mozilla.com> wrote:
> On 12/2/2009 6:31 PM, sayrer wrote:
>
> > I think this is a reasonable requirement for releases after Firefox
> > 3.6.
>
> First off, I'm assuming that you're speaking about requirements for
> Tracemonkey's JIT; would this also be a requirement for NanoJIT? Do ARM
> architectures get a pass?

ARM is not an issue here. The issue is Intel PCs running Windows or
Linux (all Intel Macs have SSE2).

I am talking about compiling Firefox itself, non just JIT stuff, as if
SSE2 were available.

>
> > Does anyone disagree?
>
> At this point I neither agree or disagree, as I'm without the required
> context and data to make an informed decision.

I think the first thing to do is probably to tweak the build configs
for a bit on the tinderbox, see if we see a big win immediately on our
performance tests, and then switch them back.

Another option is to support two kinds of Intel Windows/Linux builds,
and detect them with the installer. Yes, yet another platform. :)

- Rob

Mike Beltzner

unread,
Dec 3, 2009, 10:05:50 AM12/3/09
to sayrer, dev-pl...@lists.mozilla.org
On 2009-12-03, at 9:56 AM, sayrer wrote:

> Another option is to support two kinds of Intel Windows/Linux builds,
> and detect them with the installer. Yes, yet another platform. :)

IDIC, baby. Spock knew it all along.

I think we're going to have to get there anyways, as compiler optimized builds will help us a bunch, I'd expect, and our competitors (well, Safari, anyway) is already sort of going that route AIUI. It'll rely on us building an installer that works more like Chrome's (downloadable stub that does client side detection and then fetches the right packages) which again, we've always wanted and Rob Strong has been working towards. It will also require some good up-front thinking about what it means for QA strategies, client side crash reporting, etc.

Your approach (making the optimization changes on trunk for a nightly, switching it on and observing the effects, then switching it off) seems like a sensible way of confirming the expected benefits, for sure. I really do want to believe that there's some good survey data on what type of computers are expected to be installed across the world, and people willing to trade that data for money.

dbaron: does the list of CPUs I gave match to the data we get from crash reports and ADU pings in any helpful way?

cheers,
mike

Jeff Muizelaar

unread,
Dec 3, 2009, 11:14:27 AM12/3/09
to L. David Baron, dev-pl...@lists.mozilla.org, sayrer

On 2-Dec-09, at 9:16 PM, L. David Baron wrote:

> On Wednesday 2009-12-02 15:31 -0800, sayrer wrote:

>> I think this is a reasonable requirement for releases after Firefox
>> 3.6.
>

> Do we know how many of our users are running on CPUs without SSE2?
>
> If we knew how to map "GenuineIntel family 6 model 15 stepping 6" to
> whether a CPU supports SSE2, we could figure out rough numbers from
> crash data, which has that part of the CPUID information. I haven't
> found a good source for that mapping.

There's a table here:

http://www.codeguru.com/cpp/w-p/system/hardwareinformation/article.php/c9087/

It looks like if family is < 15 the cpu doesn't support SSE2.

-Jeff

Jeff Muizelaar

unread,
Dec 3, 2009, 11:28:23 AM12/3/09
to Jeff Muizelaar, L. David Baron, dev-pl...@lists.mozilla.org, sayrer

On 3-Dec-09, at 11:14 AM, Jeff Muizelaar wrote:

>
> On 2-Dec-09, at 9:16 PM, L. David Baron wrote:
>
>> On Wednesday 2009-12-02 15:31 -0800, sayrer wrote:

>>> I think this is a reasonable requirement for releases after Firefox
>>> 3.6.
>>

>> Do we know how many of our users are running on CPUs without SSE2?
>>
>> If we knew how to map "GenuineIntel family 6 model 15 stepping 6" to
>> whether a CPU supports SSE2, we could figure out rough numbers from
>> crash data, which has that part of the CPUID information. I haven't
>> found a good source for that mapping.
>
> There's a table here:
>
> http://www.codeguru.com/cpp/w-p/system/hardwareinformation/article.php/c9087/
>
> It looks like if family is < 15 the cpu doesn't support SSE2.


It actually looks like the Intel mapping is more complex than what's
stated on the page above.

Intel Family 6 model 9 has SSE2 as does any family 6 model greater
than 11.

This page has the details: http://en.wikipedia.org/wiki/List_of_Intel_microprocessors

From an extremely small sample of crashes:

GenuineIntel family 6 model 14 stepping 8
AuthenticAMD family 17 model 3 stepping 1
GenuineIntel family 15 model 3 stepping 4
AuthenticAMD family 15 model 107 stepping 2
AuthenticAMD family 6 model 10 stepping 0 ** this one doesn't
support SSE2


GenuineIntel family 6 model 15 stepping 6

GenuineIntel family 6 model 14 stepping 12
GenuineIntel family 6 model 15 stepping 7
GenuineIntel family 6 model 15 stepping 13

This gives 1/9. It will be interesting to see how the numbers work out
on a larger sample size.

-Jeff

Axel Hecht

unread,
Dec 3, 2009, 12:41:27 PM12/3/09
to

I wonder if the messaging guys could get some info on the hardware
portfolio that some of their installations have.

Axel

Robert Strong

unread,
Dec 3, 2009, 12:59:22 PM12/3/09
to dev-pl...@lists.mozilla.org
On 12/3/2009 7:05 AM, Mike Beltzner wrote:
> On 2009-12-03, at 9:56 AM, sayrer wrote:
>
>
>> Another option is to support two kinds of Intel Windows/Linux builds,
>> and detect them with the installer. Yes, yet another platform. :)
>>
> IDIC, baby. Spock knew it all along.
>
> I think we're going to have to get there anyways, as compiler optimized builds will help us a bunch, I'd expect, and our competitors (well, Safari, anyway) is already sort of going that route AIUI. It'll rely on us building an installer that works more like Chrome's (downloadable stub that does client side detection and then fetches the right packages) which again, we've always wanted and Rob Strong has been working towards. It will also require some good up-front thinking about what it means for QA strategies, client side crash reporting, etc.
>
Definitely... we would also need an additional mar for the different end
result installations and would likely want the ability to have both
available in a single installer for deployments. It would be *nice* to
also distribute Win32 64 bit builds in the same way sometime. The Linux
builds don't have an installer and would most likely just be different
tar's and distros should be able to make these available using whatever
package manager they use if they aren't doing this already.

Robert

L. David Baron

unread,
Dec 3, 2009, 1:01:35 PM12/3/09
to Jeff Muizelaar, dev-pl...@lists.mozilla.org, sayrer
On Thursday 2009-12-03 11:28 -0500, Jeff Muizelaar wrote:
> On 3-Dec-09, at 11:14 AM, Jeff Muizelaar wrote:
> >It looks like if family is < 15 the cpu doesn't support SSE2.
>
> It actually looks like the Intel mapping is more complex than what's
> stated on the page above.
>
> Intel Family 6 model 9 has SSE2 as does any family 6 model greater
> than 11.
>
> This page has the details: http://en.wikipedia.org/wiki/List_of_Intel_microprocessors

I'm assuming that by "greater than 11" you mean "not inclusive"
(though it's not a big difference: 404 in the sample below), though
I'm having trouble getting the family/model mappings out of that
page.

Below are data from a larger sample: all Firefox 3.5.5 crashes on
2009-09-29 (yes, it's two months old, but that shouldn't make a huge
difference). To shorten the data, I removed all the stepping
numbers.

Of these 113727 crashes, and assuming the family/model mapping that
Jeff gives also applies to AMD and to the other types listed below,
that means that of these:
3449 (no data)
16011 no SSE2 support
94267 SSE2 support

The vast majority of the chips with no SSE2 support (using Jeff's
mapping) are family 6 models 6, 7, 8, and 10.

-David

3449 (no data)
3 AuthenticAMD family 1 model 10
2 AuthenticAMD family 1 model 107
1 AuthenticAMD family 1 model 35
2 AuthenticAMD family 1 model 4
1 AuthenticAMD family 1 model 47
1 AuthenticAMD family 1 model 72
1 AuthenticAMD family 1 model 75
8 AuthenticAMD family 1 model 8
1535 AuthenticAMD family 15 model 104
3714 AuthenticAMD family 15 model 107
4 AuthenticAMD family 15 model 11
513 AuthenticAMD family 15 model 12
54 AuthenticAMD family 15 model 124
608 AuthenticAMD family 15 model 127
4 AuthenticAMD family 15 model 14
76 AuthenticAMD family 15 model 15
1 AuthenticAMD family 15 model 235
237 AuthenticAMD family 15 model 28
176 AuthenticAMD family 15 model 31
2 AuthenticAMD family 15 model 33
252 AuthenticAMD family 15 model 35
354 AuthenticAMD family 15 model 36
3 AuthenticAMD family 15 model 37
172 AuthenticAMD family 15 model 39
305 AuthenticAMD family 15 model 4
286 AuthenticAMD family 15 model 43
1716 AuthenticAMD family 15 model 44
1503 AuthenticAMD family 15 model 47
74 AuthenticAMD family 15 model 55
32 AuthenticAMD family 15 model 63
1 AuthenticAMD family 15 model 65
1102 AuthenticAMD family 15 model 67
35 AuthenticAMD family 15 model 7
673 AuthenticAMD family 15 model 72
1412 AuthenticAMD family 15 model 75
359 AuthenticAMD family 15 model 76
661 AuthenticAMD family 15 model 79
8 AuthenticAMD family 15 model 8
2 AuthenticAMD family 15 model 91
680 AuthenticAMD family 15 model 95
1155 AuthenticAMD family 16 model 2
249 AuthenticAMD family 16 model 4
7 AuthenticAMD family 16 model 5
98 AuthenticAMD family 16 model 6
1256 AuthenticAMD family 17 model 3
1 AuthenticAMD family 5 model 2
1 AuthenticAMD family 5 model 7
44 AuthenticAMD family 5 model 8
1 AuthenticAMD family 5 model 9
19 AuthenticAMD family 6 model 1
2261 AuthenticAMD family 6 model 10
28 AuthenticAMD family 6 model 2
160 AuthenticAMD family 6 model 3
310 AuthenticAMD family 6 model 4
921 AuthenticAMD family 6 model 6
327 AuthenticAMD family 6 model 7
3400 AuthenticAMD family 6 model 8
1 CentaurHauls family 1 model 7
32 CentaurHauls family 6 model 10
52 CentaurHauls family 6 model 13
7 CentaurHauls family 6 model 15
4 CentaurHauls family 6 model 6
46 CentaurHauls family 6 model 7
2 CentaurHauls family 6 model 8
18 CentaurHauls family 6 model 9
3 GenuineIntel family 10 model 14
36 GenuineIntel family 10 model 15
1 GenuineIntel family 10 model 22
9 GenuineIntel family 10 model 23
3 GenuineIntel family 10 model 28
4 GenuineIntel family 13 model 23
218 GenuineIntel family 15 model 0
1654 GenuineIntel family 15 model 1
1 GenuineIntel family 15 model 15
8028 GenuineIntel family 15 model 2
2610 GenuineIntel family 15 model 3
10453 GenuineIntel family 15 model 4
3167 GenuineIntel family 15 model 6
1 GenuineIntel family 2 model 1
3 GenuineIntel family 2 model 11
7 GenuineIntel family 2 model 13
12 GenuineIntel family 2 model 2
1 GenuineIntel family 2 model 7
2 GenuineIntel family 2 model 8
2 GenuineIntel family 3 model 4
1 GenuineIntel family 3 model 6
2 GenuineIntel family 5 model 3
8 GenuineIntel family 5 model 4
1 GenuineIntel family 6 model 1
76 GenuineIntel family 6 model 10
404 GenuineIntel family 6 model 11
15 GenuineIntel family 6 model 12
3050 GenuineIntel family 6 model 13
5804 GenuineIntel family 6 model 14
27329 GenuineIntel family 6 model 15
1361 GenuineIntel family 6 model 22
9578 GenuineIntel family 6 model 23
228 GenuineIntel family 6 model 26
845 GenuineIntel family 6 model 28
12 GenuineIntel family 6 model 3
14 GenuineIntel family 6 model 30
76 GenuineIntel family 6 model 5
119 GenuineIntel family 6 model 6
6501 GenuineIntel family 6 model 7
1204 GenuineIntel family 6 model 8
455 GenuineIntel family 6 model 9
3 GenuineTMx86 family 15 model 2
2 GenuineTMx86 family 5 model 4
2 GenuntelineI family 6 model 15

L. David Baron

unread,
Dec 3, 2009, 1:11:09 PM12/3/09
to dev-pl...@lists.mozilla.org
On Thursday 2009-12-03 10:01 -0800, L. David Baron wrote:
> Of these 113727 crashes, and assuming the family/model mapping that
> Jeff gives also applies to AMD and to the other types listed below,
> that means that of these:
> 3449 (no data)
> 16011 no SSE2 support
> 94267 SSE2 support

Oops, I realize I messed this up a bit by including Mac, for which
we already require SSE2 since no Intel Macs have shipped on non-SSE2
chips. I'll try running these numbers again later today for Windows
and Linux. (Note that the Windows crashes for 3.5.5 are more
throttled than the Mac and Linux crashes, so Mac is overrepresented
in that sample.)

(And I'm guessing my "(no data)" lines were actually the Mac/PPC
crashes.)

-David

L. David Baron

unread,
Dec 3, 2009, 1:32:40 PM12/3/09
to dev-pl...@lists.mozilla.org, Jeff Muizelaar
On Thursday 2009-12-03 10:11 -0800, L. David Baron wrote:
> On Thursday 2009-12-03 10:01 -0800, L. David Baron wrote:
> > Of these 113727 crashes, and assuming the family/model mapping that
> > Jeff gives also applies to AMD and to the other types listed below,
> > that means that of these:
> > 3449 (no data)
> > 16011 no SSE2 support
> > 94267 SSE2 support
>
> Oops, I realize I messed this up a bit by including Mac, for which
> we already require SSE2 since no Intel Macs have shipped on non-SSE2
> chips. I'll try running these numbers again later today for Windows
> and Linux. (Note that the Windows crashes for 3.5.5 are more
> throttled than the Mac and Linux crashes, so Mac is overrepresented
> in that sample.)

Full list below with OS and CPUID fields.

Given the knowledge that all Intel Macs have SSE2, I think Jeff's
mapping is wrong. (Some of these, e.g., the AuthenticAMD ones, are
probably people running MacOS on non-Apple hardware. But I think
it's pretty clear that family 6 model 7 is something Apple shipped.)

So I'll leave this to others to analyze once we know the right
mapping.

-David

1
3 Linux AuthenticAMD family 1 model 10
2 Linux AuthenticAMD family 1 model 107
1 Linux AuthenticAMD family 1 model 35
2 Linux AuthenticAMD family 1 model 4
1 Linux AuthenticAMD family 1 model 47
1 Linux AuthenticAMD family 1 model 72
1 Linux AuthenticAMD family 1 model 75
8 Linux AuthenticAMD family 1 model 8
1 Linux AuthenticAMD family 5 model 2
1 Linux CentaurHauls family 1 model 7
3 Linux GenuineIntel family 10 model 14
36 Linux GenuineIntel family 10 model 15
1 Linux GenuineIntel family 10 model 22
9 Linux GenuineIntel family 10 model 23
3 Linux GenuineIntel family 10 model 28
4 Linux GenuineIntel family 13 model 23
1 Linux GenuineIntel family 2 model 1
3 Linux GenuineIntel family 2 model 11
7 Linux GenuineIntel family 2 model 13
12 Linux GenuineIntel family 2 model 2
1 Linux GenuineIntel family 2 model 7
2 Linux GenuineIntel family 2 model 8
2 Linux GenuineIntel family 3 model 4
1 Linux GenuineIntel family 3 model 6
2 Linux GenuineIntel family 5 model 3
8 Linux GenuineIntel family 5 model 4
3 Linux GenuineIntel family 6 model 6
3448 Mac OS X
4 Mac OS X AuthenticAMD family 15 model 11
1 Mac OS X GenuineIntel family 15 model 1
1 Mac OS X GenuineIntel family 15 model 15
4 Mac OS X GenuineIntel family 15 model 2
1 Mac OS X GenuineIntel family 15 model 3
6 Mac OS X GenuineIntel family 15 model 4
76 Mac OS X GenuineIntel family 6 model 10
15 Mac OS X GenuineIntel family 6 model 12
4 Mac OS X GenuineIntel family 6 model 13
2139 Mac OS X GenuineIntel family 6 model 14
6497 Mac OS X GenuineIntel family 6 model 15
2 Mac OS X GenuineIntel family 6 model 6
6312 Mac OS X GenuineIntel family 6 model 7
3 Windows AuthenticAMD family 15 model 44
1 Windows AuthenticAMD family 15 model 75
1 Windows AuthenticAMD family 6 model 8
1 Windows GenuineIntel family 15 model 4
2 Windows GenuineIntel family 6 model 15
1 Windows GenuineIntel family 6 model 23
1535 Windows NT AuthenticAMD family 15 model 104
3714 Windows NT AuthenticAMD family 15 model 107
513 Windows NT AuthenticAMD family 15 model 12
54 Windows NT AuthenticAMD family 15 model 124
608 Windows NT AuthenticAMD family 15 model 127
4 Windows NT AuthenticAMD family 15 model 14
76 Windows NT AuthenticAMD family 15 model 15
1 Windows NT AuthenticAMD family 15 model 235
237 Windows NT AuthenticAMD family 15 model 28
176 Windows NT AuthenticAMD family 15 model 31
2 Windows NT AuthenticAMD family 15 model 33
252 Windows NT AuthenticAMD family 15 model 35
354 Windows NT AuthenticAMD family 15 model 36
3 Windows NT AuthenticAMD family 15 model 37
172 Windows NT AuthenticAMD family 15 model 39
305 Windows NT AuthenticAMD family 15 model 4
286 Windows NT AuthenticAMD family 15 model 43
1713 Windows NT AuthenticAMD family 15 model 44
1503 Windows NT AuthenticAMD family 15 model 47
74 Windows NT AuthenticAMD family 15 model 55
32 Windows NT AuthenticAMD family 15 model 63
1 Windows NT AuthenticAMD family 15 model 65
1102 Windows NT AuthenticAMD family 15 model 67
35 Windows NT AuthenticAMD family 15 model 7
673 Windows NT AuthenticAMD family 15 model 72
1411 Windows NT AuthenticAMD family 15 model 75
359 Windows NT AuthenticAMD family 15 model 76
661 Windows NT AuthenticAMD family 15 model 79
8 Windows NT AuthenticAMD family 15 model 8
2 Windows NT AuthenticAMD family 15 model 91
680 Windows NT AuthenticAMD family 15 model 95
1155 Windows NT AuthenticAMD family 16 model 2
249 Windows NT AuthenticAMD family 16 model 4
7 Windows NT AuthenticAMD family 16 model 5
98 Windows NT AuthenticAMD family 16 model 6
1256 Windows NT AuthenticAMD family 17 model 3
1 Windows NT AuthenticAMD family 5 model 7
44 Windows NT AuthenticAMD family 5 model 8
1 Windows NT AuthenticAMD family 5 model 9
19 Windows NT AuthenticAMD family 6 model 1
2261 Windows NT AuthenticAMD family 6 model 10
28 Windows NT AuthenticAMD family 6 model 2
160 Windows NT AuthenticAMD family 6 model 3
310 Windows NT AuthenticAMD family 6 model 4
921 Windows NT AuthenticAMD family 6 model 6
327 Windows NT AuthenticAMD family 6 model 7
3399 Windows NT AuthenticAMD family 6 model 8
32 Windows NT CentaurHauls family 6 model 10
52 Windows NT CentaurHauls family 6 model 13
7 Windows NT CentaurHauls family 6 model 15
4 Windows NT CentaurHauls family 6 model 6
46 Windows NT CentaurHauls family 6 model 7
2 Windows NT CentaurHauls family 6 model 8
18 Windows NT CentaurHauls family 6 model 9
218 Windows NT GenuineIntel family 15 model 0
1653 Windows NT GenuineIntel family 15 model 1
8024 Windows NT GenuineIntel family 15 model 2
2609 Windows NT GenuineIntel family 15 model 3
10446 Windows NT GenuineIntel family 15 model 4
3167 Windows NT GenuineIntel family 15 model 6
1 Windows NT GenuineIntel family 6 model 1
404 Windows NT GenuineIntel family 6 model 11
3046 Windows NT GenuineIntel family 6 model 13
3665 Windows NT GenuineIntel family 6 model 14
20830 Windows NT GenuineIntel family 6 model 15
1361 Windows NT GenuineIntel family 6 model 22
9577 Windows NT GenuineIntel family 6 model 23
228 Windows NT GenuineIntel family 6 model 26
845 Windows NT GenuineIntel family 6 model 28
12 Windows NT GenuineIntel family 6 model 3
14 Windows NT GenuineIntel family 6 model 30
76 Windows NT GenuineIntel family 6 model 5
114 Windows NT GenuineIntel family 6 model 6
189 Windows NT GenuineIntel family 6 model 7
1204 Windows NT GenuineIntel family 6 model 8
455 Windows NT GenuineIntel family 6 model 9
3 Windows NT GenuineTMx86 family 15 model 2
2 Windows NT GenuineTMx86 family 5 model 4
2 Windows NT GenuntelineI family 6 model 15

David Ascher

unread,
Dec 3, 2009, 1:51:44 PM12/3/09
to Axel Hecht, dev-pl...@lists.mozilla.org
On 12/3/09 9:41 AM, Axel Hecht wrote:
> I wonder if the messaging guys could get some info on the hardware
> portfolio that some of their installations have.

I don't, but even if I did, I don't think it makes sense to let
extremely conservative users (government installations for example)
drive the hardware requirements of the ultimate mass-market product.
It'd be an even more biased sample than gamers.

(I wonder if Flash might have stats on chipsets used by ad-watchers...)

--david

Jeff Muizelaar

unread,
Dec 3, 2009, 2:17:04 PM12/3/09
to L. David Baron, dev-pl...@lists.mozilla.org

On 3-Dec-09, at 1:32 PM, L. David Baron wrote:

> On Thursday 2009-12-03 10:11 -0800, L. David Baron wrote:
>> On Thursday 2009-12-03 10:01 -0800, L. David Baron wrote:
>>> Of these 113727 crashes, and assuming the family/model mapping that
>>> Jeff gives also applies to AMD and to the other types listed below,
>>> that means that of these:
>>> 3449 (no data)
>>> 16011 no SSE2 support
>>> 94267 SSE2 support
>>
>> Oops, I realize I messed this up a bit by including Mac, for which
>> we already require SSE2 since no Intel Macs have shipped on non-SSE2
>> chips. I'll try running these numbers again later today for Windows
>> and Linux. (Note that the Windows crashes for 3.5.5 are more
>> throttled than the Mac and Linux crashes, so Mac is overrepresented
>> in that sample.)
>
> Full list below with OS and CPUID fields.
>
> Given the knowledge that all Intel Macs have SSE2, I think Jeff's
> mapping is wrong. (Some of these, e.g., the AuthenticAMD ones, are
> probably people running MacOS on non-Apple hardware. But I think
> it's pretty clear that family 6 model 7 is something Apple shipped.)

It looks like the cause of Family 6 model 7 on OS X is a bug in the
crashreporter on OS X.

It does:
info_ptr->processor_revision =
(info_ptr->cpu.x86_cpu_info.version_information & 0xF) |
((info_ptr->cpu.x86_cpu_info.version_information & 0xF0) << 4);

This ignores the extended model number.

It should be doing something like:
info_ptr->processor_revision =
(info_ptr->cpu.x86_cpu_info.version_information & 0xF) |
((info_ptr->cpu.x86_cpu_info.version_information & 0xF0) <<
4) |
((info_ptr->cpu.x86_cpu_info.version_information & 0xF00) >>
4);

You'll notice that none of the OS X model numbers go above 15, where
as there are many on Windows that do.

-Jeff

Nicholas Nethercote

unread,
Dec 3, 2009, 8:52:36 PM12/3/09
to Mike Beltzner, dev-pl...@lists.mozilla.org
On Thu, Dec 3, 2009 at 2:09 PM, Mike Beltzner <belt...@mozilla.com> wrote:
> On 12/2/2009 6:31 PM, sayrer wrote:
>>
>> I think this is a reasonable requirement for releases after Firefox
>> 3.6.
>
> First off, I'm assuming that you're speaking about requirements for
> Tracemonkey's JIT; would this also be a requirement for NanoJIT? Do ARM
> architectures get a pass?

I (very informally) asked the Adobe Nanojit guys recently about this,
they said they need non-SSE support in Nanojit for a while yet. It's
controlled in Nanojit via a run-time option.

Nick

Felix Miata

unread,
Dec 5, 2009, 1:00:13 AM12/5/09
to
On 2009/12/03 11:28 (GMT-0500) Jeff Muizelaar composed:

> From an extremely small sample of crashes:

> GenuineIntel family 6 model 14 stepping 8
> AuthenticAMD family 17 model 3 stepping 1
> GenuineIntel family 15 model 3 stepping 4
> AuthenticAMD family 15 model 107 stepping 2
> AuthenticAMD family 6 model 10 stepping 0 ** this one doesn't
> support SSE2
> GenuineIntel family 6 model 15 stepping 6
> GenuineIntel family 6 model 14 stepping 12
> GenuineIntel family 6 model 15 stepping 7
> GenuineIntel family 6 model 15 stepping 13

> This gives 1/9. It will be interesting to see how the numbers work out
> on a larger sample size.

I have 30 working x86 machines, of which only 7 support sse2. Old Athlon XP,
PII & PIII systems are perfectly good systems for people who are happy to be
able to:

1-email
2-shop
3-read
4-bank
5-invest
6-chat
7-telephone
8-view shared pictures
9-create/share documents
10-FAX

Those who do well with hand-me-down and otherwise old but working machines
shouldn't be penalized or denied by blingoholics' need for nth degree of
speed. Two different optimization branches make best sense to me, and the
slower ought to be able to run on Pentium and K6/2 class systems that are
adequate for users' offline and less demanding online activities.

Think green. Don't force systems into landfills any sooner than necessary.
--
" We have no government armed with power capable of
contending with human passions unbridled by morality and
religion." John Adams, 2nd US President

Team OS/2 ** Reg. Linux User #211409

Felix Miata *** http://fm.no-ip.com/

Robert O'Callahan

unread,
Dec 5, 2009, 6:02:15 AM12/5/09
to
On 3/12/09 7:10 PM, Mike Beltzner wrote:
> Overall, I suspect that if a machine is old enough to not have SSE2
> support, it may already be the case that Firefox 3.5 performs poorly on
> it.

I don't see how that's relevant.

Running an obsolete browser version on such hardware is not an option,
you'll get owned. So are you suggesting that users must simply upgrade
their hardware or stop using the Internet?

Rob

Mike Beltzner

unread,
Dec 5, 2009, 9:04:08 AM12/5/09
to Robert O'Callahan, dev-pl...@lists.mozilla.org
On 2009-12-05, at 6:02 AM, Robert O'Callahan wrote:

> Running an obsolete browser version on such hardware is not an option, you'll get owned. So are you suggesting that users must simply upgrade their hardware or stop using the Internet?

I suppose that's one interpretation, and if you believe that's what we're saying when we raise the minimum requirements for our software, I must point out that we have done so several times already. To date we've raised the minimum operating system requirements (Windows 2000 or better, OSX 10.4 or better) for our supported branches, suggesting that users must simply upgrade their operating systems or stop using the Internet. Those operating system upgrades themselves may require users to purchase new systems. For example, OSX 10.4 will not run on slower G4 or G3 processors.

What I was actually suggesting, though, was that if we're reaching the point where our current software doesn't perform well on machines with older CPUs, we may need to raise our minimum system requirements such that the question of SSE2 becomes moot. That has been shown to be false (thanks to people who've answered the question, stating that older CPUs are running Firefox 3.5 quite well thxverymuch) so the suggestion is withdrawn.

cheers,
mike

James Cloos

unread,
Dec 6, 2009, 11:06:17 AM12/6/09
to
sayrer <say...@gmail.com> writes:

> I think this is a reasonable requirement for releases after Firefox 3.6.
>

> Does anyone disagree?

In addition to the laptop I'm using to write this, I know of several
boxen in current use for non-compute-intensive apps like email and
web surfing which lack sse2.

I compile locally, so only need compile-time support for older chips,
but really the best choice for the binary distributions is to do run-
time cpu detection.

Liboil would be a good example of how to do the runtime detection, and
is distributed under a BSD-style license, so there would be no reason
not to base moz's runtime detection on oil's.


-JimC
--
James Cloos <cl...@jhcloos.com> OpenPGP: 1024D/ED7DAEA6

Steven Roussey

unread,
Dec 18, 2009, 12:21:16 PM12/18/09
to
> What I was actually suggesting, though, was that if we're reaching the point where our current software doesn't perform well on machines with older CPUs, we may need to raise our minimum system requirements such that the question of SSE2 becomes moot. That has been shown to be false (thanks to people who've answered the question, stating that older CPUs are running Firefox 3.5 quite well thxverymuch) so the suggestion is withdrawn.
>

When Mozilla starts a regular distribution of 64-bit Firefox, you will
instantly be able to use CPU features of the last decade in that build
(perhaps SSE3 or SSE4 could be a base?). It could provide a stopgap
way to release an optimized build before a stub installer/optimized
build download setup. I'd be interested in the benchmarks.

-steve--

Quan

unread,
Dec 19, 2009, 7:16:15 AM12/19/09
to
On Dec 18, 6:21 pm, Steven Roussey <srous...@gmail.com> wrote:
> When Mozilla starts a regular distribution of 64-bit Firefox, you will
> instantly be able to use CPU features of the last decade in that build
> (perhaps SSE3 or SSE4 could be a base?). It could provide a stopgap
> way to release an optimized build before a stub installer/optimized
> build download setup. I'd be interested in the benchmarks.
>
> -steve--

The first Athlon 64 CPUs didn't have SSE3 and today SSE4 isn't
particularly widespread all the 64 bit CPUs out there. Obviously
optional code with fallbacks is fine, but it'll be a long long time
before you can start requiring people with the AMD64 instruction set
to also have SSE3 or SSE4

Nicholas Nethercote

unread,
Dec 19, 2009, 9:28:51 PM12/19/09
to Quan, dev-pl...@lists.mozilla.org
On Sat, Dec 19, 2009 at 11:16 PM, Quan <zur...@gmail.com> wrote:
> On Dec 18, 6:21 pm, Steven Roussey <srous...@gmail.com> wrote:
>> When Mozilla starts a regular distribution of 64-bit Firefox, you will
>> instantly be able to use CPU features of the last decade in that build
>> (perhaps SSE3 or SSE4 could be a base?).
>
> The first Athlon 64 CPUs didn't have SSE3 and today SSE4 isn't
> particularly widespread all the 64 bit CPUs out there. Obviously
> optional code with fallbacks is fine, but it'll be a long long time
> before you can start requiring people with the AMD64 instruction set
> to also have SSE3 or SSE4

On i386, SSE2 gives you eight XMM registers so you don't have to use
the x87 FP stack. On x86-64 you always have 16 XMM registers.
Nobody's talking about SSE3 or SSE4, let's not get off-track.

Nick

Ben Bucksch

unread,
Dec 22, 2009, 9:03:22 AM12/22/09
to
On 09.12.2009 10:40, Jean-Marc Desperrier wrote:

> Marco Bonardo wrote:
>> The only interesting CPU category i don't see here is Athlon XP series
>
> Confirming. Only SSE on those, definitively no SSE2.

If anything below Athlon64 can't use SSE2, I think it's still several
years (read 3-5 years) until you can require SSE2.

Athlon64 was introduced as top-of-the line ~3.5 years ago, which means
computers with Athlons < 64 were still sold 2-3 years ago, which means
they are still in widespread use.

I also see people using much older computers, 5-8 years old, for
secondary machines, including browsing. We can't leave these in the
cold. Esp. given that we'll stop security updates for 3.6 in 1-2 years.
Reuse of old computers is a good thing (unless they are P4s) which helps
the environment and third world countries. We should encourage that
instead of preventing that.

I think it'd be a good idea to ship 2 modules, one with and one without
SSE2, though.

Ben

Ben Bucksch

unread,
Dec 22, 2009, 9:10:44 AM12/22/09
to
On 03.12.2009 16:05, Mike Beltzner wrote:
> It'll rely on us building an installer that works more like Chrome's (downloadable stub

We've had that in the early Netscape days. We stopped using it, for good
reason. Many people hate that. They want to save the file they
downloaded and install it on several computers or re-install it later.

> Your approach (making the optimization changes on trunk for a nightly, switching it on and observing the effects, then switching it off) seems like a sensible way of confirming the expected benefits, for sure.

If you go that route, please make sure it's at least an 10% perf win
across the board (not just spikes).

Ben Bucksch

unread,
Dec 22, 2009, 9:25:51 AM12/22/09
to
On 18.12.2009 18:21, Steven Roussey wrote:
> When Mozilla starts a regular distribution of 64-bit Firefox, you will
> instantly be able to use CPU features of the last decade in that build
> (perhaps SSE3 or SSE4 could be a base?). It could provide a stopgap
> way to release an optimized build before a stub installer/optimized
> build download setup.

That's a nice idea. "64bit" is also something users can more likely
understand than "has SSE2". And it might be detectable in the UserAgent
string, which means you can make the download page detect it.

Ben

0 new messages