Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a437b5bb4fb911f8

Jump to content

Amdahl 580

From Wikipedia, the free encyclopedia
Amdahl 580
DeveloperAmdahl Corporation
ManufacturerAmdahl, Fujitsu, Hitachi
Product family
System/360
TypeMainframe computer
ReleasedNovember 1980; 45 years ago (1980-11)
Media
Memory16 MB – 128 MB (dynamic RAM)
PredecessorAmdahl 470V
SuccessorAmdahl Millenium

The Amdahl 580 was a family of large mainframe computers designed by Amdahl Corporation. Like the earlier Amdahl 470V, the 580 series was plug compatible with IBM's System/370 series machines, but offered higher performance at a lower cost. The line was officially announced in November 1980, following IBM's announcement of their own new high-end system, the IBM 3081. The 5860 was the base model, a single-processor unit that ran about 50% faster than the 3081, and was twice as fast as Amdahl's own former top-end 470V/8. The 5880 was their new top-end design, using two 5860 processors and running up to 3.5 times the speed of the 470V/8. The new machines were first shipped in August 1982.

As was the case with the 470, Amdahl started at the high end and then released new members of the 580 line to match every new entry in IBM's lineup as they were introduced. This resulted in the various members of the 470 series being replaced by 580's, and by 1985 the switchover was complete. Many additional models were introduced to fill particular niches, ultimately resulting in systems with up to four processors, as well as new hardware that allowed multiple 580's to be loosely clustered. The family ultimately included dozens of different models in four generations, the original 580s, the 5980s, the 5890E's and the final 5990s announced in 1989. The 5990s were the first S/360 family machine to break the 100 MIPS performance level.

Through the 1980s, the performance advantage of the ECL circuitry was being eroded by modern CMOS designs. IBM had begun moving its mainframes to CMOS processors in the late 1980s and this gave Amdahl a performance lead for a period as CMOS was fundamentally slower than ECL. The 5990s were about 50% faster than IBM's fastest offerings, and garnered strong sales despite high costs. But IBM's bet paid off, and by the early 1990s CMOS could offer increasingly competitive performance for a tiny fraction of the cost. As sales crashed, in late 1993 Amdahl announced its own move to CMOS, and replaced the 580 family in late 1996 with the Amdahl Millennium series.

History

[edit]

Amdahl forms

[edit]

In the 1960s, IBM bundled software and support contracts with their computers for an all-in-one price. Software companies complained that this made it almost impossible to sell software to IBM users when they often had a free alternative. A series of lawsuits led to a 1969 announcement that IBM would no longer bundle software and that they would now be sold and billed separately from the hardware.[1]

Gene Amdahl, known as the "father of the 360", had been working on the IBM Advanced Computer Systems project (ACS) in a new IBM facility in California. This project was becoming problematic and Amdahl was fighting with management right when the company announced the end of bundling. Amdahl realized this meant he could build a System/360 compatible computer and the customer could buy the operating system and other software from IBM. If IBM refused, they would be in violation of their anti-trust agreements. When the ACS project was shut down in May 1969, Amdahl began looking for investors to start a new company to produce a System/360 clone.[2]

US investors were extremely skeptical. They pointed to RCA's Spectra 70 series which was mostly 360 compatible, but had failed to gain much marketshare. Other companies like General Electric, Univac and Xerox were also struggling against IBM's powerful sales force, as much any technical or pricing issue. Amdahl's plans were saved only due to his long relationship with Fujitsu, eventually convincing them to invest $5 million. This led to a surprise investment for another $5 million from Nixdorf, and that in turn led to Fujitsu adding another $5 million to maintain their primacy. Fully capitalized, Amdahl Corporation was officially formed in 1970.[3]

470 concept

[edit]

The basic idea of the 470 family was to use then-modern large scale integration (LSI) to greatly reduce the size and power needs of an otherwise similar system using earlier chip designs. The System/370, announced shortly after Amdahl Corporation formed, used integrated circuits with about 35 transistors per chip. Amdahl was pushing for 100 per chip. They planned to install these in a five-by-five grid mounted to a circuit board that would allow them to mass produce the various larger logic units, as opposed to using wire wrap or similar techniques that were slower to produce and more expensive. Together, this would greatly reduce the cost of building the machines. It also had the added advantage that the resulting system was much smaller, and would use less power and produce much less heat, allowing it to be air-cooled. They would not have to greatly undercut IBM's prices, as the system as a whole would still have significantly lower total cost of ownership due to the smaller installation space, lower energy use, and the lack of water cooling that the high-end IBM systems required.[4]

This meant that selling just the CPU, where IBM made only a part of its income, could still be profitable. For this to work, IBM could not simply lower its price to match. But Amdahl felt IBM could not change their pricing because of a longstanding policy selling low, medium and high-end systems that offered a step up of three in performance for double the price. This offered customers a strong incentive to upsize. However, as IBM made most of its money on low-end systems, the price of those systems was fixed, and the price of the higher-end was simply a function of the low-end pricing. This led to low profits at the high end, which IBM felt was endemic to the market, they did not see it for what it really was, a side effect of their sales plans. If Amdahl introduced a lower-cost system at the high-end, and IBM chose to match it while maintaining their pricing structure, they would be forced to sell the lower end systems at lower prices points as well, losing profit on their cash cow systems. Amdahl was convinced they would not do this.[5]

The first member of the family, the 470V/6, was announced in 1974 and shipped the next year. For the entire year of 1976, the company managed to produce a profit margin of 30%, the same as IBM. IBM, who was previously convinced there was no way a company could be profitable selling just the CPU, suddenly realized their mistake. In March 1977 they announced a new series of systems, starting with the IBM 3033, which was aimed directly at the 470V/6 and outperformed it, but for higher costs and the water cooling requirements. Amdahl responded the same month by announcing their own series of machines that matched every other offering in the mid and lower-end parts of the 370 family, with the same advantages of slightly faster speeds and slightly lower prices. The next year they introduced a new high-end model, the V/8, that easily outperformed the 3033. By the early 1980s, the company held about 22% of the mainframe market share.[5]

Development and release

[edit]

The 1970s were a period of dramatic improvement in semiconductor manufacturing, and the Amdahl designs which had been leading-edge when introduced were now obsolete. Gene wanted to press ahead with a new design that would have reduced the number of circuit boards by a factor of seven, but the engineers in the company were much more conservative and wanted a simpler approach.[6] By this time, Fujitsu had largely assumed control of the company, and Gene became increasingly frustrated with their decisions, prompting him to leave in 1979 and form Trilogy Systems the next year.[7][a]

The new design, the 580 family, was more of an updated 470 than a radical redesign. The basic layout using air-cooled LSI ECL chips mounted on circuit boards remained, as opposed to larger single chips. What changed was primarily the density, with the newer ICs having many more transistors, 400 up from 100, and the circuit boards expanding to eleven-by-eleven layout from six-by-seven. The result of these changes was to further reduce the size of the machine, which in turn allowed it to run faster as the signal pathways became shorter.[9] Whereas the original V/6 ran at 32.5 ns, and the top-of-the-line V/8 at 26 ns, the 580 improved this slightly to 24 (~42 MHz). The same shrinking of the circuity allowed much more cache memory to be added, double that of the earlier machines, and newer dynamic RAM improved speeds from 320 ns in the V/8 to 280.[10]

But the most important change for performance was a more complex processor pipeline. In the 470s, each instruction required two machine cycles to complete, at a minimum. In the 580, that was reduced to a single cycle. This did not by itself double the performance, as the CPU often ended up waiting more cycles for data to arrive. However, the new pipeline, combined with the larger caches, faster memory, and faster channel controllers, roughly doubled the overall performance compared to the V/8.[10]

In November 1980, IBM announced two new models in the S/370 family, the new high-end IBM 3081, and the new mid-range 3033 Model S. The 3081 was about 1.5 times the speed of the 470V/8, the current high-end model from Amdahl, and priced more aggressively against it, a basic system being around $3,720,000 compared to $2,775,000 for the V/8. Amdahl responded on 18 November, less than a week after IBM's announcement, introducing the single-processor 5860 at $3,800,000 and the dual-processor 5880 at $7,500,000. The 5860 was roughly twice as fast as the V/8, easily outperforming the 3081. The 5880, essentially two 5860's running together, was 3.5 times as fast as the V/8, well over double that of the 3081. The 5860 could be upgraded in the field to a 5880 by adding another processor.[10]

All of these machines took some time to deliver. The first to ship was the 3081, in late 1982, followed by the 5860 in April 1982. By this time IBM had built up a large order book for the 3081 that they were unable to fill, prompting a number of customers to cancel their orders and move to the 5860 instead. The first 5880 did not ship until late in 1983. During this time, IBM continued to introduce new models in the 3081 line, and Amdahl would, as they had in the past, announce a competing design to fill the same price points, but with higher performance.[11]

Later models

[edit]

In October 1985, Amdahl announced a new lineup, the 5890 series, that used sub-model numbers. The primary difference was to improve the clock rate from 23.25 to 15 ns (43 to 67 MHz). The three machines were the 5890-200, -300 and -600, with the first two having two CPUs and differing largely in the amount of standard I/O channels, and the -600 having four processors. The -200 and -300 could be upgraded in the field to the -600. These were in turn replaced by the "E" models, announced in February 1987. The final evolution of the 580 series was the 5990, which moved to a 10 ns cycle (100 MHz) at 113 MIPS.[11][12] IBM responded with their own 600S at the slightly slower 102 MIPS in October.[13][b]

Amdahl also began to differentiate itself not on hardware, but increasingly with software. A significant feature during this period was their Multiple Domain Facility (sometimes Multiple Domain Feature), which had first been introduced with the V/8 in 1982. This allowed the operator to run completely different instances of the operating system on multi-processor systems. This facility was generalized over the years, including multiple "domains" per processor, and later, entirely different operating systems. This was particularly important when Amdahl announced their own UNIX System V, UTS Unix, which allowed operators to run their existing S/360 software in one domain and newer client/server Unix software in another.[15] This was enormously successful and forced IBM to announce their own version, PR/SM, in 1988.[16]

Replacement

[edit]

During this same period, IBM was taking a very different path on the hardware side, moving their entire mainframe lineup to CMOS processors. Instead of building systems designed to use only the very fastest components, these new systems ran slower, but aimed to ultimately beat the older designs as CMOS fabrication improved at rates that the ECL market simply could not match. At first, this meant IBM's newest mainframe models, the System/390, were incapable of keeping up with Amdahl's continuing speed bumps, but they were able to be sold at much lower price points. Through the late 1980s, Amdahl saw continued sales on the high end as a result, holding about 8 to 10% of the mainframe market.[11]

IBM's plans ultimately proved correct, as all of the companies in the space would soon realize.[9] For instance, Digital Equipment Corp spent billions of dollars developing a new high-end mainframe using ECL, the 30 to 40 MIPS VAX 9000, only to introduce a CMOS design the next year, NVAX, that offered about half the performance but for a tiny faction of the cost. And while the 5990 was breaking the 100 MIPS barrier, that same year Sun Microsystems introduced the SPARCstation 1+ which offered 15 to 18 MIPS for as little as $8,995. Mainframes still held a huge lead in overall throughput, but it was becoming clear this would not remain true in the future.[17]

The effects of these changes did not really hit the market until the early 1990s, and the company began losing money to the tune of hundreds of millions of dollars. After three back-to-back quarters of massive losses, in late 1993 Fujitsu announced they would be moving to CMOS for their future mainframes, while in the meantime shoring up their Unix and midrange offerings by reselling Sun workstations. This was panned by industry observers, who called it a "rear-guard action" and saying "they missed the boat in being able to do it themselves."[18]

Amdahl's CMOS plans eventually came to fruition in 1996 with the release of the Amdahl Millenium systems, but this was too little, too late. Mainframe sales continued to shrink, and in 1999, Hitachi announced they would be exiting the business. In 2000, IBM introduced their IBM Z series, which offered 64-bit addressing and a host of other new features. By this time the market had shrunk so much that there was no point in Amdahl trying to match this move, and in October 2000, Fujitsu announced they would instead exit the mainframe market entirely and focus on their Unix offerings built on their UltraSPARC processors.[19]

Description

[edit]

Basic architecture

[edit]
The 580's standardized circuit boards had an eleven-by-eleven arrangement of chips.
Each of the 580's bipolar memory chips used in the caches was equipped with a individual cylindrical heatsink.

The Amdahl 580 retained full compatibility with the S/370 architecture while changing the underlying processor implementation. The processor used a five-phase pipeline, allowing it to achieve a maximum execution rate of one instruction per processor cycle, compared with one instruction per two cycles for the 470 series. The processor cycle was 23.25 nanoseconds (ns), and the main storage cycle was 280 ns. The 580 also widened its internal data paths to 65-bits, compared with 32-bits in the 470.[20]

The CPU was divided into an Instruction Unit (I-Unit), Execution Unit (E-Unit), and Storage Unit (S-Unit). The I-Unit fetched, decoded and dispatched instructions and controlled the execution pipeline, the E-Unit performed arithmetic and logical operations (today it would be known as the arithmetic logic unit, or ALU), and the S-Unit handled operand storage, address translation and communication with main storage. The CPU also contained separate Instruction and Operand high-speed buffers (HSBs), each with a capacity of 32 kB.[21] The HSBs were used to separate instruction fetching from operands. Both were two-way set-associative and had 512 32-byte lines. The S-Unit contained a 512-entry translation lookaside buffer (TLB).[22]

The 580 used a dual-bus architecture for main memory. The A-Bus carried requests and data from the CPU, I/O processor and console toward the Memory Bus Controller (MBC), while the B-Bus returned data from the MBC. The buses had 72-bit data paths, allowing an eight-byte data transfer plus parity on each cycle. The MBC also provided other functions like interrupt routing, timing, I/O routing and memory error checking.[23] Main memory used NMOS dynamic RAM with a 280 ns cycle time and error detection and correction (ECC). The memory system used four-way line interleaving and four-way quarter-line multiplexing. Each memory transfer was 64-bits wide, matching the processor's wider data paths.[24]

The processor and other system functions were built using ECL LSI circuits and 4K RAM modules mounted on Multiple Chip Carriers (MCCs). Whereas the 470s had used chips with about 100 transistors each, the 580 increased this to 400.[9] Each MCC could contain up to 121 logic and RAM chips in an 11-by-11 grid, and could implement an entire functional unit on each card. A basic 580 CPU required eight MCCs, compared with as many as 59 MCCs in the 470. The MCCs were arranged in a compact stack occupying approximately 5.6 cubic feet, with printed-circuit boards forming the stack's side walls and providing the interconnections between MCCs. The system retained the 470's air-cooling approach, with cylindrical heat sinks and large fans on the top and bottom of the chassis pulling are across them.[25]

The 580 also introduced distributed microcode. Instead of using a centralized control store, microcode was located on the MCC containing the functional unit it controlled. This allowed individual units to be optimized independently and reduced the length and contention of control paths. Amdahl also introduced a firmware facility called Macrocode, intended to provide greater flexibility in implementing System/370 compatibility and subsequent architectural extensions.Amdahl 580 Systems (Report). Datapro Research Corporation. May 1981. pp. 2–3.

I/O was handled by an Input/Output Processor (IOP). The original configuration provided up to 15 or 16 block-multiplexer channels, depending on the model and configuration, with each channel capable of transfers of up to 6 MB/s. A second IOP could be added to increase the number of channels and the aggregate I/O bandwidth. Each channel supported up to 256 subchannels.[23]

Versions and updates

[edit]

The first two members of the 580 family were announced in November 1980: the single-processor 5860 and the tightly coupled dual-processor 5880. The 5860 was rated at approximately twice the performance of the Amdahl 470V/8, while the 5880 was rated at approximately 3.5 times its performance. The 5860 was field-upgradable to a 5880. Both initially supported 16 MB of main memory, expandable to 32 MB. The 5860 was first delivered in the third quarter of 1982, while the 5880 followed in the fourth quarter of 1983.[26]

The 5870 was announced in October 1981 as a higher-performance dual-processor system based on the 5860. Datapro stated it had 70 percent more performance than the 5860. Its initial delivery was scheduled for the fourth quarter of 1983, although later Datapro reports noted that deliveries were delayed until 1984.[26]

The lower-performance 5850 and 5840 were added as the 580 family was expanded downward. Datapro's 1983 report lists the 5850 as announced in September 1982 and the 5840 in June 1983, with first deliveries in the third and fourth quarters of 1983. Later Datapro editions instead give May 1983 as the 5850 announcement date, suggesting that the company's later records revised the date. The 5840 was rated at 1.2 times the performance of the 470V/8, while the 5850 was rated at approximately 1.75 times its performance.[26][27]

By 1984, the 580 family had been expanded to seven models. The 5840, 5850 and 5860 were single-processor systems; the 5867 and 5870 were dual-processor systems; and the 5868 and 5880 were two-processor configurations based on the 5850 and 5860 processors. The 5840 could be upgraded to a 5850, while the 5850 and 5860 provided upgrades into the multiprocessor models. The 5867 and 5868 could in turn be upgraded to the 5870 and 5880 respectively.[20]

The 5867 and 5868 were announced in March 1984. Both were rated at 2.7 times the performance of the 470V/8. The 5867 was a dual-processor system based on the 5850, while the 5868 consisted of two tightly coupled 5850 processors. Both could be upgraded to the 5880.[27]

During this period Amdahl also increased the supported memory capacity. The original 580 systems supported up to 32 MB, while later uniprocessor models supported up to 64 MB. The 5868 and 5880 supported up to 128 MB. The 5880 could operate as a single logical system with the full memory capacity, or in partitioned configurations with separate memory assigned to each processor. The maximum number of I/O channels was also increased, reaching 48 channels on the 5880 in single-image operation.[20]

The 5850 also received a processor-performance enhancement during the expansion of the product line. Datapro reported that systems shipped subsequently provided approximately 5–7 percent greater processor performance. The 580 architecture otherwise remained based on the same 23.25-nanosecond processor cycle and 280-nanosecond main-memory cycle used throughout the series.[20]

The data in the following tables are gathered from a series of Datapro reports, linked below in the references. The table columns are sorted by name, not introduction date. The MIPS performance is taken either from contemporary benchmark lists, or synthesized from Datapro's "relative performance", which is typically relative to the 470V/8 at around 3.5 MIPS.

Specification5840585058605867586858705880
Date introduced6/835/8311/803/843/8410/8111/80
First deliveryQ4 1983Q3 1983Q3 1982Q3 1984Q2 1985Q4 1983Q4 1983
Introductory price$2.35M$2.75M$3.15M——$5.20M$6.19M
Number of processors1112222
Processor cycle (ns)23.2523.2523.2523.2523.2523.2523.25
Estimated performance (MIPS)~8.4~11.6~13~22~22~22~23
Main storage cycle (ns)280280280280280280280
Bytes fetched/cycle8888888
Interleaving4-way4-way4-way4-way4-way4-way4-way
Minimum memory16 MB16 MB16 MB24 MB32 MB16 MB32 MB
Maximum memory128 MB128 MB128 MB128 MB256 MB128 MB256 MB
Memory increment8 MB8 MB8 MB8 MB16 MB8 MB16 MB
TLB512 entries512 entries512 entries512 entries512 entries512 entries512 entries
HSB cycle (ns)N/AN/AN/AN/AN/AN/AN/A
HSB capacity2 × 32 KB2 × 32 KB2 × 32 KB4 × 32 KB4 × 32 KB4 × 32 KB4 × 32 KB
Standard I/O channels16161616321632
Optional I/O channelsto 31to 31to 31to 31to 46to 31to 46
Upgrade path585058605870 or 58805868, 5870, 588058805880—
Specification5890-180E5890-190E5890-2005890-200E5890-3005890-300E5890-390E5890-400E5890-6005890-600E
Date introduced6/871/8710/852/8710/852/875/882/8710/852/87
First delivery9/876/87Q1 19873/87Q2 19866/87Q4 1988Q4 1987Q4 1987Q4 1987
Introductory price$2.25M$2.60M—$3.90M—$4.60M$7.00M$7.28M—$8.60M
Number of processors1122222344
Processor cycle (ns)15151515151515151515
Estimated performance (MIPS)1822—34—3942———
Main storage cycle (ns)——————————
Bytes fetched/cycle8888888888
Interleaving8-way8-way8-way8-way8-way8-way8-way8-way8-way8-way
Minimum memory32 MB32 MB64 MB64 MB64 MB64 MB256 MB128 MB128 MB128 MB
Maximum memory256 MB256 MB256 MB256 MB256 MB256 MB512 MB512 MB512 MB512 MB
Memory increment32/64 MB32/64 MB32/64 MB32/64 MB32/64 MB32/64 MB128 MB64/128 MB64/128 MB64/128 MB
TLB——————————
HSB cycle (ns)——————————
HSB capacity96 KB96 KB96 KB96 KB96 KB96 KB96 KB96 KB96 KB96 KB
Standard I/O channels16161616161624243232
Optional I/O channelsto 48to 48to 64to 64to 64to 64to 160to 96to 128to 128
Upgrade path190E, 200E300E, 390E300 or 600300E600400E, 600E400E, 600E600E——
Specification5990-3505990-5005990-7005990-7905990-11005990-1400
Date introduced198919895/8811/8919895/88
First delivery198919896/882/901989Q4 1988
Introductory price$3.8M$4.6M$7.07M$7.5M$9.9M$13.1M
Number of processors122234
Processor cycle (ns)101010101010
Estimated performance (MIPS)3449636391114
Main storage cycle (ns)——————
Bytes fetched/cycle888888
Interleaving32-way32-way32-way32-way32-way32-way
Minimum memory32 MB64 MB64 MB128 MB128 MB128 MB
Maximum memory128 MB256 MB256 MB512 MB512 MB512 MB
Memory increment32 MB32 MB32/64/128 MB64 MB64/128 MB64/128 MB
TLB——————
HSB cycle (ns)——————
HSB capacity128 KB128 KB128 KB128 KB128 KB128 KB
Standard I/O channels161616642432
Optional I/O channelsto 32to 32to 64to 128to 96to 128
Upgrade path5007001400—1400—

Notes

[edit]
  1. ↑ Although Amdahl does not name names, a contemporary interview with Bruce Beebe and Dave Brewer suggests it was their decision. This was based on their concerns that the five-year shipping time of the 480 was simply not something they could afford as a now-large company, and decided to take a more conservative approach to ensure the schedule was attainable.[8]
  2. ↑ Supercomputers had passed this mark earlier. The contemporary 1988 Cray Y-MP was about 333 MIPS per processor, and could support up to eight processors. The MIPS R8000, a single-chip desktop system, would hit the same figure in 1994.[14]

References

[edit]

Citations

[edit]
  1. ↑ Johnson 1998, p. 36.
  2. ↑ Aspray 2000, p. 28.
  3. ↑ Aspray 2000, p. 29.
  4. ↑ Datapro 1977, p. 1.
  5. 1 2 Aspray 2000, p. 32.
  6. ↑ Aspray 2000, p. 30.
  7. ↑ Aspray 2000, p. 34.
  8. ↑ Twenty 1990, p. 6.
  9. 1 2 3 Twenty 1990, p. 5.
  10. 1 2 3 Datapro 1983, p. 1.
  11. 1 2 3 Datapro 1989, p. 1.
  12. ↑ Datapro 1987, Product Enhancement.
  13. ↑ DataproIBM 1989.
  14. ↑ "MIPS Technologies Announces the World's Fastest Supercomputing Microprocessor" (Press release). MIPS Technologies. 7 June 1994.
  15. ↑ Doran 1988.
  16. ↑ Morgan, Timothy (1 May 2017). "Contain Your IBM i Enthusiasm". IT Jungle.
  17. ↑ Bechtolsheim, Andy; Frank, Edward (1990). "Sun's SPARCstation 1: a workstation for the 1990s". Digest of Papers Compcon Spring '90. Thirty-Fifth IEEE Computer Society International Conference on Intellectual Leverage. pp. 184–188. doi:10.1109/CMPCON.1990.63671.
  18. ↑ Bozman 1993, p. 10.
  19. ↑ Vijayan 2000.
  20. 1 2 3 4 Datapro 1984, pp. 1–3.
  21. ↑ Datapro 1981, pp. 3–5.
  22. ↑ Datapro 1981, pp. 4–5.
  23. 1 2 Datapro 1984, pp. 2, 7.
  24. ↑ Datapro 1984, pp. 6–7.
  25. ↑ Datapro 1981, pp. 2–3.
  26. 1 2 3 Datapro 1983, pp. 1–3.
  27. 1 2 Datapro 1984, pp. 2, 3.

References

[edit]