<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/technology/cnxml/schema/dtd/0.5/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" xmlns:m="http://www.w3.org/1998/Math/MathML" id="new">
  <name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Just how large is a 64-bit address?</name>
  <metadata xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
  <md:version xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">1.1</md:version>
  <md:created xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">2005/10/12 05:04:49.032 GMT-5</md:created>
  <md:revised xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">2005/10/21 22:57:50.265 GMT-5</md:revised>
  <md:authorlist xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
      <md:author xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="rsimpson">
      <md:firstname xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Rick</md:firstname>
      
      <md:surname xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Simpson</md:surname>
      <md:email xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">rsimpson@alumni.rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
    <md:maintainer xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="rsimpson">
      <md:firstname xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Rick</md:firstname>
      
      <md:surname xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Simpson</md:surname>
      <md:email xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">rsimpson@alumni.rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
    <md:keyword xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">64 bits</md:keyword>
    <md:keyword xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">address size</md:keyword>
    <md:keyword xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">memory address</md:keyword>
  </md:keywordlist>

  <md:abstract xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">For decades we've used 16-bit and 32-bit computers. Now 64-bit computers are becoming affordable.  This module makes clear the enormous increase in memory addressing capability of 64-bit addresses by comparing the physical sizes of familiar objects.</md:abstract>
</metadata>

<content xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">

<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="hist-sec">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">A bit of history</name>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="element-692">
The first personal computers were <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" src="#machine16">16-bit machines</term>.
They dealt naturally with 16-bit-wide binary quantities: 
they had a <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" src="#wordsize">word size</term> of 16 bits.
This did not affect the size of the numbers that they could 
compute with, but it affected <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" src="#memaddr">memory addressing</term>.
Generally, memory addresses were limited to 16-bit numbers, 
meaning that they ranged between 
<m:math>
  <m:mn>0</m:mn>
</m:math>
and
<m:math>
  <m:apply>
    <m:minus/>
    <m:msup>
      <m:mn>2</m:mn>
      <m:mn>16</m:mn>
    </m:msup>
    <m:mn>1</m:mn>
  </m:apply>
</m:math>, 
or 
<m:math>
  <m:mn>65,535</m:mn>
</m:math>.
That's only 
<cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" document="m13081">64Ki bytes</cnxn>, where 
"Ki" stands for "kilobinary", or 1024. 
While that was enough memory for early BASIC programs, it's not nearly enough for modern programs
that use today's elaborate full-color windowed user interfaces.
</para>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="element-368">
The 16-bit addresses of the early machines were too small even then. 
Hardware schemes involving segmentation registers were introduced so that more than 64K bytes of
memory could be attached to the computer.  
The operating system would manipulate the segmentation registers so that different parts of the
memory could be used by different programs, or by the same program at different times.
Fundamentally, though, the programs had to deal with 16-bit memory addresses.
</para>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="element-729">
It took a computer hardware revolution to fix this.
The new personal computers were <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" src="#machine32">32-bit machines</term>: they used 32-bit integers and 32-bit
memory addresses. 
32-bit memory addresses range from 
<m:math>
  <m:mn>0</m:mn>
</m:math>
to
<m:math>
  <m:apply>
    <m:minus/>
    <m:msup>
      <m:mn>2</m:mn>
      <m:mn>32</m:mn>
    </m:msup>
    <m:mn>1</m:mn>
  </m:apply>
</m:math>,
or <m:math><m:mn>4,294,967,295</m:mn></m:math>.
This is 4Gi bytes, "four gigabinary bytes", a bit more than four billion bytes.
Personal computers didn't actually have this much storage, 
of course (at least not back then), but
the size of the address stopped being a programming problem.
Any ordinary register in the computer could hold a memory address 
that points anywhere in memory.
The operating system had no need to manipulate segmentation 
registers to make it look (at least momentarily) like a 16-bit
register could address whatever data was being used.
</para>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="hist05">
It's difficult to express how big an impact this was on program developers.
Suddenly, size of programs and data was no longer a problem.
Things had to fit in the memory the computer had, but this was much more than 64Ki bytes.
Programming became much simpler; programs could be larger, could 
incorporate more functions, and could do much bigger tasks.
The benefits of the larger address were significant enough that 
it was worth going through <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" src="#porting">porting</term> difficulties in 
order to move operating systems and applications from 16-bit to
32-bit machines.
</para>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="today">
Today 16-bit machines are history as far as personal computers and larger computers are concerned.
16-bit processors are still made (they are generally very inexpensive) but they are used for
specialized purposes such as controlling appliances and automobiles rather than in general-purpose
computers. 
Almost all of today's PCs and large server computers are 32-bit machines, with the exceptions being
<term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" src="#machine64">64-bit machines</term>.
</para>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="element-91">
Sixty-four-bit machines are becoming increasingly common.
Once limited to the machine rooms of large companies because of their expense and 
physical size, 64-bit computers can now be purchased as home PCs.
They use 64-bit integers and 64-bit memory addresses. 
Sixty-four-bit memory addresses range from 
<m:math>
  <m:mn>0</m:mn>
</m:math>
to
<m:math>
  <m:mrow>
    <m:msup>
      <m:mn>2</m:mn>
      <m:mn>64</m:mn>
    </m:msup>
    <m:mo>-</m:mo>
    <m:mn>1</m:mn>
  </m:mrow>
</m:math>,
or 
<m:math>
  <m:mn>18,446,744,073,709,551,615</m:mn>
</m:math>,
or about 
<m:math>
  <m:mrow>
    <m:mn>1.845</m:mn>
    <m:mo>×</m:mo>
    <m:msup>
      <m:mn>10</m:mn>
      <m:mn>19</m:mn>
    </m:msup>
  </m:mrow>
</m:math>, 18.45 exabytes.
Such a large number is well beyond our everyday experience.
We may think we understand how to compare 16-bit and 32-bit memory sizes, 65 thousand to 4 billion, but 
<m:math>
  <m:mrow>
    <m:mn>1.845</m:mn>
    <m:mo>×</m:mo>
    <m:msup>
      <m:mn>10</m:mn>
      <m:mn>19</m:mn>
    </m:msup>
  </m:mrow>
</m:math>.
is beyond our comprehension as just a number.
The goal of this module is to make the size difference real to us by comparing the sizes of 
familiar physical objects.
</para>

</section>
<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="areas">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Comparing surface areas</name>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="element-53">
Let's assume that each individual <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">address</emphasis> in our
computer represents a small <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">area</emphasis> such as a tiny portion of a piece of paper.
The computer's entire memory is represented by the piece of paper, and each memory address 
"addresses" a small part of it.
</para>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="element-255">
We'll start with a 16-bit computer, and assume that 16-bit addresses
can span the surface of a 4-inch square 
<cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" target="notes-sect">Post-it®</cnxn> note (<cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" target="post-it-fig"/>).
</para>

<figure xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="post-it-fig">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Sixteen-bit addressing</name>
<media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="application/postscript" src="post-it.eps">
<media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="image/png" src="post-it.png"/>
</media>
<caption xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">A 16-bit-wide address can span the area of a 4-inch Post-it note (16 sq in; 103 sq cm)</caption>
</figure>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="element-202">
Each individual memory address in our 16-bit computer then represents

<equation xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="eqn1">
  <m:math>
    <m:mrow>
      <m:mfrac>
	<m:mi mathvariant="normal">area of note</m:mi>
	<m:mi mathvariant="normal">memory size</m:mi>
      </m:mfrac>
      <m:mo>=</m:mo>
      <m:mfrac>
	<m:mi mathvariant="normal">16 sq in</m:mi>
	<m:msup><m:mn>2</m:mn><m:mn>16</m:mn></m:msup>
      </m:mfrac>
      <m:mo>=</m:mo>
      <m:mfrac>
	<m:mn>1</m:mn>
	<m:mn>4096</m:mn>
      </m:mfrac>
      <m:mi mathvariant="normal">sq in</m:mi>
      <m:mo>=</m:mo>
      <m:mn>.000244</m:mn><m:mi mathvariant="normal">sq in</m:mi>
      <m:mo>=</m:mo>
      <m:mn>.157</m:mn><m:mi mathvariant="normal">sq mm</m:mi>
    </m:mrow>
  </m:math>
</equation>

Imagine the note covered with an array of tiny squares, each 1/64 inch (.4 mm) on a side. 
This is about the size of a dot made by a pencil with a .4 mm lead. 
Each memory address would then designate one of the small squares (<cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" target="close-up-fig"/>).
</para>

<figure xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="close-up-fig">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Mapping addresses to areas</name>
<media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="application/postscript" src="close-up.eps">
<media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="image/png" src="close-up.png"/>
</media>
<caption xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">The Post-it note divided into small squares, one square per unique 16-bit address</caption>
</figure>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="element-415">
Let's move on to 32-bit addressing and see how much bigger computer memory can be when we 
<emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">double the width</emphasis> of the address.
Each individual address will still represent the same amount of surface area, 
a square 1/64 inch (.4 mm) on a side. 
Now we'll have
<m:math>
  <m:mrow>
    <m:msup>
      <m:mn>2</m:mn>
      <m:mn>32</m:mn>
    </m:msup>
  </m:mrow>
</m:math>
addresses, or 4,294,967,296 rather than 65,536.
<m:math>
  <m:mrow>
    <m:msup>
      <m:mn>2</m:mn>
      <m:mn>32</m:mn>
    </m:msup>
  </m:mrow>
</m:math> is
<m:math>
  <m:mrow>
    <m:msup>
      <m:mfenced>
        <m:msup>
          <m:mn>2</m:mn>
          <m:mn>16</m:mn>
        </m:msup>
      </m:mfenced>
      <m:mn>2</m:mn>
    </m:msup>
  </m:mrow>
</m:math>,
so our 32-bit address covers 65,536 <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">times</emphasis> as much area as our 16-bit address.
This is far too much area for a piece of paper, so we'll have to move to something a bit larger: 
a tennis court, including the surrounding out-of-bounds area
(<cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" target="tennis-fig"/>). 
If you had 65,536 Post-it notes, each 4 inches square, you could just about cover a 
tennis court with them.
</para>

<figure xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="tennis-fig">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Thirty-two-bit addressing</name>
<media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="application/postscript" src="tennis-court.eps">
<media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="image/png" src="tennis-court.png"/>
</media>
<caption xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">A 32-bit address can span the area of a tennis court, 120 by 60 feet (7200 sq ft, 669 sq m)</caption>
</figure>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="huge">
A 32-bit address can span so much more area than a 16-bit address that it goes beyond just
being bigger or even <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">a lot</emphasis> bigger, it's different in some fundamental
way.
The vast increase in the amount of memory that can be addressed by a program means that
not only can existing programs be adapted to deal with larger problems, but new
applications that weren't possible at all on the smaller machine can now be created.
</para>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="sixty-four">
The final step, at least for now, is to a 64-bit address.
Sixty-four-bit machines are still not common today, but they have become affordable even
to consumers (in late 2005, 
<link xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" src="http://www.hp.com">Hewlett-Packard</link>'s 
Internet list price for a workstation containing an AMD Opteron™ 64-bit processor was US $1799). 
Again, the wider address spans so much more memory than in the previous generation that
things are fundamentally different.
To see this, we'll still let each individual address be represented by a tiny square 1/64
inch (.4 mm) on a side.
16-bit addressing required only a Post-it note to represent all the memory, while 32-bit
addressing required a tennis court.
64-bit addressing spans
<m:math>
  <m:msup>
    <m:mn>2</m:mn>
    <m:mn>64</m:mn>
  </m:msup>
</m:math>
bytes, which is 
<m:math>
  <m:mrow>
    <m:msup>
      <m:mfenced>
        <m:msup>
          <m:mn>2</m:mn>
          <m:mn>32</m:mn>
        </m:msup>
      </m:mfenced>
      <m:mn>2</m:mn>
    </m:msup>
  </m:mrow>
</m:math>.
Our 64-bit address spans more than <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">four billion times</emphasis> as much memory
as a 32-bit address.
Even using our tiny square area to represent each memory address requires a considerable
portion of the earth's surface to represent 
<m:math>
  <m:msup>
    <m:mn>2</m:mn>
    <m:mn>64</m:mn>
  </m:msup>
</m:math>
bytes of memory: Western Europe (<cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" target="europe-fig"/>).

</para>

<figure xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="europe-fig">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Sixty-four-bit addressing</name>
<media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="application/postscript" src="europe-outline-map.eps">
<media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="image/png" src="europe-outline-map.png"/>
</media>
<caption xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">A 64-bit address can span the area of most of Western Europe 
(1,123,314 sq mi; 2,909,370 sq km)</caption>
</figure>   

</section>

<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="dist-sect">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Length, distance</name>
<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="dist1">
Let's compare lengths rather than areas.
We'll assume that 16-bit addresses span only half a millimetre, the diameter of a common pencil lead.
Then each individual address represents a length of 
<equation xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="dist-eqn">
<m:math>
  <m:mrow>
    <m:mfrac>
      <m:mrow>
        <m:mn>.5</m:mn>
        <m:mo mathvariant="normal">mm</m:mo>
      </m:mrow>
      <m:msup>
        <m:mn>2</m:mn>
        <m:mn>16</m:mn>
      </m:msup>
    </m:mfrac>
    <m:mo>=</m:mo>
    <m:mn>.0000076</m:mn>
    <m:mo mathvariant="normal">mm</m:mo>
  </m:mrow>
</m:math>
</equation>
This is a tiny length, just .0076 microns. 
When we consider that the width of the tiny lines etched onto a modern computer chip are roughly 1 micron, then we can see how small it really is.
</para>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="dist2">
Now that we've established what length one individual address corresponds to, and we see what 
<m:math>
  <m:msup>
    <m:mn>2</m:mn>
    <m:mn>16</m:mn>
  </m:msup>
</m:math>
of them correspond to (.5 mm), we can scale our length up for 32-bit and 64-bit addressing (<cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" target="dist-fig"/>).
</para>

<figure xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="dist-fig">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Comparing distances</name>
<table xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="dist-table" frame="all">
  <tgroup xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" cols="3" colsep="3" rowsep="1">
    <thead xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
      <row xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">An address this wide</entry>
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Spans this length</entry>
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Which is approximately</entry>
      </row>
    </thead>
    <tbody xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
      <row xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" align="left">16 bits</entry>
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" align="left">.5 mm</entry>
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" align="left">Width of a pencil dot</entry>
      </row>
      <row xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" align="left">32 bits</entry>
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" align="left">114.27 feet (34.83 m)</entry>
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" align="left">Height of a 10-story building</entry>
      </row>
      <row xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" align="left">64 bits</entry>
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" align="left">1 A.U.</entry>
        <entry xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" align="left">Distance from the Earth to the Sun</entry>
      </row>
     </tbody>
  </tgroup>
</table>
</figure>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="dist3">
So if we start with a tiny block so short that 130 of them stacked up would be only 1 micron high, by the time we stack up 
<m:math>
  <m:msup>
    <m:mn>2</m:mn>
    <m:mn>64</m:mn>
  </m:msup>
</m:math>
of them our stack would reach from the Earth to the Sun, about 93,000,000 miles (about 150,000,000 km).
</para>
</section>

<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Time</name>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="times-intro">If we have a disk that will hold 
<m:math>
  <m:msup>
    <m:mn>2</m:mn>
    <m:mn>64</m:mn>
  </m:msup>
</m:math>
bytes of data and we use it to hold one long video recording, how long could
that recording be?</para><para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="element-920">We'll use round numbers to make things easy.
Let's assume that each <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">frame</emphasis> recorded by our video camera consists of 1 megabyte. 
That would be a moderate size image in full color, with no compression.
Like many video cameras, ours records 30 frames each second.
Thus, each second of video will require 30M bytes of space.
</para>
<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="big-disk">

<equation xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="eqn2">
  <m:math>
    <m:mrow>
      <m:mfrac>
	<m:mi mathvariant="normal">total disk bytes</m:mi>
	<m:mi mathvariant="normal">bytes per sec</m:mi>
      </m:mfrac>
      <m:mo>=</m:mo>
      <m:mfrac>
	<m:msup><m:mn>2</m:mn><m:mn>64</m:mn></m:msup>
        <m:mrow>
          <m:mn>30</m:mn>
          <m:mo>×</m:mo>
          <m:msup><m:mn>10</m:mn><m:mn>6</m:mn></m:msup>
        </m:mrow>
      </m:mfrac>
      <m:mo>=</m:mo>
      <m:mn>6.149</m:mn>
      <m:mo>×</m:mo>
      <m:msup><m:mn>10</m:mn><m:mn>11</m:mn></m:msup>  
      <m:mi mathvariant="normal">sec</m:mi>
      <m:mo>=</m:mo>
      <m:mn>19,484</m:mn><m:mi mathvariant="normal">years</m:mi>
    </m:mrow>
  </m:math>
</equation>
</para>

<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="mammoth">
With an 18.45 exabyte disk and a large enough battery, we could have set up a video camera 19,500 years ago, during the last ice age, and let it record continually day and night (<cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" target="mammoth-fig"/>).
It would just be filling up the disk now.
</para>

<figure xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="mammoth-fig">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">A video camera recording for 19,500 years</name>
<media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="application/postscript" src="mammoth-and-camera.eps">
<media xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" type="image/png" src="mammoth-and-camera.png"/>
</media>
<caption xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">A video camera recording for the past 19,500 years would just be filling its 18.45 exabyte disk now</caption>
</figure>
</section>

<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="conclusion-sect">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Conclusion</name>
<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="conclusion1">
By equating various widths of computer memory addresses to familiar objects and then comparing the sizes of those objects, we gain some insight into just how large a 64-bit memory address is.
The cold, hard number 
18,446,744,073,709,551,616
has no real meaning for us, but seeing that that many almost infinitesimal boxes, each less than 1/100 micron high, would make a stack equal in height to the distance between the Earth and the Sun convinces us that 
<m:math>
  <m:msup>
    <m:mn>2</m:mn>
    <m:mn>64</m:mn>
  </m:msup>
</m:math>
is <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/"> really big</emphasis>.
We can see how computer programs can treat memory as a completely different kind of resource on a 64-bit computer, compared to memory on a 32-bit or 16-bit computer.
</para>
<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="conclusion2">
So now we know what "big" means, at least until we see our first 128-bit computer....
</para>
</section>

<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="notes-sect">
<name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Notes</name>
<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="notes-para">
<list xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="notes-list">
<item xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/"><emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">AMD Opteron</emphasis> is a trademark of 
<link xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" src="http://www.amd.com">Advanced Micro Devices</link>.</item>
<item xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/"><emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Intel</emphasis> is a registered trademark of 
<link xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" src="http://www.intel.com">Intel Corporation</link>.</item>
<item xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/"><emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Post-it</emphasis> is a registered trademark of 
<link xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" src="http://www.3m.com">3M Company</link>.</item>

</list>
</para>

</section>

</content>  

<glossary xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">

  <definition xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="machine16">
    <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">16-bit machine</term>
    <meaning xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">A computer with 16-bit-wide internal registers, and an address width of 16 bits.</meaning>
  </definition>

   <definition xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="machine32">
    <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">32-bit machine</term>
    <meaning xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">A computer with 32-bit-wide internal registers, and an address width of 32 bits.</meaning>
  </definition>

  <definition xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="machine64">
    <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">64-bit machine</term>
    <meaning xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">A computer with 64-bit-wide internal registers, and an address width of 64 bits.</meaning>
  </definition>

  <definition xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="wordsize">
    <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Word size</term>
    <meaning xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Originally, this was the "natural" data width of the machine: the amount of data that could be loaded from memory or stored to memory in one operation. It was generally the width of the machine's registers.  As computer to memory interfaces have gotten more elaborate, the word size has less meaning. 32-bit computers based on <cnxn xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" target="notes-sect">Intel</cnxn> proessors still have a "word size" of 16 bits, even though they load and store 32-bit quantities. This is because the definition of "word" has not been changed for Intel's processors since the days of 16-bit machines. Much technical documentation refers to 16-bit words and 32-bit doublewords.  Registers on an Intel 32-bit processor can each hold a doubleword.</meaning>
  </definition>

  <definition xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="memaddr">
    <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Memory addressing</term>
    <meaning xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Computers refer to memory locations by <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">address</emphasis>, where an address is just a number.
Memory addresses typically start at 0 and run to a number that's the total size of memory minus 1 (minus 1 because the first memory location is 0 rather than 1). The amount of memory that a computer can have is determined by the <emphasis xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">width</emphasis> of the memory address, because the width determines how large a number can be used as a memory address.
    </meaning>
  </definition>

  <definition xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="porting">
    <term xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Porting</term>
    <meaning xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/">Moving an existing program from one machine to another. If the machines are identical or almost so, this may mean just copying the program from one place to another. If the machines have different instruction sets, it may mean recompiling the program to generate an executable file for the new machine. If some other aspect of the machine is different, in particular the width of the machine's memory address, it may involve making modifications to the program before recompiling. The effort required to port a program may range from trivial to extremely difficult.</meaning>
  </definition>
</glossary>
</document>
