PCSX2 / pcsx2

PCSX2 - The Playstation 2 Emulator
https://pcsx2.net
GNU General Public License v3.0
11.89k stars 1.63k forks source link

[Discussion] Dropping SSE4 support/mandating AVX2 #11382

Open stenzek opened 5 months ago

stenzek commented 5 months ago

I've created this as an issue instead of a discussion for visibility.

Based on internal discussion, some of us think it's time to drop SSE4 support from PCSX2. Reasons being:

I can't really think of many upsides to keeping it around. For Windows, I'd be surprised if many people are running Win10 on hardware that is both fast enough for PCSX2, and does not support AVX2, same for Linux. On the Mac side, our minimum is 11.0, which rules out anything without AVX2.

If you still think we should maintain SSE4 going forward, this is the place to make your case. FWIW, I'm not proposing dropping it yet, at the very least, it would be after the next release version is tagged, so there will always be that version to fall back to.

PS: This is less about 256-bit vectors, and more about the additional instructions added with AVX2, 3-arg form, etc. 256-bit vectors provide zero benefit for the majority of code, and NEON is only 128-bit for Apple Silicon anyway. Thus, an alternative could be maintaining multi-ISA support, but making AVX the minimum, instead of AVX2. That would keep compatibility with Intel Sandy/Ivy bridge, and AMD cat cores.

TheTechnician27 commented 5 months ago

I previously didn't going to weigh in on switching to AVX as a stopgap or directly upgrading to AVX2, but now that there seems to be a strong consensus for dropping SSE4 support (one which I agree with), I'll try giving a rough analysis on keeping AVX – again, to get everybody on roughly the same page. I'll be using similar criteria to before – wherein to qualify for consideration, a CPU needs to have a PassMark STR of at least 1500, AVX support but not AVX2 support, and at least either at least two physical cores with hyperthreading or four physical cores without.

AMD

Bulldozer (Q4 2011) introduced AVX support, and its successors, Piledriver and Steamroller, carry over AVX support while lacking AVX2 support. AVX2 was finally introduced in Excavator (Q2 2015), so any Excavator or Ryzen processors are excluded from this discussion. This almost assuredly misses some CPUs, as I have a poor understanding of early 2010s AMD products.

In addition to being extremely rare, I did not consider Opteron processors, as their benchmarks on PassMark (which feature a high margin for error due to how rare they are) do not even nearly approach 1500 for either Bulldozer or Piledriver.

Bulldozer

The highest-end Bulldozer CPU, the FX-8150, has a PassMark STR of 1428. Thus, there are no Bulldozer CPUs which satisfy PCSX2's minimum requirements today.

Piledriver

Desktop:

APUs:

Steamroller

Steamroller is exclusively APUs.

PRO APUs:

APUs:

Summary

This marks 18 AMD CPUs/APUs which currently meet the minimum requirements for PCSX2 and which would be excluded with a direct upgrade to AVX2. Included in these is the wildly popular FX-8350. Moreover, because AMD around this time was essentially the "budget" option, there is likely a sizeable portion of our userbase who have one of these AMD processors (especially the desktop ones) while lacking the funds to upgrade to a more modern CPU with AVX2 support. Finally, AMD's FX series were often good for overclocking, and because there were several AMD desktop CPUs that were relatively close to the cutoff, that likely means there are more FX CPUs that can be trivially overclocked to meet the requirements.

Zhaoxin

Like with SSE4, I do not believe there is a single Zhaoxin CPU in existence which supports AVX but not AVX2 and is even approximately powerful enough to meet PCSX2's minimum requirements. (AVX was introduced in 2015's ZX-C, and then the very next year, ZX-C+ introduced AVX2.)

Intel

As discussed in the previous analysis, no Celeron or Pentium processors apply here. They all either have SSE4 or AVX2 support. The two microarchitectures which have AVX but not AVX2 are Ivy Bridge and Sandy Bridge, and even without AMD, these would be enough to completely seal the deal for me. Haswell introduces AVX2, so any Haswell processors or later are excluded from this discussion.

I did not include Xeon CPUs due to a very high margin for error for most of them (generally rarer in benchmarks), but it is guaranteed that many of them (especially the Ivy Bridge ones) exceed the 1500 STR minimum. (At the highest end, the E7-8893 v4 is benchmarked at a STR of 2270 with three tests.)

Sandy Bridge

Desktop:

Mobile:

Ivy Bridge

Desktop (NOTE: This is every Ivy Bridge desktop CPU ever produced except the i3-3220T, at 1489):

Mobile:

Summary

By my count, this is 23 Sandy Bridge and 56 Ivy Bridge CPUs. I will add 15 Xeon processors as an extremely conservative estimate for a total of 89.

Overall

A highly conservative estimate shows that about 110 CPUs would be affected by axing AVX support (this would be a total of about 140 when combined with the dropping of SSE4 support). This spans two entire microarchitectures of both AMD and Intel. Many of these CPUs perform quite well on PCSX2 and/or would likely stand to considerably benefit from the sort of performance improvements that come with axing SSE4. Many of the CPUs examined both from AMD and Intel fell into the 1400s STR, and so a trivial overclock likely bumps dozens more up beyond 1500. Unlike desktop Pentiums from 2016 to 2019 which almost completely dominated the SSE4 analysis, these processors combined would have constituted a huge portion of the market when they were released.

Although it will take substantially more work to go from SSE4 to AVX to AVX2 rather than simply from SSE4 directly to AVX2, I strongly support deprecating SSE4 support but retaining AVX support for at least several years following the release of PCSX2 2.0.

demif1end commented 5 months ago

switching to AVX as a stopgap or directly upgrading to AVX2

(Feel free to correct me on any of this, I am looking at this from a very surface level)

I don't see particularly why either/or has to be supported exclusively. From what I can tell, since SSE4 would be dropped, the Multi-ISA would be able to be simplified heavily (at least for x86) because while SSE and AVX share the same goals (more or less) but are reasonably different in practice, AVX2 is simply a direct extension to AVX. That makes things a whole lot less complicated in theory, because things that AVX and AVX2 both would do the same (like most floating point ops?) could use the same code 1:1, but things that AVX2 could speed up could use it's own code, making it significantly easier to keep both maintained. I did not look far enough in to see if this was already the case (anything past P6 is terrifying to me, I'm so out of my element it's not even funny), and I'm not a developer on this project. I would like to have one weigh in on this aspect specifically though.

I concur that after a considerable amount of time passes it might be a good idea to drop AVX support so as to get rid of Multi-ISA or something of similar decomplication, but I don't think in practice that will ever be necessary until New Super Fun Extensions That Do Awesome Things come around.

stenzek commented 5 months ago

AVX2 is mainly integer ops being extended to 256-bit, which is useful for vertex tracing and SW rasterization, that's about it. However, it does include a few additional instructions that are useful for more "general" code, like per-lane variable shifts/blends. It'd be nice to assume the presence of these, but it's not that messy to have multiple paths here. Unlike SSE4, which is completely codegen for the recompilers.

Multi-ISA is still useful for AVX-512.

opusforlife2 commented 5 months ago

i5-3210M (1531)

I can't believe my poor ancient CPU clawed its way into that list, but since it has, I would really love for the team to keep AVX around. Pretty exciting to learn that games could run even faster with AVX!

but in regions with poor economies, probably quite high.

I can attest to this. It's only anecdotal, but there's still a large number of people around me who can only game on their old/family laptops/PCs.

Also, still no hard stats to back this up, but you can probably count a large share of Indian users of PCSX2 as potential losers if AVX is dropped, because unlike China, everything to do with PCs is quite expensive, despite being the most populous country, with a huge market.


Edit: Would someone mind pinning this issue for more visibility? I just happened to sort by updated and came across this.

Also, (off-topic, sorry): Is there anywhere I can keep track of the impending release? The 2.0 milestone was last updated 7 months ago, and is clearly not being used actively.

Edilzin commented 4 months ago

Hello, I'm brazilian and I'm a computer technician. I live in one of the 26 capitals of the country, it's a coastal city in the second poorest area of the country, the Northeast region. I studied at a public school and I am surrounded by poor people in a peripheral neighborhood.

Considering this, I can safely say: CPUs that don't support AVX2 are very rare around here. Don't worry, currently the poorest generation of Intel we can see here is Haswell (and it's very rare), that is, CPUs like the i5 4440, which suports AVX2. About AMD, I don't really know, I only got an AMD processor at the end of 2022 (my current Ryzen 5500). As an example, my poorest friend in my city has a Ryzen 3200G, which also supports AVX2. I don't see any AMD FX's here for years, maybe before the pandemic. Another example, my aunt has a small perfume store in a favela in the city of São Paulo and her Dell desktop computer in the store has a Coffee Lake CPU (8400).

Yes, we can see people with older computers here, but these people usually don't opt ​​for emulation. They simply prefer to buy a PS2 and install OPL on the console. If you ask me what generations are currently most popular here, I would say about Intel Core we still see from the eighth generation (8xxx) upwards, while AMD Ryzen we can see from the third generation (3xxx) upwards.

Cheers.

ImSpecial commented 4 months ago

I just want to say I still sport a i5-3570K which is SSE4 and AVX (according to intel), so am I understanding things correctly here that I'll be boned if AVX2 becomes the new minimum? I really hope that's not the case, is that the case?

(was it AVX or AVX2 that is becoming the new minimum?)

RedDevilus commented 4 months ago

I just want to say I still sport a i5-3570K which is SSE4 and AVX (according to intel), so am I understanding things correctly here that I'll be boned if AVX2 becomes the new minimum? I really hope that's not the case, is that the case?

(was it AVX or AVX2 that is becoming the new minimum?)

AVX aka dropping SSE4 (SSE2 was already dropped) is likely for the improvements but still old enough for the few who are around 3th gen Intel CPU and more, I would suggest re-reading the comment thread as it also lists what CPUs are enveloping them. AVX2 mandatory feels a bit too quick from the talks about it.

prietveld commented 4 months ago

I just spotted this conversation and would like to add that as I am still running an i7-975 (Nehalem), dropping SSE4 would make me a bit sad. While this CPU struggled somewhat with PCSX2 in it's early days, steadily following the emulator's progress through 1.7 it runs most games quite well now. So any future compatibility fixes would still be very well-received here.

I do realize though this is a very old CPU by now, but as it was the highest performer of it's line it still holds up surprisingly well with emulation and gaming in general (coupled with a modern GPU). Unfortunately, with it's unique socket and tripple channel memory design, upgrading means throwing out the whole thing.

seta-san commented 4 months ago

I just spotted this conversation and would like to add that as I am still running an i7-975 (Nehalem), dropping SSE4 would make me a bit sad. While this CPU struggled somewhat with PCSX2 in it's early days, steadily following the emulator's progress through 1.7 it runs most games quite well now. So any future compatibility fixes would still be very well-received here.

I do realize though this is a very old CPU by now, but as it was the highest performer of it's line it still holds up surprisingly well with emulation and gaming in general (coupled with a modern GPU). Unfortunately, with it's unique socket and tripple channel memory design, upgrading means throwing out the whole thing.

Finding a 4th generation i5 should be relatively cheap if that’s what you are looking for. Even if you have to stick at pcsx2 it is not such a curse. It’s over 99% compatible.

Valtekken commented 4 months ago

I just spotted this conversation and would like to add that as I am still running an i7-975 (Nehalem), dropping SSE4 would make me a bit sad. While this CPU struggled somewhat with PCSX2 in it's early days, steadily following the emulator's progress through 1.7 it runs most games quite well now. So any future compatibility fixes would still be very well-received here.

I do realize though this is a very old CPU by now, but as it was the highest performer of it's line it still holds up surprisingly well with emulation and gaming in general (coupled with a modern GPU). Unfortunately, with it's unique socket and triple channel memory design, upgrading means throwing out the whole thing.

Well, you'd still have 2.0.2. Compatibility is pretty good as it stands right now, so it wouldn't be a huge loss for you. Worst case scenario, assuming you need a specific game fix that has been pushed between now and the next stable, you could keep your losses at a minimum by selling your current platform (CPU+RAM+motherboard) and getting a newer one, keeping everything else the same. Can't cost you more than 300€/$350 all things considered.

nanitaro commented 3 months ago

Jasper Lake (without AVX support) was released in 2021. The Passmark STR for the N6005 is 1769. It can run PCSX2 properly. It would be a bad idea to exclude CPUs released only 3 years ago.

JordanTheToaster commented 3 months ago

It would be a bad idea to exclude CPUs released only 3 years ago.

Those are Atom CPUs the single core score is meaningless in this context as it will run terribly regardless.

nanitaro commented 3 months ago

The N6005 has four physical cores and is not a terrible operation. This is true. If it doesn't make sense, does it mean that the “System Requirements” are false? The fact is that it is not. It makes sense.

seta-san commented 3 months ago

The N6005 has four physical cores and is not a terrible operation. This is true. If it doesn't make sense, does it mean that the “System Requirements” are false? The fact is that it is not. It makes sense.

the system requirements aren't false. we are changing the system requirements that are going to leave jasperlake behind because keeping it will hold everyone else back. Jasperlake wasn't made for gaming. it was made for cheap, disposable laptops and tablets that are obsolete when they are new. but really, shame on intel for still making things without avx at that late date.

nanitaro commented 3 months ago

If the system requirements are not incorrect, there is no need to change them. Jasperlake can run the game. It can run at least PCSX2. It is shameful to insult Jasperlake by being factually incorrect.

seta-san commented 3 months ago

If the system requirements are not incorrect, there is no need to change them. Jasperlake can run the game. It can run at least PCSX2. It is shameful to insult Jasperlake by being factually incorrect.

you are thoroughly missing the point. the devs want to increase the requirements to at least avx, maybe even avx2 because it will allow them to make the emulator much faster and much more optimized. I'm sorry that you have a cheap laptop that will be left behind, you can get another new cheap laptop that does have avx if it means that much to you to keep getting updates. you will continue to get updates between now and when the system requirements increase which still might be a while. time and technology wait for no man.

nanitaro commented 3 months ago

The point is clear. It would be a bad idea to exclude CPUs released only 3 years ago. It means it is too early.

JordanTheToaster commented 3 months ago

The point is clear. It would be a bad idea to exclude CPUs released only 3 years ago. It means it is too early.

Atom cores will not run PCSX2 well regardless of what the "score" is that is the bottom line the age does not matter when the architecture of the core itself is not conducive to running PCSX2 well at all.

seta-san commented 3 months ago

The point is clear. It would be a bad idea to exclude CPUs released only 3 years ago. It means it is too early.

this was intel's mistake, not pcsx2's devs. intel makes money selling cheap junk cpus for cheap junk devices. if you have been following intel lately you would know that intel has been putting short term profits over long term business sustainability or customer satisfaction over the last few years.

sinisterseed commented 3 months ago

The point is clear. It would be a bad idea to exclude CPUs released only 3 years ago. It means it is too early.

this was intel's mistake, not pcsx2's devs. intel makes money selling cheap junk cpus for cheap junk devices. if you have been following intel lately you would know that intel has been putting short term profits over long term business sustainability or customer satisfaction over the last few years.

That would still be an understatement, to say the least.

Anyway, I'm surprised this is now causing drama. My previous 6th gen Intel i5 CPU could handle everything I've thrown at it in PCSX2. Why is it suddenly difficult to comprehend some hardware was just not made for gaming, regardless of age? New doesn't automatically also mean it's better or more suitable, especially for more intensive tasks...

nanitaro commented 3 months ago

Atom cores will not run PCSX2 well regardless of what the "score" is that is the bottom line the age does not matter when the architecture of the core itself is not conducive to running PCSX2 well at all.

This is a lie.

this was intel's mistake, not pcsx2's devs. intel makes money selling cheap junk cpus for cheap junk devices. if you have been following intel lately you would know that intel has been putting short term profits over long term business sustainability or customer satisfaction over the last few years.

If there is a mistake, it is trying to make AVX mandatory under false pretenses. Is this something you can't do without insulting Jasperlake?

seta-san commented 3 months ago

Atom cores will not run PCSX2 well regardless of what the "score" is that is the bottom line the age does not matter when the architecture of the core itself is not conducive to running PCSX2 well at all.

This is a lie.

this was intel's mistake, not pcsx2's devs. intel makes money selling cheap junk cpus for cheap junk devices. if you have been following intel lately you would know that intel has been putting short term profits over long term business sustainability or customer satisfaction over the last few years.

If there is a mistake, it is trying to make AVX mandatory under false pretenses. Is this something you can't do without insulting Jasperlake?

you speak about jasperlake like it's a dignified person with honor. It is not. It's a junk product made for sub-$200 chromebooks.

lightningterror commented 3 months ago

If there's a need to drop sse4 moving forward then it'll be done, but it's not a huge deal, older cpus can still use an current/older stable, tbh next stable will probably support sse4 still.

Anyway his discussion will be locked as it's becoming too heated.