Overview

Description
------------
    cpu package reports (some) processor topology information

    Note that the term package refers to a physical processor
    and system refers to multiple packages. Also, a processor's
    hardware capability may differ from its configuration.

Usage
-----
    See cpu_example.go for output information and usage

Installation
------------
    $ go get bitbucket.org/jpoirier/cpu

Testing
-------
    $ go run cpu_example.go

TODO
----
- add error enumerations
- if 64-bit, or newer 32-bit, and the leaf value is less than 4 check IA32_MISC_ENABLES bit 22

Misc
----
- Package refers to a physical processor that plugs in to a socket
- Core refers to a physical sub-system of a package. A core may contain 1 or more logical processors.
- A logical processor refers to a hardware resource that can execute a single thread.
- Hyper-threading refers to the technology that allows a processor core to provide the functionality of more than one logical core.
- Simultaneous Multi-Threading refers to multiple logical processors within the same core.
- MultiCore Processor contains more than one physical core.
- MultiProcessor Platform contains multiple physical sockets.
- Hardware Multithreading refers to any combination of hardware support to allow multithreading, 
  which could be any combination of SMT, multi-core, and multi-processor.
- Processor Topology is the hierarchical relationship of shared vs dedicated hardware resources.