From a disciple of evolution

Archive for the ‘Software Engineering’ Category

Simcity World – A tip in the time

What is common among ‘Intel 8086’, ‘Microsoft Windows 95’, ‘Google Search’ and ‘Apple iPhone’? These are innovations that changed the World forever. When such a technology is launched, the World sees a ‘Tipping Point‘ or ‘tip’. Such innovations are celebrated but they hardly happen in isolation. Each one requires sufficient progress in related fields. For example, ‘Apple iPhone’ could take advantage of progress in energy-efficient microprocessors. From gaming industry too, I believe such an innovation has just happened. Today Simcity World has been released by Electronic Arts. There have been many versions and variants of the classic Simcity and most of them were popular among gamer community. However, this time it is different. No, I am not indicating popularity, but about usage. Let me try explaining.

Intrinsically games have been for entertainment. Simcity player enjoys the construction and administration of a virtual city. The gamer plays for hours in building a city from ground up, expanding and governing it thereafter. Patience and passion are not only virtues but also sort of ‘requirements’ that are not mentioned on the shiny box the game packaged in. However, one can only do so much being alone. For example, all the resources needed by a city should be available within the city’s limit and most importantly, there is no competition. When players can connect their cities with one another, they cooperate, compete and evolve. It is analogous to connecting one’s PC to the Internet – More the people join, better it is for everyone. Now how can this change the usage?

When cities connect, there is more dynamics poured into the game, and it can rival the dynamics of the World. This is an awesome thing for understanding global dynamics. Let’s take an example. Say there are 10,000 cities in the World, each with its unique geography, environment, resources, cultures, people and position in time.  It is enormously complex to imagine and deal with. So how should a city respond to a change, such as a drought or a new high-speed train line? How would the resource be utilized and people be given jobs? And more importantly there will be ripple effect as inevitably, the cities cooperate and compete. These avenues can be explored, discovered, to understand which approximate causes will lead to an aggregate effect, in this non-linear World. All this experimentation is impossible unless there is inherent potential to achieve at truly global scale. This is the new usage and it should differentiate Simcity World from many other games.

It is hardly matter of time to map entire Earth into such a virtual world, it is a relatively static issue. However, the real issue is dynamics, computation resource for it and computational infrastructure. Thankfully, few challenges can be tackled using recent innovations in computing infrastructure such as energy-efficient  (ARM/Intel Atom-based) multicore microservers, OpenStack cloud infrastructure, high speed fiber internet and so on.

Henceforth it is worth watching how this space develops, especially competition (such as SecondLife) and creativity.

Omnipresence of Evolution – Imagining Evolution of Microprocessors

Yesterday I read about Intel’s upcoming Xeon Phi Co-processor with 50+ x86-compatible cores. As per the graphics, the co-processor will provide a teraflop of performance and occupy just one PCIe slot. It’s great to see that Intel and other vendors are able to provide such phenomenal computing power,  by adding cores in a single processor chip. We always knew that GPUs with their large number of cores offer phenomenal power in SIMD mode. Moreover GPGPU has unleashed the power for other than graphics-intensive work. However, for Xeon Phi, it does not seem to be strict SIMD only. After reading these news, I confess that I am tempted to look at the field holistically and just blog my muddling thoughts in some order. So what is the theme? Theme is ‘Computation is following biologically evolutionary path’. First, I will try to articulate past, present and vaguely the future of the microprocessors. Later, I will attempt to identify similarities with biological evolution.

Evolution of Intel and AMD microprocessors (as representative) till today –

  1. Inetl 4004 – First single chip microprocessor.
  2. Intel 8086 – First microprocessor with x86 instruction set.
  3.  Intel 80386 – First 32-bit microprocessor and built for multitasking.
  4. Intel 80486 –  Microprocessor with inbuilt math co-processor. This marks beginning of heterogeneous micro-architecture era. However, it could not go much further for a decade.
  5. Intel Pentium – Superscalar implementation for x86 architecture and with multiprocessing support.
  6. Intel Pentium D – First multicore microprocessor.
  7. Intel Pentium M – Introduction of energy efficiency features.
  8. Intel Core –  Scalable and energy efficient microarchitecture (till today, it supports up to eight cores).
  9. AMD APU – First microprocessor with inbuilt GPU cores. This is rejuvenation of heterogeneous micro-architecture and now has momentum.
  10. Intel Xeon Phi – First Intel microprocessor with many-integrated-core implementation supporting x86 cores. Moreover, this fits in the system as an add-on card with its own little Linux OS.

In future, it may continue as –

  1. 1000+ core microprocessor. Each core will be a simple one (most likely an ARM-variant).
  2. More hybrid processors will be launched. For example, a processor will have ‘8 cores’ such that ‘4 x86 cores’, ‘1 ARM core’, ‘1 GPU core’, ‘2 ASIC core’ and so on.
  3. Reconfigurable microprocessors – Processors can have emulation mode. For example, a processor can be configured to have all ‘x86 cores’ in the morning and all ‘ARM cores’ in the evening, using system BIOS.
  4. Upgradable instruction sets. For example, I can upgrade from Core i5 to Core i7 and that too only for a few cores. It appears that upgradeable instruction is required for reconfiguration, but not strictly. Reconfigurable microprocessors and upgradeable instruction set microprocessors may follow one another, in quick succession and the order of their arrivals depends upon level of flexibility achieved for each requirement.
  5. Computing dust. Processors would grow smaller and smaller to an extent that a ‘not-so-advanced‘ processor with size of a grain or a even dust particle. I cite Hitachi RFID powder chip, although it is not a microprocessor, as a beginning. What is significant here is organization of these resources and their interconnects. A liquid network medium is quite possible and may provide substantial advantage over contemporary ones. (Let me call it a ‘Swimming Tank Interconnect’ 😀 )

Quite exciting !

I don’t want to attach any dates to these milestones, but given the trend, we can say with fair accuracy that amorphous computing should become reality by 2016 and part of every day life by 2022.

Each of these would demand significant reorientation in software development paradigm, especially the last milestone. In a separate post, I will articulate each of these challenges and possible paradigm adaptations.

…to be concluded !