Programming 2 – High Level vs. Low Level

Language efficiencies

Jeffery Holtmyer has commented to an earlier post regarding the efficiency of high-level versus low level coding.

Please fill this out with how the higher level languages create efficiencies or do not. Most of the people I talk with correlate a higher level language with higher efficiency in the code.

To my mind, the reason for the confusion here is that we are talking about two different efficiencies.

Continue reading

Screen Shot 2014-06-26 at 7.33.27 AM

Dear Nest

Open Letter

Dear Nest folks:

Unfortunately I am requesting to be removed from your mailing list. I was looking forward to buying some of your products, but will not be doing so due to the purchase of your company by Google.
Google makes a great search engine, and I use it frequently, but I have never used gmail nor Docs, all for the same reason:
  • With Google the user is the product and I am not happy with that. 
  • Google has a view of privacy that is totally self-centered and does not match with mine.

Continue reading

Apple Metal Explained

Pedal to the Metal

Screen Shot 2014-06-11 at 10.34.57 PM

In my post to Seeking Alpha I wrote:

  • The final sleeper feature with deep implications for Apple’s future is Metal.
  • Metal is a new technology for writing graphics programs, particularly animations and games. It allows programmers to write code at a much lower level than previously, and this produces a real, up to 10x performance improvement.

Clearly the newest Apple hardware (iPhone, iPad,a nd possibly Apple TV box) will be getting upgraded processors (system on a chip or SoC), the A8. I wrote in detail on the current A7 in this post, and I also presented my speculations on the A8. While Apple’s creative design keeps them a step ahead in the processor race, because they control both the operating system (iOS) and the processor technology

  • Apple is in a unique position to optimize system graphics performance

 

So what is it that they have done?

Continue reading

Programming Languages – Basics

To understand programming languages, one needs to know a bit about how a processor works. A Processing Unit is that part of an integrated circuit chip that actually performs computations. It needs to read instructions, interpret them, and perform them. This is all done by a set of Logic Gates implemented by sets of transistors on the chip. Modern chips have up to 7 billion transistors or more than one billion logic gates.

  • All electronic computation is controlled and computed by electronic signals passing in step through these logic gates.
  • A processing unit instruction is a digital number that triggers a set of data to pass through a particular computation unit of the processor.

Each PU has some internal memory called registers, usually some dedicated to instructions and some to data (although they could be mixed). Here data and instructions are stored for quick access to the PU. So the PU goes through a cycle of:

  1. Read an instruction from main memory into registers (if not already available)
  2. Load an instruction from instruction queue
  3. Interpret instruction
  4. Perform instruction
  5. Leave results in specified location
  6. Return to step #1

Instructions to a processor are extraordinarily simple, each performing just one very specific, elemental task. They do things like:

Continue reading

Understanding the GPU

What is a GPU?

Short answer: Graphics Processing Unit – a computer chip (or a part of one) that is responsible for processing graphic and video image data. To understand it, let’s begin by looking at the difference between it and the Central Processing Unit.

  • Caveat: This is a very simplified discussion that conveys the general concepts but may not convey a precise model of modern chips.

The CPU (generally considered the “brains” of a computer) is responsible for running the overall computer system. It reads programs from memory and executes them. Using both built in (hardwired, or firmware based) and memory based instructions, it is responsible for scheduling all the different processes that want to run concurrently, responding to user inputs, sending data to various peripheral systems, maintaining levels of security, and so on.

In order to accomplish all this, the CPU has a very rich set of instructions that it understands, and this instruction set has been tuned over decades to handle this wide set of operations efficiently. It should be remembered that every processing unit can perform one and only one instruction at a time – or more accurately these days, one per core or thread. (Detail: actually, there are execution units that do perform several operations in a pipeline fashion, but the basic concept holds.)

Now a crescent wrench is a fine tool. Large and heavy, it is adjustable and therefore adaptable to many uses from plumbing to auto repair. If, however, you intend to remove your engine head, then you will be much better served with a speedy little ratchet with the proper socket. This one socket only fits a single size – but does it very well. crescent-vs-ratchet

 

So too the GPU. It has a much smaller instruction set, but this is tuned to the types of mathematical operations that are needed for processing images, and – most importantly – it has lots of threads to run many operations in parallel.

 

Continue reading