Archive

Posts Tagged ‘Intel x86’

End-user Pentium and SIMM prices in the 1990s

People buy a computer today because they have a problem that needs to be solved today, or in the near future. If today’s computer is good enough to solve today’s problem, then any expectation of the next generation being substantially faster is irrelevant.

If a cpu manufacturer (e.g., Intel) knows that the next generation, available in less than 18 months, is going to be substantially faster, how do they price the existing products over the months before and after the next generation is launched? Similarly, for memory chip manufacturing businesses (there used to be many) knowing that the next generation, in less than 18 months, is going to have twice the storage capacity, how the existing products be priced over the months before and after the next generation is launched?

During the 1990s desktop computers regularly became noticeably faster. Computers also regularly became faster in earlier decades, but early manufacturers built their own cpus, rather than selling them to others to integrate into a finished product. Yes, there were manufacturers selling cpus in the 1980s, but the market was fragmented, and any trends that might be present are obscured by market turbulence.

At the start of the 1990s, compiler messages appeared slowly enough that they could be read as they scrolled up the screen, but within a few years it was hard work spotting just a few words before the lines disappeared at the top of the screen. When working on a new machine for the first time, developers would be amazed at the rate compiler messages scrolled up the screen, but this rate quickly became the new normal.

During the 1990s, the performance of Intel’s x86 cpu family increased exponentially, and memory device capacity grew exponentially.

Manufacturer pricing data for cpu/memory chips in the 1990s is somewhat sporadic. However, end-user prices are listed in computer magazine adverts. The paper The economics of PC remanufacturing by G. Ferrer lists monthly end-user prices between August 1995 and January 1997, extracted from adverts in the British magazine Personal Computer World. I extracted prices for the same cpus/memories from the earlier/later editions available online. All monthly prices are averaged over all advertised prices found in each month’s edition.

The plot below shows monthly prices for Intel’s 80486DX2 and Pentium processors running at various clock rates; the extended straight lines are fitted exponential models (code+data):

Monthly average retail price of Pentium processors in the UK between 1995 and 1998.

When first released, higher performing cpus were sold at a premium price, which decreased (exponentially) at around 30% per year. Staying on the leading edge of computer performance required regularly paying premium prices to buy a new computer containing the latest cpu.

In the 1990s memory chips were packaged in SIMMs, of various form factors, which were superseded in the late 1990s by DIMMs, and then the DDR SDRAM we use today. The plot below shows the price of non-parity 72-pin SIMMs chips having a given capacity (code+data):

Monthly average retail price of memory in the UK between 1995 and 1998.

The decreases extend over a longer period than the cpu prices (presumably because people are adding more memory to older computers that are not being replaced).

The price changes could just as well have been plotted using a linear scale, as the exponential one used. In both cases there are distinct periods where the prices form a roughly decreasing line.

Why are manufacturers able to make such large reductions in the prices of the devices they sell?

Many semiconductor devices are fabricated on a large wafer. When the fabrication process for a particular device is new the yield may low, i.e., only a small percentage (perhaps 10%) of devices are functional. As production experience is gained the device yield increases and the production process is speeded up, i.e., more functional devices are produced for not much more cost.

There are two supplies for Pentiums, Intel and AMD, with Intel dominating, and having a large profit margin. There are many manufacturers of memory devices, it is a commodity market with slim profit margins.

An analysis of the extent to which profit margins and market structure influence pricing is outside my domain expertise.

Open source: monoculture is more desirable than portability

March 8, 2014 No comments

An oft repeated fable is that open source software is portable, all thanks to C and Unix. The reality is that open source lives in an environment that is evolving to become a monoculture that does not require portability, this is being driven by the law of the jungle.

First some background and history. Portability requires that source code have the same behavior on different platforms, or rather than programs built from that code have the same behavior, this requires that:

  • all compilers assign the same semantics to a given piece of code,
  • all operating systems include support the same set of libraries in the same way.

If you want portability across lots of compilers then Fortran has stood head and shoulders above the competition for decades. Now some C folk may point out that they have been compiling some large code base for decades, with few changes necessitated by compiler differences; yes this has been possible in certain niche markets where there is a dominant supplier who has a vested interest in not breaking customer code. C has a long history of widespread large variation in behavior of across compilers.

What about Cobol you ask? Cobol is all about data manipulation and unless you have data in the format expected by a Cobol program you have no need for that program. Nobody cares about portable Cobol programs unless they are also interested in portable data.

If you want portability across lots of operating systems the solution has always been to minimise the dependency on system/third-party library calls (to the extent of including source code for functionality often supported by an OS). The reason for minimising OS dependency is the huge variation in support for different libraries and a wide range of behaviors for supposedly the same functionality. But you say, Unix is an OS that did/does provide a common set of libraries that have the same behavior; no, this is history seen through rose tinted glasses as anyone who knows about the Unix wars will tell you.

In the last century, to experience ‘portability’ Unix developers had to live in a monoculture of either PDP-11s or Sun workstations.

Open source, as it existed in the 1970s, 80s and into the 90’s was Fortran code that ran on a surprisingly wide range of OS/cpu/compilers, along with a smattering of other languages. Back then there were not many software applications and when they did exist many were written in Fortran (Oracle being an early, lots of Fortran, example), this created a strong incentive for vendors to support a Fortran compiler that did things the same way as everybody else (which did not prevent them adding proprietary goodies to try and lure customers towards lock-in).

How did we get to today’s dominance of C and Unix? Easy, evolution at a rate that caused competitors to die out until there was a last man standing. That last man standing was gcc and Linux. The portability problem has been solved by removing the need to port code; it is compiled by the same compiler to run on the same cpu (Intel x86 family) to run under the same OS (Linux).

Of course some of today’s open source C is compiled using non-gcc compilers, but the percentage is small and specialised (a lot of the older code is portable because it used to exist in a multi-compiler/cpu/OS world and had to evolve into being portable). The gcc competitor, llvm, is working long and hard to ensure compatibility and somehow has to differentiate itself while being compatible, a tough fight for developer hearts and minds.

Differences in CPU characteristics are a big headache to any compiler writer wanting to support identical behavior across platforms; having a single cpu family as the market leader more or less solves this problem. ARM has become a major player in the CPU world, but it shares many developer visible characteristics with Intel x86 (e.g., 32-bit int, 64-bit long, pointer and ints are the same size and IEEE floating-point) and options are available for handling some of the other potential differences (e.g., right shift of signed integers).

The Unix wars have not gone away, they have moved to more far flung battlefields leaving behind some hard fought over common ground. Anybody who wants to see the scares left by these war only needs to look at the #ifs in system headers or the parameters selected inside .configure files.

Having everybody use the same compiler/cpu/OS saves having to make a huge time/money investment in making software portable, at least until the invention of photonic computers or the arrival of aliens (whose computers are unlikely to contain a CPU that shares Intel/ARM characteristics or have the same libraries as Linux).

C/Linux has not won in the sense that competitors have given up; in 20 years time the majority of open source in active use might be Javascript running inside a browser.

C compiler validation is 21 today!

September 1, 2011 2 comments

Today, 1 September 2011, is the 21th anniversary of the first formally validated C compilers. The three ‘equal first’ validated compilers were the Model Implementation C Checker from Knowledge Software, Topspeed C from JPI (run by the people who created Turbo Pascal) and the INMOS C compiler (derived from the Norcroft C compiler written by Alan Mycroft+others, the author of the longest response document seen during the review of the C89 draft standard).

Back in the day the British Standards Institution testing group run by John Souter were the world leaders in compiler validation and were very proactive in adding support for a new language. NIST, the equivalent US body, did not offer such a service until a few years later. Those companies in a position to have their compilers validated (i.e., the compiler passed the validation suite) were pressing BSI to be first; the ‘who is first’ issue was resolved by giving all certificates the same date (the actual validation process of a person from BSI, Neil Martin now Director of Test in the Winterop Team at Microsoft, turning up to ‘witness’ the compiler passing the tests happened several weeks earlier).

Testing C compilers was different from other language compilers in that sufficient demand existed to support commercial production and maintenance of test suites (the production of validation suites for previous language compilers had been government funded). After a review of the available test suites BSI chose to use the Plum Hall suite; after a similar review NIST chose to use the Perennial suite (I got involved in trying to figure out for NIST how well this suite covered the requirements contained in the C Standard).

For a while C compiler validation was big business (as in big fish, very small pond). But the compiler validation market is dependent on there being lots of compilers, which requires market fragmentation and to a lesser extent lots of different OSs and hardware platforms (each needing a separate validation). The 1990s saw market consolidation, gcc becoming good enough for commercial use and a shift of developer mind share to C++. Dwindling revenue resulted in BSI’s compiler validation group being shut down after a few years and NIST’s followed in 1998.

Is compiler validation relevant today? When the first C Standard was published a lot of compilers in common use had some significant behavioural differences compared to what the Standard specified. Over time these compilers have either disappeared or been upgraded (a potential customer once asked me the benefits I saw in them licensing the Knowledge Software front end and the reply to one of my responses, “you can tell your customers that the compiler is standard’s compliant”, was that this was not a benefit as they had been claiming this for years). Improvements in Intel’s x86 processor also had a hand in improving compiler Standard’s conformance; the various memory models used by the x86 processor was a huge headache for compiler writers whose products often behaved very differently under different memory models; the arrival of the Pentium with its flat 32-bit address space meant this issue disappeared over time.

These days I suspect that the major compilers targeting platforms where portability is expected (portability is often not a big expectation in the embedded world) are sufficiently compatible that developers are willing to overlook small differences with the Standard. Differences in third party libraries, GUIs and other frameworks have been the big headache for many years now.

Would the ‘platform portability’ compilers, that’s probably gcc, Microsoft, products using EDG’s front end, and perhaps llvm in the coming years, pass the latest version of the PlumHall and Perennial suites?

  • The gcc team do not have access to either company’s suite. The gcc regression tests are a poor substitute for a proper compiler validation suite (even though they cost many thousands of dollars commercial compiler writers often buy both companies products because they are good value for money as a testing resource {the Fortran 78 validation suite source gives some idea of how much work is actually involved). I would expect gcc to fail some of the tests but have no idea how many or serious the failures would be.
  • Microsoft have said they don’t have plans to support C99 (it took a lot of prodding to get them interested in formally validating against C90).
  • I think the llvm team are in the same position as gcc, but perhaps somebody at Apple has access to one or more of the commercial suites (I don’t know).
  • EDG are into standard’s conformance and I would expect them to pass both suites.

The certificate is printed on high quality, slightly yellow paper; the template wording is in a subdued gray ink while the customer information is in a very bold black ink. I don’t know whether this is to make life difficult for counterfeiters, but I could not get any half decent photographs and the color scanner had to be switched to black&white.

Validation was good for one year and I saw no worthwhile benefit in paying BSI £5,000 to renew for another year. Few people knew about the one year rule and I did not enlighten them. In the Ada compiler market the one year rule was a major problem, but lets leave that for another time.

Model Implementation C validation certificate.