Although I am primarily technically and scientifically oriented, I am also somewhat intrigued by human behaviour and social values. I have discussed such topics before, and I would like to revisit the ‘tech-savvy’ issue, in light of the recent AMD Bulldozer developments.
The Dunning-Kruger effect
I think the basis of it all can be found in what is known as the Dunning-Kruger effect. It basically means that people don’t know enough about a subject to realize how much they don’t know. As a result, they assume that others cannot know much more than them either. So they overestimate their own knowledge, and at the same time, they underestimate the knowledge of others.
Especially people from backward cultures, where authority and social hierarchy are over-valued (such as the USA) seem to have a lot of trouble behaving in a forum discussion. Namely, in a forum discussion, people are generally anonymous (or at least: people are strangers to one another), so there is no established social hierarchy. You don’t know what education other people have, what professional experience they have, or anything like that. Even if someone is an expert in their field (a legitimate authority in real life), they are often not acknowledged as such by others (because of the Dunning-Kruger effect). Since these communities are often global, even if you would try to explain what experience you have, it often does not mean much to others (they are not familiar with the universities and companies in your country. So unless you work for one of the few big multinationals, they are not likely to acknowledge your level of knowledge and experience. If they never heard of your university or company, it can’t be any good).
There is only one hierarchy on most online discussion platforms, and that is the hierarchy of the forum staff: its owners, administrators and moderators. People often mistake this hierarchy to also be representative of the level of knowledge. So people will generally assume that staff members are experts in their field, while in reality this is rarely the case. And as we know, power corrupts, so many staff members also overestimate their own knowledge, and are less likely to admit that they are wrong.
John Fruehe handily exploited this situation: By making himself known as an AMD employee, he knew that he would gather a level of ‘virtual authority’ with the community that few other forum users could ever hope to gain. This made discussing with Fruehe virtually impossible. You could point out flaws in his reasoning, or even blatant misinformation, but since people saw Fruehe as the authority, and not you, all they saw was someone ‘breaking the hierarchy’. This is something they will consider disrespectful, rude, or even arrogant, while in reality it is none of these things. It is just normal discussion: one person presents some arguments, the other counters those arguments. It is not disrespectful, it is critical thinking.
Opinion or fact?
I believe that a related issue is that as a result of ignorance, people cannot distinguish opinion from fact properly. Most people seem to think of a CPU as some sort of magic black box. As if there is no way to estimate the performance of a CPU until you actually have the CPU at hand and run some benchmarks on it. Clearly a CPU is not black magic at all. If you know enough about CPU architecture and (perhaps more importantly) performance of code at the instruction level, you can generally extrapolate the merits of a new architecture based on the basic information that the manufacturer discloses.
In the case of Bulldozer, a few things were obvious as soon as AMD disclosed the module approach and the configuration of the execution units per module. Namely, since the modules shared the L2 cache and some other logic, it was obvious from day 1 that the OS would need to do some architecture-specific scheduling to avoid potential performance pitfalls. This is nothing new, as Intel and Microsoft have been working on similar issues with HyperThreading since Windows XP. Another issue that was obvious was that each thread in a module could perform only 2 ALU instructions and only 2 AGU instructions per cycle at most. Other architectures can do 3 ALU or 3 AGU instructions per cycle, and although it is difficult to sustain a rate of 3 instructions per cycle, it is quite possible to average well over 2 ALU or AGU instructions per cycle. A Bulldozer core is physically incapable of ever doing that. So it will have lower performance in these situations, and it will need to compensate for that elsewhere. As I said at the time: AMD will need some ‘special sauce’.
I think an even better example is Barcelona: AMD claimed 40% better performance than any x86 chip, including Intel’s quadcores. AMD touted the native quadcore design as being a big factor in better performance. However, AMD did not specify a lot of other technical improvements over the previous Athlon64/X2 architecture. So how much can a native quadcore design really improve over Intel’s approach? You can simply look at the facts: a native quadcore design could theoretically have more efficient communication between cores, where the two dies of Intel’s approach need to go through a bus (in this case the FSB) to talk to eachother. Note the word ‘theoretically’: the first Pentium D (Smithfield) was also a ‘native’ dualcore, in the sense that it was a single die. Likewise, the Athlon X2 was a ‘native’ dualcore, but neither really took advantage of the native design, and as a result the core-to-core communication was about equal to a dual-socket system with two single-core CPUs (again, this is not opinion, but an observed fact, since the latency of core-to-core communication can be measured with tools such as cache2cache). Intel’s Core Duo and Core2 Duo are examples of CPUs that do take advantage of the native design: there is a single L2 cache that is shared between both cores, and the core-to-core communication is considerably faster than on other dualcore CPUs.
And how much does core-to-core communication even matter for real-world performance? Remarkably little actually. After all, traditionally the only multi-core CPUs have been multi-socket systems, which have generally had reasonably poor core-to-core communication. The CPU caches had to be synchronized via a bus, causing quite a bit of extra overhead. Since this generally performs so poorly, applications are generally designed to require as little synchronization between cores as possible, in order to get the most out of the multiple cores in the system (having the cores wait on eachother to synchronize defeats the purpose of having multiple cores). In fact, even though Core2 Duo has the most efficient core-to-core communication by far, it generally still is not enough to make algorithms with a lot of shared memory accesses between cores work efficiently. In general the same algorithms as on lesser systems are preferred.
And ofcourse this is assuming we are dealing with software that is optimized for multi-core in the first place. For single-threaded software, the native design is not going to contribute anything at all, since there is only one active core: there is no core-to-core communication at all.
So how would AMD get 40% better performance out of a native quadcore design? That’s just completely implausible. Again, AMD would need some ‘secret sauce’ to get 40% performance. They didn’t have that, and as a result, the native quadcore performed more or less the same as a dual-socket system with two dualcores (such as their Quad FX platform).
These aren’t opinions, these are logical conclusions based on technical facts and empirical evidence. But if people are too ignorant to understand the technical background and the logic in the conclusion, then THEY think it is an opinion. So they misjudge the discussion, and as such, they misjudge the person in the discussion. Namely, technical facts and empirical evidence are not to be refuted or cast aside, unlike something subjective such as an opinion. Hence you might find the person defending this objective information more strongly than he would a subjective standpoint.
People may see it as arrogant. Being arrogant is basically an attitude that boils down to: “My opinion is better than anyone else’s, I’m right”. You could say that it is the promotion of one’s subjective views to the status of objective and universally true. However, when you are merely defending some information that already is objective and known to be universally true, what does that have to do with arrogance? They are not your own views, they are facts. People other than yourself have already presented and proven these facts to be true, they are not your own. It’s in the same category as people thinking that the world is flat. There is scientific proof that the world is not flat, and you could try to explain it to people, but if they just don’t understand it (or don’t want to acknowledge it: cognitive dissonance), then what can you do? People seem too focused on their own ego anyway. They are more concerned about the fact that your explanation is basically an indication that they are not as smart as they thought they were. They experience it as a personal insult. At that point they no longer care about the discussion itself, let alone learning something new.
Is an opinion always valid?
Then there is the other side of the debate: someone may be giving their opinion on the matter, rather than trying to do a technical analysis based on facts. But, is such an opinion always valid? No, it isn’t. If we take a dictionary definition of the word ‘opinion‘:
a belief or judgment that rests on grounds insufficient to produce complete certainty.
Now, what if this belief or judgement does NOT ‘rest on grounds insufficient to produce complete certainty’? That is: what if information is presented that proves these grounds incorrect? Then there is certainty that the opinion can not be correct. In other words: the opinion is based on wrong assumptions and/or draws a logically incorrect conclusion. So the opinion is not valid. People have a right to their own opinion, and people have the right to be wrong. But what if an opinion is shown to be wrong? Then at the very least it is poor form in a technical discussion to insist on one’s opinion anyway, despite the evidence to the contrary. People should also have the decency to admit when they are wrong, and not hide behind their right to an opinion.