ARM, Java, and BigData pt1

When one tries to build a house, the first job is to lay down a foundation and level the ground. We are to take a slight detour to find out if everything is solid at the ground level.

ARM

The first thing is ARM processor. ARM processor was firstly developed by Acorn Computers Limited back in 1985. ARM was heavily inspired by Berkeley RISC Project that it was one of the first processors which adapted RISC architecture. There was a huge intergalactic war between RISC and CISC supporters, and it turned out to be a particularly good choice for ARM for its performance and low power consumption. (Low power consumption is debatable since each side aggressively copies adapts opponents strengths. Nonetheless, I remember ARM application took forever to compile, and I believe RISC helped ARM to reduce power consumption in the early days.)

Later in 1990, Apple computer (It was no coincident Apple used ARM processor in their early devices.), and VLSI Technology Inc. funded Acorn to form what is now known as ARM Ltd. Here comes a 13 minutes of memoir from one of the founding architecture designer, Steve Furber.

Here comes a product map from ARM nowadays.

ARM Processor Family. (Courtesy of http://www.emcu.it)

The processor in Raspberry PI 2 (henceforth RPI2) is ARM Cortex-A7 (ARM1176JZFS). It is 32-bit RISC processor with 8-stages execution pipeline. Without even looking into a specification sheet, you can tell RPI2’s processor is pretty decent one.

There are several, not one, improvements in ARM Cortex-A7 compared to the first generation RPI’s processor. Firstly, the new processor has four cores, meaning it could support much better multi-processing. I believe It is little more than a waste to say such platform is a toy for kids.

Secondly, ARM Cortex-A7 supports Large Page Address Extensions for large size virtual memory and level 2 cache. Combination of the two could lead to support applications requiring more memory and processing power. Since RPI2 only equips with 1GB of physical RAM and memory price is cheap these days, it seems to me Raspberry Foundation is somewhat laying down foundations for its next platform.

Lastly, most importantly to me, ARM Cortex-A7 executes floating point calculation at hardware level. For example, “3.141592 x 2.718” would be interpreted and calculated with software logic in first-generation of RPI. Now, there is a specialized hardware within ARM Cortex-A7 processor that it does not eat up RPI2’s precious processor resource to calculate floating points. ( I shouted out when I found out this. Remember when you need to pay extra cash for 80486SX?)  This means when you are to conduct large size of number crunching on your RPI cluster, the experience isn’t as painful as you’d imagine.

Nonetheless, you might want to take look at the details of ARM1176JZFS, and Broadcom BCM2835 (the main chipset in RPI2). Should you need more details, head over to this official Raspberry PI forum thread.

BCM2836 chip on RPI2 (http://www.theregister.co.uk/)

As a side-note, ARM isn’t exactly bound to be 32-bit low-end processor at all. ARM has announced their 64-bit architecture back in 2011, and 64-bit ARM processors start showing up in various places such as iPhone and AMD ARM server.

AMD Opteron™ A-Series Processors

iPhone 5S

Who knows what? I can only tell things could happen. 🙂

JAVA

There are a lot of BigData projects including Spark/Hadoop, and Java is the lingua franca in the particular territory. No Java, no BigData. We should cover the bare essential of the language and surrounding issues in next part.

 

E-mail Subscribtion
Subscribe for upcoming posts!
Join Slack
Join my channel!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s