Académique Documents
Professionnel Documents
Culture Documents
The question of why we need 64-bit computing is often asked but rarely answered in
a satisfactory manner. There are good reasons for the confusion surrounding the
question.
That is why first of all; let's look through the list of users who need 64 addressing
and 64-bit calculations today:
• Users of data bases. Any big company has a huge data base, and extension of
the maximum memory size and possibility to address data directly in the data
base is very costly. Although in the special modes the 32bit architecture IA32
can address up to 64GB memory, a transition to the flat memory model in the
64bit space is much more advantageous in terms of speed and ease of
programming.
• Scientific calculations. Memory size, a flat memory model and no limitation for
processed data are the key factors here. Besides, some algorithms in the 64bit
representation have a much simpler form.
• Cryptography and safety ensuring applications get a great benefit from 64bit
integer calculations.
What is 64-bit computing?
The labels "16-bit," "32-bit" or "64-bit," when applied to a microprocessor,
characterize the processor's data stream. Although you may have heard the term
"64-bit code," this designates code that operates on 64-bit data.
In more specific terms, the labels "64-bit," 32-bit," etc. designate the number of bits
that each of the processor's general-purpose registers (GPRs) can hold. So when
someone uses the term "64-bit processor," what they mean is "a processor with GPRs
that store 64-bit numbers." And in the same vein, a "64-bit instruction" is an
instruction that operates on 64-bit numbers.
In the diagram above black boxes are code, white boxes are data, and gray boxes are
results. The instruction and code "sizes" are not to be taken literally, since they're
intended to convey a general feel for what it means to "widen" a processor from 32
bits to 64 bits.
Not all the data either in memory, the cache, or the registers is 64-bit data. Rather,
the data sizes are mixed, with 64 bits being the widest.
Note that in the 64-bit CPU pictured above, the width of the code stream has not
changed; the same-sized opcode could theoretically represent an instruction that
operates on 32-bit numbers or an instruction that operates on 64-bit numbers,
depending on what the opcode's default data size is. On the other hand, the width of
the data stream has doubled. In order to accommodate the wider data stream, the
sizes of the processor's registers and the sizes of the internal data paths that feed
those registers must be doubled.
Now let's take a look at two programming models, one for a 32-bit processor and
another for a 64-bit
The registers in the 64-bit CPU pictured above are twice as wide as those in the 32-
bit CPU, but the size of the instruction register (IR) that holds the currently executing
instruction is the same in both processors. Again, the data stream has doubled in
size, but the instruction stream has not. Finally, the program counter (PC) has also
doubled in size.
For the simple processor pictured above, the two types of data that it can process are
integer data and address data. Ultimately, addresses are really just integers that
designate a memory address, so address data is just a special type of integer data.
Hence, both data types are stored in the GPRs and both integer and address
calculations are done by the ALU.
Many modern processors support two additional data types: floating-point data and
vector data. Each of these two data types has its own set of registers and its own
execution unit(s). The following table compares all four data types in 32-bit and 64-
bit processors:
Data Type Register Type Execution Unit x86 width x86-64 width
Integer GPR ALU 32 64
Address GPR ALU OR AGU 32 64
Floating Point* FPR FPU 64 64
Vector VR VPU 128 128
*x87 uses 80-bit registers to do double-precision floating-point. The floats themselves are 64-bit, but the
processor converts them to an internal, 80-bit format for increased precision when doing computations.
From the table above that the difference the move to 64 bits makes is in the integer
and address hardware. The floating-point and vector hardware stays the same.
Now that we know what 64-bit computing is, let's take a look at the benefits of
increased integer and data sizes.
Dynamic range
The main thing that a wider integer gives you is increased dynamic range.
In the base-10 number system to which we're all accustomed, you can represent a
maximum of ten integers (0 to 9) with a single digit. This is because base-10 has ten
different symbols with which to represent numbers. To represent more than ten
integers you need to add another digit, using a combination of two symbols chosen
from among the set of ten to represent any one of 100 integers (00 to 99). The
general formula that you can use to compute the number of integers (dynamic range,
or DR) that you can represent with an n-digit base-ten number is:
DR = 10n
So a 1-digit number gives you 101 = 10 possible integers, a 2-digit number 102 =
100 integers, a 3-digit number 103 = 1000 integers, and so on.
The base-2, or "binary," number system that computers use has only two symbols
with which to represent integers: 0 and 1. Thus, a single-digit binary number allows
you to represent only two integers, 0 and 1. With a two-digit (or "2-bit") binary, you
can represent four integers by combining the two symbols (0 and 1) in any of the
following four ways:
00 = 0
01 = 1
10 = 2
11 = 3
Similarly, a 3-bit binary number gives you eight possible combinations, which you
can use to represent eight different integers. As you increase the number of bits, you
increase the number of integers you can represent. In general, n bits will allow you to
represent 2n integers in binary. So a 4-bit binary number can represent 24 or 16
integers, an 8-bit number gives you 28=256 integers, and so on.
So in moving from a 32-bit GPR to a 64-bit GPR, the range of integers that a
processor can manipulate goes from 232 = 4.3e9 to 264 = 1.8e19. The dynamic range,
then, increases by a factor of 4.3 billion. Thus a 64-bit integer can represent a much
larger range of numbers than a 32-bit integer.
Or, how the existing 64-bit computing market uses 64-bit integers?
So, what do you do with over 4GB of memory? Well, caching a very
large database in it is a start. Back-end servers for mammoth databases are one
place where 64 bits have long been a requirement, so it's no surprise to see
upcoming 64-bit offerings billed as capable database platforms.
On the media and content creation side of things, folks who work with very large 2D
image files also appreciate the extra RAM. And a related, much interesting
application domain where large amounts of memory come in handy is in simulation
and modeling. Under this heading you could put various CAD tools and 3D rendering
programs, as well as things like weather and scientific simulations, and even real-
time 3D games. Though the current crop of 3D games wouldn't benefit from greater
than 4GB of RAM, it is quite possible that we'll see a game that benefits from greater
than 4GB RAM within the next five years.
Finally, there is another application domain for which 64-bit integers can offer real
benefits: cryptography. Most popular encryption schemes rely on the multiplication
and factoring of very large integers and the larger the integers the more secure the
encryption.
64-bit integer code runs slowly on a 32-bit machine, due to the fact that the 64-bit
computations have to be split apart and processed as two separate 32-bit
computations. So you could say that there's a performance penalty for running 64-bit
integer code on a 32-bit machine; this penalty is absent when running the same code
on a 64-bit machine, since the computation doesn't have to be split in two. The take-
home point here is that only applications that require and use 64-bit integers will see
a performance increase on 64-bit hardware that is due solely to a 64-bit processor's
wider registers and increased dynamic range.
64 bit Architectures
Let’s discuss 64 bit Architectures from the leaders of Processor Manufacturers – AMD
& Intel (AMD’s Opteron & Intel’s Itanium).
By using a technique called VLIW, the letters VLIW mean “Very Large Instruction
Word”. Processors that use this technique access the memory by transferring long
program words, and in each word many instructions are packed. In the case of the
IA-64, three instructions are used for each pack of 128 bits. As each instruction has
41 bits, there are 5 bits left that will be used to indicate the kinds of instruction that
were packed. Figure 1 shows the instruction packaging scheme. This packaging
lessens the number of memory accesses, leaving to the compiler the task of grouping
the instructions in order to get the best of the architecture.
As it has already been said, the 5-bit field, named as “pointer”, serves to indicate the
kinds of instructions that are packed. Those 5 bits offer 32 kinds of packaging
possible that, in fact, are reduced to 24 kinds, since 8 are not used. Each instruction
uses one of the CPU features, which are listed below, and that can be identified in
Figure given below.
The architecture that Intel suggests to execute those instructions, that was called
Itanium, is versatile and promises performance by means of the simultaneous
(parallel) execution of up to 6 instructions. Figure shows the diagram in blocks of this
architecture that uses a ‘pipeline’ of 10 stages.
Block diagram of the Itanium CPU (IA-64 architecture).
The basic structural unit of the Itanium looks like the picture above. The data bus can
cope according to Intel with a data rate of 2.1GB/sec. The Itanium processor contains
4 integer ALUs, 4 multimedia ALUs, 2 AGUs, 3 branching units and 4 FPUs for
arithmetic with floating point numbers. The processor is capable of theoretically
performing 20 operations in one clock cycle by loading 16 operands and evaluating 4
ALU operations. This possibility should not be confused with the number of
instructions possible within one clock cycle - namely six. The instructions are
retrieved from memory and are bundled by a process called bundle rotation; this
prepares the execution of parallel instructions on the hardware level. The instructions
are fetched from the cache speculatively. All this is implemented with the help of 128
floating point registers, 128 integer registers and 8 branching registers, which all
support explicitly 64-bits
The IA-64 architecture receives the sigla EPIC, which means “Explicit Parallel
Instruction Computing”. By using this sigla, Intel wants to say that the compiler will
be the great responsible for determining and clearing the parallelism present in the
instructions to be executed. This is a combination of concepts called speculation,
predication and explicit parallelism.
Explicit parallelism:
The Instruction Level Parallelism - ILP is the ability of executing multiple instructions
at the same time. As we have seen, the IA-64 architecture allows to pack
independent instructions to be executed in parallel and, for each clock period, is
capable of treating multiple packs. Due to the great number of features in parallel, as
well as the great number of registers and multiple executing units, it is possible for
the compiler to manage and program the parallel computing. The compilers used for
the traditional architectures are limited in their speculative capacity because there is
not always a way to be sure if the speculation will be correctly managed by the
processor. The IA-64 architecture allows the compiler to explore the speculative
information without sacrificing the correct execution of an application.
Speculation:
The Itanium can load instructions and data onto the CPU before they're actually
needed or even if they prove not to be needed, effectively using the processor itself
as a cache. Presumably, this early loading is done when the processor is otherwise
idle. The advantage gained by speculation limits the effects of memory latency by
allowing loading of data before it is needed, thus making it ready to go the moment
the processor can use it.
There are two kinds of speculation: data and control. With the speculation, the
compiler advances an operation in a way that its latency (time spent) is removed
from the critical way. The speculation is a form of allowing the compiler to avoid that
slow operations spoil the parallelism of the instructions. Control speculation is the
execution of an operation before the branch that precedes it. On the other hand, data
speculation is the execution of a memory load before a storage operation (store) that
precedes it and with which it can be related.
Speculation Benefits:
Reduces impact of memory latency .Reduces impact of memory latency
Performance improvement at 79% when combined with predication*.
Greatest improvement to code with many cache accesses large databases and
operating systems.ems
Scheduling flexibility enables new levels of performance headroom levels of
performance headroom
Predication:
Predication Benefits:
Reduces branches and mispredict penalties.
Parallel compares further reduce critical paths Parallel compares further reduce itical
paths
Greatly improves code with hard to predict branches ranches
Large server apps- capacity limited .e server apps- capacity limited
Sorting, data mining- large database apps .Sorting, data mining- large
database apps
Data compression Data compression
Traditional architectures’ “bolt-on” approach can’t efficiently approximate predication.
Cmove: 39% more instructions, 30% lower performance.39% m
Instructions must all be speculative.
The IA-64 architecture has a great number of registers. There are 128 integer
registers, 128 floating-point registers, 64 predicate registers of 1 bit, and many other
registers for configuration, management and monitoring of the CPU’s performance.
Rotating Registers
On top of the frames, there's register rotation, a feature that helps loop unrolling
more than parameter passing. With rotation, Itanium can shift up to 96 of its
general-purpose registers (the first 32 are still fixed and global) by one or more
apparent positions. Why? So that iterative loops that hammer on the same register
(s) time after time can all be dispatched and executed at once without stepping on
each other. Each instance of the loop actually targets different physical registers,
allowing them all to be in flight at once.
If this sounds a lot like register renaming, it is. Itanium's register-rotation feature is
less generic than all-purpose register renaming like Athlon's, so it's easier to
implement and faster to execute. Chip-wide register renaming like Athlon's adds gobs
of multiplexers, adders, and routing, one of the big drawbacks of a massively out-of-
order machine. On a smaller scale, ARM used this trick with its ill-fated Piccolo DSP
coprocessor. At the high end, Cydrome also used this technique, a favorite feature
that Cydrome alumnus and Itanium team member Bob Rau apparently brought with
him.
So IA-64 has two levels of indirection for its own registers: the logical-to-virtual
mapping of the frames and the virtual-to-physical mapping of the rotation. All this
means that programs usually aren't accessing the physical registers they think they
are, but that's nothing new to high-end microprocessors. Arcane as it seems, this
method still uses less hardware trickery than the full register renaming of Athlon,
Pentium III, or P4.
Intel promises compatibility with the 32-bit software (IA-32). They should run
without any change since the operating system and the firmware have features for
that. It should be possible to run software in real mode (16 bits), protected mode (32
bits) and virtual mode 86 (16 bits). They mean that the CPU will be able to operate
in IA-64 mode or IA-32 mode. There are special instructions to go from one mode to
the other, as it is shown in Figure 3.
The three instructions that make the transition between the instruction sets are:
rfi (IA-64): it is the return of the interruption; the return happens both to an IA-32
situation and to an IA-64, depending on the situation present at the moment when
the interruption is invoked.
Athlon 64 and AMD's 64-bit technology
64-bit architecture
Introduction:
To get a first idea, how the 64-bit architecture works and also how it differs
significantly from a 32-bit implementation it is useful to consider one definition first:
The most important parts, which define a 64-bit architecture are boldfaced and give a
rough idea that one can now process not only 2^32 = 4294967296 basic units of
information, but 2^64 = 18446744073709551616 units. The numbers are quite
impressive and show that the architecture level has to be updated accordingly.
There are several companies, which actually implemented 64-bit processors, but the
two main companies are AMD and Intel. Other enterprises certainly have their place
in the development of 64-bit processors, too, but the mainstream market is going to
face those products by AMD and Intel. Therefore it is reasonable to explain, how
those two companies designed the 64-bit processors and moreover there are only
details to consider in translating the two special layouts and implementations to the
general concept. There are quite some differences how the two companies chose to
convert 32-bit programs to work with the 64-bit architecture and those differences
will be outlined in the 32-bit part of this document, but in the following part the
structure of a "pure" 64-bit architectural level will be outlined. As there is not much
public information available about the physical structure of current 64-bit processors
due to the fact that neither AMD nor Intel want to provide crucial information to the
corresponding rival on the processor market it is useful to focus on the instruction set
architecture (ISA) and the general differences between a 32-bit processor and the
new 64-bit one.
With the successful introduction of the Opteron processor, AMD completed one half of
its forecast entry into the 64-bit processing world. It is based on an evolution of the
x86 instruction set used by current 32-bit processors made by Intel and AMD, the
Opteron is targeted at the high to mid-range server and workstation market.
The second processor released under the AMD64 architecture will be the Athlon 64,
formerly known as 'Claw hammer,' which aims to bring 64-bit computing power to
the desktop and mobile markets. The Athlon 64 will be a slightly hobbled version of
the Opteron, and with its built in compatibility with current software and operating
systems, will attempt to bridge the gap easily between 32-bit and 64-bit computing
environments.
We will focus on the Athlon 64 and what it will offer to home users and PC
enthusiasts, as well as covering the important details of the AMD64 platform. The
Opteron and the Athlon 64 share an identical base architecture.
AMD has positioned the Opteron as the solution to many system needs, with the
primary goal of providing a 64-bit physical architecture while supplying high-end
performance for both 64- and 32-bit software. This translates into architectural
advantages such as 64-bit data and address pathways, upgraded physical and virtual
memory addressing, and a true 64-bit internal design.
The other main innovation has been to move key Northbridge functions from the
system chipset directly into the Opteron core. These include a memory controller,
multiprocessing control, and data flow, along with a bridge to peripheral data traffic.
Traditional Southbridge and AGP components are still present in the Opteron
architecture, but AMD's eighth-generation processor has absconded with the main
performance and CPU-centric duties.
The Opteron core resembles the basic design of the Athlon XP, but the move to a 64-
bit architecture has brought some inherent advantages. Both the Opteron and Athlon
XP contain a few similar features, such as 64K apiece of Level 1 data and instruction
cache and three apiece of integer and floating-point units, but there have been some
noted improvements elsewhere. In terms of basic features, the Opteron includes a
full 1MB of Level 2 cache on the inside, along with an integrated heat spreader and
new Socket 940 packaging on the outside.
Looking a bit deeper, AMD has improved on its seventh-generation design in other
ways. A processor's registers are like miniature cache areas where crucial data is
stored and retrieved; the Opteron features eight more general-purpose registers, and
these have been extended to 64 bits. AMD has also added eight 128-bit Streaming
SIMD Extension (SSE) registers for multimedia instructions, as well as compatibility
with the SSE2 instructions that premiered in Intel's Pentium 4.
The chip's transaction look-aside buffers are larger and offer lower latencies than
those of the Athlon XP. Branch prediction is also enhanced, including an increase to
16K bimodal/history counters, or four times the level found on the Athlon XP.
This last note is important, because in order to provide higher frequencies and better
scalability, AMD has extended the Opteron pipelines. The Opteron features a 12-
stage integer operation pipeline (versus 10 stages for the Athlon XP) and a 17-stage
floating-point operation pipeline (versus 15 for the Athlon XP). While this pays
dividends on higher potential clock speeds, it also incurs a risk of increased prediction
misses, so AMD has adjusted the architecture to provide even higher pipeline
efficiencies than the Athlon XP.
The Opteron also has built-in core logic to support multiprocessor systems without
the need for a Northbridge chip. Internal CPU data traffic is all routed through a
crossbar (XBAR) communications architecture, which shuttles command and data
information between the CPU, memory controller, and three HyperTransport links.
This is a huge technological leap for multiprocessor workstation and server designs,
as it provides a true standard for OEMs to work with, and takes the Northbridge
component out of the equation.
Since each CPU has its own memory controller, memory bandwidth will also scale in
multiprocessor systems. For example, a 2-way Opteron workstation will yield
10.6GB/sec of memory bandwidth, while a 4-way Opteron server will double this
again to an incredible 21.3GB/sec, along with supporting up to 32 DDR DIMMs.
To access an area in the computer's physical memory (RAM) to store or retrieve data,
the processor needs the address of that location, which is an integer number
representing one byte of memory storage.
Suddenly, having 64-bit registers makes sense as, while a 32-bit processor can
access up to 4.3 billion memory addresses (232) for a total of about 4GB of physical
memory, a 64-bit processor could conceivably access over 18 petabytes of physical
memory. This is the one area that clearly shows why 64-bit processors are the future
of computing, as demanding applications such as databases have long been scraping
on the 4GB memory ceiling.
There are several advantages to this. First, obviously, reworking code for AMD 64-bit
processors should be considerably easier, since the basis is the same. Secondly, the
AMD64 based Opteron and Athlon 64, are fully compatible with 32-bit applications.
A system based on either of these processors can use a 32-bit operating system and
software without a hitch, providing a stress free upgrade path for businesses and
opening up the desktop market to 64-bit processors, and more specifically, AMD's
Athlon 64.
AMD accomplishes this by enabling the AMD64 processors to run in one of two
modes, Legacy mode and Long mode. Legacy mode removes all 64-bit support and
enables the processor to run strictly in 32-bit mode, necessary for running most
current operating systems, including Windows. Long mode is comprised of two sub
modes, Compatibility mode and 64-bit mode.
This provides some improved performance for demanding 32-bit apps before they are
ported over to 64-bit. 64-bit mode is intended for a pure 64-bit environment,
operating system and software, and offers one huge advantage.....
AMD - Instruction Set Architecture:
The most basic units of organization for the instructions are specified the following
way (see AMD manual again - page 38/39):
1. General Purpose Instructions: The basic integer instructions, which are used
nearly everywhere. Also often referred to as the x86 instruction set and easily
illustrated by examples like addition of integers, moving, load, store, shifts
and so on.
3. 64-bit Media Instructions: Also SIMD instructions and not much different in
use compared to the 128-bit instructions.
4. Floating Point Instructions: As GPIs only work for integers, these instructions
are designed to have a suitable tool for floating point operations.
When the LMA is activated the maximum speed for instructions to be performed is
enabled and this is usually done by the operating system. This is the stage we would
like to call "pure" 64-bit mode and this mode can be recognized for both
architectures, the one described here from AMD and the Intel IA64 described later on
this page. For the following part of the analysis we assume that LMA is activated and
the processor is in "pure" 64-bit mode, which is not to be confused with legacy mode
or long mode compatibility mode; these are features to support the transition from
32-bit machines and software to the new architecture. Those should not be
considered yet, but in the 32-bit section. The default size for operands is 32-bits in
contrast to the 16-bits of the 32-bit architecture. The REX registers, which is the
common name for the 8 new GPRs R8-R15 - specify whether one would like to accept
this default value or to extend to virtual 64-bits (basically a concatenation of two
registers). This means that some of the instructions for the opcode had to be
redefined to allow the virtual 64-bit addressing. Nevertheless, these are only minor
changes and most parts of the opcode are carried over from a 32-bit processor. The
memory is a single flat address space starting at the address 0 and is distributed
linearly over 64-bits. The operating system can specify several levels of data
access/protection for the address space. The segment registers to access memory
locations are set to a canonical position - namely 0 - and it is not possible for the
processor to access all segmented registers. This is essentially a real simplification
compared to 32-bit processing and all the compatibility modes offered by AMD. It is
just pure memory addressing from 0 to 2^64 -1 without any specialties. This concept
shows on the micro level what the goal of the complete architecture is. The search for
more simplicity, more raw computing power and preparation for large amounts of
data. Another cornerstone of this path is the possibility to translate all the virtual 64-
address space in physical memory in a one-to-one translation process. Paging can be
performed on the virtual address directly. The bytes themselves are ordered
according to little/low Endean and so are all the data and instructions. The
instructions do not really "change" in the sense that there a structural redesign has
happened. The size of the operands is the crucial factor. Consider for example this
instruction: 48 B8 1234567812345678. The 48 specifies the length of the operands:
64-bits! The opcode B8 is also used in the 32-bit architecture and the remaining part
is just an 8-bit immediate value and we are computing with a 64-bit processor.
• Absolute Address: given as displacements from the base - for 64-bits just 0)
• String Addresses
And again one realizes that there are no real differences in the structure compared to
non-64-bit ISAs. The PC, the Stack and absolute addressing just carry over with
more bits. The RIP (relative instruction pointer / program counter) keeps its function,
but due to 64-bits provides a more efficient way to directly access segments of code
with relative addressing. This is one reason, why there is a significant increase in
speed for the AMD 64-bit architecture - direct access to program code.
Both the Opteron and the Athlon 64 contain 8 extra registers useable only in 64-bit
mode, which should increase application performance significantly.
One of the largest problems in modern computer design is the presence of
bottlenecks, or areas of low performance which slow an otherwise fast system down.
In most modern computers, data intended for the video and main memory needs to
be passed to and through the Northbridge chip on the motherboard, and data from
other sources like USB connections, PCI slots or hard-drives must pass through the
Southbridge chip, then the Northbridge.
With the amount of information that needs to be squeezed through the various data
buses into the processor to be operated on, bottlenecks inevitably develop, where the
processor is waiting for the necessary bits to be delivered by the I/O subsystem
feeding it.
As processors get consistently faster every few months, while data bus
breakthroughs are irregular, the issue perpetuates itself.
AMD has attempted to get around this constant problem by equipping its 64-bit
processors with two advantages, internal DDR memory controllers and
Hypertransport links. AMD has built the memory controller (normally a part of the
motherboard to which the processor is attached), directly into their Opteron and
Athlon 64 CPUs.
As you can imagine, this gives a considerably reduces the time it takes the processor
to access memory, since while data still needs to travel between the processor and
the physical memory, communication with the controller that arranges the data flow
does not need to be passed outside the processor, reducing the amount of computing
cycles lost while waiting for the memory.
Another benefit is the fact that memory traffic no longer needs to run between the
processor and the Northbridge chip on the motherboard which traditionally provides
the memory controller, reducing bottlenecks. The second part of the package is
support for Hypertransport input/output technology.
HyperTransport™ technology
Appear transparent to operating systems and offer little impact on peripheral drivers.
Conclusion
With this article and the previous one, that mention the 64-bit architectures by Intel
and AMD, we finished to talk about the processors for the beginning of the
millennium. In addition, it is important to mention that there already are computers
running 64-bit versions of Windows and Linux. Now, more than performance, our
biggest concern is the compatibility with our present programs. We really have to
verify how much those 64-bit architectures are compatible with our 32- or 16-bit
programs. We hope that in less than a year we already have the answer to this
question. To finish this part of 64-bit CPUs, it is very good to see how the two
companies compete in the market of high performance processors. This grants us
access to even cheaper and better computers.
To conclude, we would like to comment the great space that there still is to the
evolution of electronics and consequently to the evolution of computers. More
important than the creation of supercomputers, this new age will see the
permeability of the computers. It will be the time of invisible computers. They will be
present in nearly all modern devices. At the moment they inhabit our TV sets,
microwave ovens, cars, watches, stereos, DVD, etc... In a near future, they will
invade the refrigerator, the toaster, the air-conditioner and all everyday appliances.
We have gone beyond the cheap electronics age and we are entering the cheap
intelligence age.
References
References for this part are basically placed in the appropriate positions - this list gives an
overview:
- Search390.com:
http://search390.techtarget.com/sDefinition/0,,sid10_gci498697,00.html
- Presentation IA-64:
http://www.eg.bucknell.edu/~bsprunt/comp_arch/intel/ia64_tutorial.pdf