Friday, November 28, 2014

Computer Revolution and Moore's Law: A Personal Journey

Moore's Law: Exponential increase
in transistor density and speed

In this post I trace a personal journey of my interactions with the evolutionary stages of computational machines. I feel my decisions in life have been shaped by forces which were not as clearly understood or even visible in the 1970s and 1980s as they are today and are depicted in this graph. Tremendous progress in the speed of the computers and their reduction of costs obeys Moore's law which says that speed of the computer would double every 18 months and the costs would decrease by half every 2 years. This trend has held for more than half century and is depicted in the figure in the context of the microprocessors.



Slide Scale
It was 1971 I was in grade four, when my uncle who was working in Planning Commission, Islamabad told us that his office had acquired an electronic device that can multiply and also divide! Although I have read about the device in the newspaper, but we did not believe him until one day he brought that large device (a calculator) and we were fascinated to see that it could not only multiply huge numbers, but could also divide them. He told us that this device was very expensive and only a few have been acquired and are kept in lock and key. We got access to this precious device just enough to punch in a few big numbers to see whether it could actually multiply and divide. We also computed manually to see whether the multiplication and division done by the calculator was correct or not. This was the time when engineering students prided themselves on their skills with wooden slide-rule for multiplication and division, and a demonstration of such magical skills with the slide-rule was given to me by our dear Javed Bhai.


My dear calculator was this model
I eventually became a proud owner of that wonderful Casio fx110 calculator in 9th grade that would remain with me till I completed my BE and my MBA in 1987.  I even now feel the excitement that engulfed me when I got this present and can still recall so many fond memories of exploring each and every function of that computer with each and every key and by putting every conceivable number, and the ensuing surprise of discovering unknown and undocumented features. I lost it only recently when I gave it to someone who could not understand my emotional attachment with it and conveniently misplaced it.


IBM Series 1400
In the early 1970s my eldest sister was doing her MPhil in Biochemistry from Karachi University. She took permission to do some data crunching on the computers that  UBL or SBP had at that time. UBL had IBM 1400 and 1900 Series Computers [1] which are often classified as dinosaurs as compared to today's computers. Access to these machines was restricted and was only given to research students reluctantly after office hours through powerful recommendations from higher ups. Utilizing computer's idle processor time for research and data analysis should have been more widespread and easier. My sister told me of the long hours she had to put in to do the data analysis __ something that has now become a child's play with Excel on home computers. I remember seeing her final thesis document that contained several charts and tables developed from that data analysis done on those computers. One of the artifacts of that work were the reams and reams of computer paper on which the data processing done by the computer was printed out. She kept it for some years but then finding no use for it, she gave it to me during my matriculation studies to work on the plain side of the paper for my practice work. Later I would buy this kind of paper from Khori Garden, Karachi to reuse for practice work during my Engineering studies.

I distinctly remember the hazy pictures on our black and white TV screens of the landing of the first man on moon in 1969, and our exciting and animated discussion following it as we were taking a walk on that post-rain picturesque day in Islamabad with our cousins who were visiting from Kabul where their father was posted.  Do you know how much was the RAM in the computer of Apollo 11 that took the first man to moon in 1969? Believe it or not, it was 2K RAM! I was astounded when I first learned about this during a lecture in 1988-89 at UT Austin by Prof Miroslow Malek, who later became a member of my thesis committee. The on-board computer of Apollo 11 operated at only 0.043MHz. Even the tiniest devices today are billions of time more powerful than this, and yet we always seem to be unhappy and complaining even though we have Giga Bytes of memory and Giga Hertz of processors in our phones!

Speaking about the discontent with today's devices, I always relate this experience of mine: I was doing PhD research during the early 1990s in the lab of my supervisor JC Browne where other PhD students and post-doc fellows were researching various aspects of the graphical parallel programming language called CODE. Initially I was working on Sparc-4 computers and my work involved compiling again and again a large program that would take at most a few minutes, but I would feel that wait as excruciatingly long and unbearable. Once I went to my supervisor to complain about the slowness of my computer. He patiently listened and then told me the story of how he had to program in the late 1950s and early 1960s. This story halted me in my tracks and after listening to it, I stopped complaining.
Hollerith Card
He told me that in those early days the computers were not connected directly to the keyboards and one could not program or use the computer by simply sitting in front of it, typing on the keyboard and seeing the results on the display monitor: Those were the days of card punching machines. We would sit on them and using a keyboard would press the keys for each program line; one card would come out for each line with punched holes according to Hollerith code. A thousand line program would generate a thousand cards. These cards in their proper order had to be taken physically and placed in a card reader machine. The machine will read the cards and would place the stored program in a job queue for processing by CPU. We were told not to wait but to go home as the job would eventually run and generate the results, which could then be picked up the next day. Next morning we would go over there and get the printed output of the job. The printout might say that there was a syntax error on line 35. In which case we would pull out card#35, debug it and would key-in again the corrected line in the keypunching machine. Out will come another card, which was then placed in the proper sequence i.e. 35th position in the stack of the cards for the program. The stack of cards would again be taken to the card reader machine, which would read the cards and enqueue a new job for the CPU. We would then wait till the next day to learn about the output of the new job. Often the printout would come out saying syntax or some other error on (say) line 205. We would, then, pull out card#205, read and correct the line, repunch the line on the card punch machine to obtain the new corrected card#205 which had to be reinserted in the proper place in the program stack, taken to card reader machine to read and enque the job, and then we would come a day later for the output. This process would continue again and again till the program was error free. Writing a single program would often take days and even weeks. So, what do you think about the wait for a few minutes?"

This story embarrassed  me so much that I never complained again, although we did get the next model Sparc-5s in a few months.


Card Punching Machine
The first and last time I saw the physical card reader and card punching machine in working condition was in 1981-82 at the IBM's head office in Karachi (Habib Bank Plaza Building 8th floor). Our student group from DCET was being given a tour of the office by that master presenter Mr Furqan Qureshi who I can still recall standing there; tall, lean, elegant, and exceptionally entertaining. Entertaining and elegant as he always was and is. I extensively interacted with him later on as part of our E-Commerce Working Group Project under Ministry of Science and Technology.

We have traversed a huge distance from those times of card readers and card punching machines. We can't even visualize a computer with 2K RAM today as we can not even do the most trivial graphics work on a computer whose RAM is less than 4GB!


In 1980 I took admission in civil engineering at NED University. At that time, civil engineering was the most sought out program and students getting the highest grades would opt for it. I was admitted to it but I wanted to go into Electronics. Unfortunately, Electronic Engineering was not offered by NED, which was only offering electrical engineering and that too with a narrow focus on power generation and telecommunication. Electronic Engineering, which was closest to computer engineering was only being offered by Dawood College of Engineering and Technology (DCET). There was no computer engineering or computer science program at that time at any university in Pakistan. As I had gotten admission at DCET also, I was torn apart whether to do civil from NED or electronics from DCET. I consulted several engineers. One of my relatives  Mr Zahid Ali, who was Director Engineering at SBP, advised me to opt for Civil. However, another relative Mr Anwar Salahuddin, who had then recently returned from UK after doing his Chemical Engineering advised me to go for Electronic as this was going to be the field of the future. On one hand was NED with its beautiful sprawling infrastructure and street smart students of Karachi, and on the other hand was DCET with an infrastructure that had seen better times before nationalization and its students who hailed from all over the country and their ethnic, sometimes boisterous, politicised student organizations. Most people recommended to me NED on the basis of the quality of education, infrastructure and students, but somehow I ended up selecting DCET and went for Electronics. Major decisive factor was the group of a few very smart batch mates at NED who had already decided and moved to DCET. [More on this decision in a later post.]

Two of these fellow students who transferred from NED to DCET along with me were Kawasji Kheswala and Husain Azfar who would complete electronic engineering with me from DCET and would then join me at IBA to do MBA together. They were more studious and more focused  than me and would remain my guide and compass for electronics while I dabbled in many other student activities. One thing common among all three of us were our financial constraints. I still remember the intense study, discussion and the trade offs that accompanied their decision of buying the Casio FX 602 programmable calculator on which they learned Basic Programming language. I also got some chance to fiddle with the language on that calculator. However, soon they were to graduate to FX702 which had better memory and better graphical interface.


First computer that I held and disowned
This was the time when the more committed electronic-phile students were found spending their free time with magazines such as Popular Electronics and Elektor. In these magazines, we often would look expectantly and longingly at the full page ads of personal computers such as Sinclair's ZX-80 having 3.2MHz microprocessor. As we were starting to plan its acquisition with our meagre resources, the next more impressive model ZX-81 with 8K RAM and better speed came out, effectively throwing up in air our earlier calculations. These earlier computers would typically produce a  Black n White display on home TVs.  As we restarted our planning for acquiring ZX-81, the next model ZX-Spectrum came out with 16k RAM, which boasted of a colored display on TV. In early 1980s, we found ourselves in the midst of a frenzy of personal computers getting launched in both UK and US with prices around a couple of hundred dollars. Comparable to ZX series in UK were the Commodore models in USA. How we used to longingly see and to admire the pictures of these personal computers and visualized acquiring them! I actually raised finances and with great excitement requested one of my relatives coming from UK to bring for me ZX81. But due to some misunderstanding the computer he brought was ZX80, and on testing it when I found that it can not do decimal division i.e it would round off the result of 3 divide by 2 to just 1, I was terribly depressed and greatly disappointed because my dear old Fx110 calculator could do much better decimal calculations. This depressed me so much that without giving much thought, I refused to own the computer and rather hastily returned it for dispatching it back. This represented a huge collapse of my dreams. 

In USA, competitor to UK's Sinclair ZX-81 was Commodore VIC-20  that boasted of a larger keyboard. Then came one of the most successful model Commodore-64 in USA that actually overtook the Sinclairs. All our plans of buying the ZX series again went down the drain. Now we turned towards fantasizing owning the Commodore-64!

Around 1983 our engineering college built a new computer lab which proudly showcased the two personal computers bought from Sorda Japanese company which would later be acquired by Toshiba. Typical of Pakistan, these computers were safely imprisoned in lock and key away from the prying eyes of the students, which unfortunately seems to be a common characteristic of the government departments and DCET was no exception, where they not only misplaced the instruction manuals and training guides but also conveniently forgot to obtain any training or skill to make the computers work: A story that we would see repeated again and again from institution to institution till today. Fortunately, the duo of Kawasji and Husain Azfar through their diligence obtained access to the lab and started learning to use the computer by trial and error. Mind you, there was no Google or Internet or Wikipedia to search for instructions or online forums where you can find someone to help you out. When stuck, the only option was to do monkey testing by pressing each and every key and their various combinations with control or function keys hoping to get lucky and finding a key combination that might work. I marvel at their persistence in trying to enter each variation of the command that can be imagined in the expectation that one such combination might fortuitously work. Fortunately the interpreter mode of programming helped us in this exploration through trial and error.  The only help was the small instruction manual of Casio FX602  and some general books on BASIC and a whole lot of ingenuity and commitment.  Our major guide used to be the programs given in Popular Electronics and some books that we had issued from British Council. Believe it or not, I had a book on IBM Fortran IV from which I learned about the "for and if statements" and used that knowledge to apply, modify and learn the syntax for BASIC.


Soon Kawasji and Husain Azfar had worked out how to use this computer. It was with their help and in that lab that I sat down and wrote my very first program the hard way. I set for myself a challenging proposition to program the Gaussian elimination method for solving simultaneous equations that requires solving determinants of matrices. Here I got my first learning of how to do programming. Later I would do a lot of programming and when I see today so many graduates having passed several programming language courses and having no confidence or expertise, I always tell them it is all about learning one language well and doing it the hard way, yourself, by taking the plunge. [More on this in a later post].

I copied the Mirco-Professor Manual
Personal computers that I owned in my imagination such as ZX80, ZX81 and ZX Spectrum all had the Z80 microprocessor and the Sord computer on which I learned programming in BASIC also had the same processor. When I started exploring what should be our final engineering project in 1983-84, I went for advice to our alumnus Mr Zahid Mustafa who had come from METU after doing his masters. He gave me the address of his colleague who lived in Shah Faisal Colony who had the manual for MircroProfessor, which was a microprocessor based controller. I still remember going in a bus and searching for his house and meeting him and getting the manual that I then photocopied. Then meticulously we started reverse engineering the microprofessor [which will eventually be a post in its own right]. This project made me expert of assembly language of Z80 microprocessor. The project spanned about a year and a half and the thousands of hours that I must have put in tweaking it and modifying its operating system (called the monitor) gave me the insights I still cherish. On my return from USA after doing my PhD about ten years later, I found the variants of my design still being churned out as student projects at DCET. It is now over 30 years ago and I still remember the hexadecimal codes of some of the commands of Z80 such as Loading the Accumulator (LDA) was 2A, Branching when Accumulator is Not Zero (BNZ) was 10, and so on from the set of its 100+ commands. I still remember these hexadecimal codes because instructions had to be entered using these codes and the output was displayed on the six LED hexadecimal displays.


Picture from Google Images
The picture here shows what my first stage reverse engineering of Multitech product looked like. However, I had to wait for months to get the components from Watford Electronics UK by going through the tedious State Bank process of converting local currency into foreign currency and then remitting it. Eventually, I got the components via post. Our project was to convert the hexadecimal keyboard to the full 64 key regular keyboard and also to replace the six hexadecimal LED displays with the full screen display by connecting it to the TV. I was assisted in this project mainly by my partner Mr Ashab Mirza who gave invaluable support in logistics and construction. There were a few more financier group partners too. I am indebted to Farid Akram who had a handson  skill for making the PCB and taught me how to solder with excellence and and to Babar Shabbir and his team for troubleshooting the circuit and making it come alive.

My first exposure to IBM Personal Computer (PC) was at Computer Center of IBA when I was doing my MBA during 1985-87. We used to go to the Center for some of our computational assignments. That's where I had my first contact with SPSS and also Lotus (which was later copied by MS Excel) and WordPerfect (which was later copied by MS Word) through my MBA class fellow Abdul Ghafoor. Later IBM would acquire the highly successful Lotus and would kill it the same way it acquired Rational and killed the project. I remember working on IBM PC-XT computers that used a microprocessor that was the successor generation of Z-80 and 8086 microprocessors. We used to have sets of 5 to 10 diskettes to run some of these programs. At that time hard disks did not come built in with the systems and the diskettes had to work as hard disk. These programs would halt with a message to take out the diskette from the drive and insert such and such disk and would wait till you put in that disk before resuming.

I got to work on IBM PC-AT at ABM Data systems where I worked part-time for a few months working on inventory management system for Maymar Housing during my last MBA semester. The PC-AT computer on which I worked had a 80286 processor which was the successor generation of the 8088. I abruptly left the project and ABM to join SUPARCO where I had been offered a job with a promise for leave with pay while availing the scholarship for PhD studies from USAID/Ministry of Science and Technology. I still remember the embarrassment that I felt when Dr Zahir Ali Syed (who may not recall this) admonished me that it is not professional to switch jobs without proper information and notice. I learned it the hard way because I don't think that this was ever discussed/taught in my MBA and BE programs.

At SUPARCO I worked on the state of the art IBM PC-AT computer that also had the hard disk. During the few months of 1987 that I was there, I found that the employees were either preparing "indents" (proposals for acquiring new hardware) or playing on computers or simply appearing busy while loitering away the time. Millions of dollars worth of equipment was simply wasting away and rusting for want of purpose or willingness to utilize it for some concrete end or for want of a crucial connector or instruction manual or training. The security around SUPARCO was nothing but a smoke-screen to hide the inefficiency and directionlessness of the entire establishment. Most people seemed to be busy in work that was inconsequential. To retain their sanity, some of the employees kept themselves busy in learning something worthwhile. I learned Auto-CAD and how to develop 3D designs by looking at a fascinating model of NASA's space shuttle. When SUPARCO decided not to abide by their offer of sending us on leave with pay during our PhD studies abroad despite our protests and representations to various offices of the government, I refused to sign the bond and resigned just before leaving for USA.

On reaching University of Texas at Austin, the first course that I took in Fall 1987 was advanced microprocessor interfacing that involved writing of device drivers. Here the course instructor GJ Lipovsky (who would later also become a member of my thesis committee) made us do our project on vintage TRS-80 that was connected with a floppy drive and monitor and was somehow running C-language. During the first session of this course we were given an assignment on C-language which was due the following week. I raised my hand to say that I didn't know the language. The instructor smiled and told me to get the book "A Book on C" by Kelley and Pohl and to get on with the assignment in the lab: There would be no relaxation in the deadline. Compiling the program on that vintage TRS-80 machine was so slow that someone advised us that on pressing the enter key to start compilation, we need to be prepared to go downstairs, relax, have coffee or some thing and return about about forty five minutes or so later. By the time you come back after leisurely walk, your program might have compiled. I got the book and learned it in a couple of days and managed to program and submit the assignment by the end of the week.

This lesson tells us that even rich universities like UT Austin would use the computers and the other hardware to their fullest eking out the last bit of value from them before discarding. TRS-80 was a personal computer of 1980-82 era and was being used at UT Austin in 1987 day and night, whereas at IBA the more modern IBM PCs that were acquired in 1984-85 were only being used during mornings in 1986-87, although they could have been used in evenings and nights and to their fullest in various programs.  In Pakistan, we acquire lot of stuff and it wastes away while lying idle or is under-utilized as I experienced at DCET and then at SUPARCO. Many a time the equipment is acquired for the sake of kickbacks with no intention of use. I think use is actively discouraged because it may expose the inappropriateness or worthlessness of many of these acquisitions. Recent HEC acquisition of hardware by universities tells a sordid story of equipment worth millions of dollars lying unused and inoperable.

My experience of typing the thesis for MS convinced me that I could no longer afford to work on my PhD without learning to type. I borrowed one of the old computers IBA-XT from a friend of mine Mohammad Khalid during Ramazan and used the difficult half-hour before the Iftar for learning how to take my eyes off from the keyboard as I typed with my ten fingers. I still remember that helpful typing tutor which would make the alphabets drop down from the top of the screen and pressing the correct key would give you a hit score. The speed of the letters dropping down would increase with the correctness of your hits. It took me about 20 days to learn to take my eyes off the keyboard. This was the hardest part of my learning because my typing speed with two fingers of each hand was about 30, it dropped down to about 10 and only then it slowly increased, but progressively moved up and up. With the extent of typing, I was doing for writing my PhD research and programming, I noticed that in a few months my speed had again risen first to 30 then 40 and soon it was as good as that of any good typist.

The computers that I worked during my PhD research were Sparc-4 and Sparc-5. I also worked on Cray-Y computer and some experimental parallel computing machines like Connection Machine. On my return, one of my colleagues Mr Mohammad Ali got me a PC computer mixed and matched by the state of the art components. My dear friend Imran Baqai presented to me some of their experimental i486 processors and one of them worked. Armed with this computer I was back in Pakistan and was among the early adopters of the email from IUCN and later from DigiCom. More on this later.

In summary, my professional studies followed by my professional life has been associated with the story of microprocessors beginning from 8080 to 8085 to 8086 and then continuing with the x86 family series 8088 to 80286 to i486 to Pentium as mentioned above. The rest of the series P2, P3, P4 and then core 2, Athlon and the rest are too recent to be of interest to repeat here.

See Also:

References:

5 comments:

  1. While reading this, I was feeling a film on computer's history is playing in front of my eyes.
    Even I also complained about slow processing when I was developing blackberry applications 4 years back and I was using core series.

    ReplyDelete
    Replies
    1. Thanks for the encouragement. Speaking about complaining of speed, we do it all the time. Even the task of adding new components and devices at one time used to require setting up interrupts and memory ranges. Now it is plug and play. Story of how Ctrl-Alt-Del came to be used for login: Microsoft became a major target of jokes at one time because this key sequence was used to initialize the computer once it hang, and once it stopped working or when it would freeze. To redefine this key sequence it was made part of the start sequence.

      Delete
  2. Very informative taking one through the time tunnel.

    ReplyDelete
    Replies
    1. Saw your remembrances on fb about the first computers to be installed in Pakistan and thought you may be interested in this personal journey.

      Delete
  3. Thank you for the informative article about the hisotry of computers.

    ReplyDelete