Friday, March 27, 2015

Inc Motherboard


Once again - If you want more information on how motherboards work How Stuff Works provides a great description of all the different parts and pieces. http://computer.howstuffworks.com/motherboard.htm

Motherboards are really difficult to write about in terms of purchasing. There are so many different boards with varying features. It would take forever to describe all of them and the fluff associated with them. Sadly the integrated functionalities on most these boards aren't even used. Thus in an effort to simplify things I’m going to breakdown the choice into the following categories:

  1. CPU Socket
  2. Chipset
  3. Supported Memory
  4. RAID Controller
  5. BIOS
  6. Number and Type of slots/connections (PCI-e, USB, SATA)
  7. Interesting Features 
So as we learned in the Inc CPU section CPU’s directly impact which motherboards can be used. This boils down to the cpu socket. The CPU we selected contains a LGA 2011-v3 socket.

There are two primary types of CPU sockets, Pin Grid Array (PGA) or Land Grid Array (LGA). Fundamentally the difference between the two are where the pins exist. LGA’s have the pins on the socket rather than the CPU chip. PGA’s are the exact opposite. The socket forms the connection that allows the CPU to function in coordination with the rest of the board components.

Traditionally, CPU sockets would connect to two different microchips called the northbridge and the southbridge; however, because the northbridge needs to be fast most modern CPU architectures actually include the northbridge functionality within the CPU. (Hence the architecture name SandyBridge and IvyBridge on the Intel Processors) Collectively these microchips along with a few others on the board are known as the chipset. Typically these chips match the processor family (In our case Intel) and work in tandem to pass data throughout the board.

To better understand how data travels and how different chips interact we are going to go through a fresh power cycle.

There are a couple of points I’m going to address prior to explaining the power cycle process.
  1. In the future there may exist a low level explanation on the magic of physics and electrical engineering, but for now physics is just that... magic! 
  2. There are absolutely going to be more steps than what I describe. If you want to know more ask and I’ll try to make follow up posts to describe things in greater detail. 
  3. If it weren’t obvious from the above two points...because I’m basically just repeating it over and over again - this is a very simple explanation and more information will be given later 
  4. The process that is about to be described is a perfect world scenario - all pieces and parts are functioning as intended and the fully functional computer is already pieced together. 
Once the computer has power it first does a check. It comes to the first chip which has some super awesome electrical engineering logic that checks and makes sure that all the paths exist to all the parts it needs to run. This process is called POST or Power-On Self-Test. Each piece of hardware is told to initialize via the firmware that is pre-installed. As per point 4 listed above, all of the hardware and firmware are good so we hear a single beep. More EE magic happens which leads us to BIOS or Basic Input-Output System. BIOS is essentially a program which is stored on a separate flash memory chip usually attached to the motherboard. It (like it says in the name) provides the user basic interactive functionality with the computer hardware and its settings.

OK well you may be thinking my PC doesn't have BIOS it uses UEFI (Unified Extensible Firmware Interface). Both UEFI and BIOS accomplish the same task just in two very different ways. In fact you can actually run both UEFI and BIOS alongside each other (Which is actually how most motherboards operate currently). Why would you ever want to run both? Well, UEFI provides several enhancements that are not available in BIOS because of the limitations. So why not just run UEFI? Unfortunately, UEFI only provides some support for legacy BIOS services. So understanding what you need is crucial for determining what you use. A prime example is operating systems. Let’s say you want to run Windows 8. One of the requirements for Windows 8 is UEFI. This is due to a UEFI feature called Secure boot. Secure boot forces a user to use authentic signed drivers for the hardware. This is a big deal for the “typical user” in terms of security and computers, because it makes it significantly more difficult to compromise a computer from a hardware perspective.

So whether it is UEFI or BIOS the next step in the process is the boot step. Both UEFI and BIOS set a boot order. The boot device is selected and depending on both the device and the firmware interface (BIOS or UEFI) information is then loaded into memory and finally the processor. Note that in between all of these junctions lots of physics EE magic happens within the microchips on the motherboard.

One said magical microchip could be a RAID controller or Redundant Array of Independent Disks controller. RAID essentially does exactly what it states. It takes several individual disks attaches them to a controller that creates an array. The RAID controller then determines based on the settings a user provides how data will be distributed to those disks. This is a fairly common feature on most motherboards and directly impacts the how different components see disks.

So we have drives and CPU what about memory? The memory controller often is located within the northbridge, which as we already know is typically inside the CPU. Each channel has a 64 bit bus to the socket (Once upon a time this was 32 - hence the difference between 32 bit and 64 OS). The number of channels supported by the CPU will determine the number of memory slots you will see on the motherboard. For example the CPU we selected supports 4 channels. Typically 4 channels equates to 8 slots. Each channel is associated with two slots on the motherboard. Only one of the two slots may be accessed during a single cycle, making 4 slots accessible total for each cycle. As mentioned in my post on memory a single cycle is relative to the speed of the RAM, since RAM speed is significantly slower than CPU.


4 Channel Architecture
o+o ----64bit bus----|------------|
o+o ----64bit bus----|    CPU    |
o+o ----64bit bus----|   SOCK  |
o+o ----64bit bus----|------------|

each o is a memory socket
SO - o+o is two memory sockets

Going to repeat what I stated in the CPU and memory posts - there are limiting factors that exist within all three elements - making sure CPU, memory and motherboard match with those limitations is the most difficult part when building a PC.

Speed, channels, connection type, type <-
^^^^^^^

Speed (Frequency) - the MHz number usually tagged at the end of the RAM type example DDR4-2133, 2133 is the RAM speed in MHz - Usually the CPU will indicate the supported speeds.

Channels - RAM works best when you buy it in preconfigured channel packs - so if you purchase a motherboard and cpu that both support 4 channels - you will see the best performance out of a RAM set that comes with 4 sticks of RAM for 4 channels. Note - this is not a requirement just a recommendation for an optimized system

Connection type - how many pins does your ram and motherboard contain - do they match? If so WIN!

Type - DDR#, All the #’s have to match for CPU, Motherboard and RAM. No bueno if they don’t so just don’t.

So once all the main components are happy we can start to add the parts all gamers love: Network and Graphics Cards!

Many ages ago there was a slot called AGP or Accelerated Graphics Port. Gamers such as myself thought it was the greatest thing since sliced bread. A bus and slot we could dedicate to making our games look amazing. PCI at the time was shared and the bus speed was not quite what we needed to render what I thought to be intense graphics and textures. Textures were the main selling point of AGP - it provided the ability to access a systems RAM to directly read textures.

So where did AGP go wrong? It just became obsolete. PCI-e supports higher data transfer rates and is not limited to just graphics cards. Board developers saw the benefits of providing a fast, dynamic, multi-channeled slot. AGP is still around but support is very limited and used only for specific types of machines.

Both network and graphics cards now use PCI-e. There really isn't much too it - ultimately you want to make sure your CPU has enough PCI-e channels to support the cards you wish to put in your system and you have enough slots on the motherboard for all of the additional cards.

Note - both of these cards are auxiliary. A large number of motherboards come with integrated networking at a minimum and although graphics isn't as common it too can still be found.

There really are so many things that could be discussed when talking about a motherboard. I found myself going on and on about topics and then deleting because there was just too much. I feel like what was described is a good basis for many more posts to come.

Thursday, February 5, 2015

Inc Random Access Memory (RAM)

Random Access Memory(RAM) is one of the three pieces of the “did I get it right” puzzle. Matching just the bare minimum with RAM, Processor and motherboards may ensure functionality, but what most people do not realize is there is a lot of efficiency as well as money potentially wasted if even small mismatches exist. When reviewing RAM there are really four things that should be looked at:
  1. Frequency (RAM Cycle Speed) 
  2. Supported Channels
  3. Timings
  4. Size (Because it matters)
Since we selected the Intel - Core i7-5960X i’m going to use the memory specifications from the Intel Ark page as an example for numbers.



Intel - Core i7-5960X Ark

If we select a processor first (which we did) we should start by looking at the memory specification for that processor. Why? Because this is the optimal RAM setup for that CPU. If we buy RAM outside of these specs we are probably wasting money. Not saying it won't work but odds are it will be downscaled considerably to match the specs above.

When purchasing RAM usually it is labeled as DDR#-####. DDR stands for Double Data Rate and the number immediately following the DDR indicates the version. The final four digits are the frequency.

 So what does this all mean?
Let’s start with frequency. Frequency is defined as the rate at which something occurs or is repeated over a particular period of time or given sample. (This should be familiar because it was used in the CPU article as well) Usually frequency comes in the form of a wave.

If you aren't familiar with frequence waves and how they work I recommend playing with waves graph using - Fun Frequency Graph

When you think about a single wave (one cycle) there are two sides (up and down). Initially a single command/response was used per full cycle. The double data rate came from using both sides of the wave for transmitting data, thus two commands/responses could be sent for a single cycle. This effectively doubled the rate (DDR) at which data could be transmitted.

With each version iteration of DDR more and more features and logic have been added to improve not only the efficiency but also the capacity. DDR4 the most recent version iteration is no exception. It delivers a considerable amount of benefits over DDR3 ranging from reduced power consumption to incredible gains in DIMM capacity. How big? DDR4’s DIMM capacity is 8 times the size of DDR3’s. Not double, not triple...but 8 times the capacity. Specifically DDR4 has an available capacity of 128 GB, where as it’s predecessor DDR3 a mere DIMM size of 16 GB.

More capacity = better performance = size matters

Capacity doesn't do much unless we can get it to the processor. Inc memory channels! Memory channels are essentially groups of DIMMS that are utilized to boost transfer rates of data between memory banks and the memory controller (previously located in northbridge, but now within the processor)

Dual Channel Example:



Key things to remember when populating DIMM Slots: 
  • DIMM1 must always be filled (On most motherboards)
  • DIMM Colors depend on vendor - Refer to the motherboard guide (In above example A1 and B1 should be populated)
  • Both channels have to match memory size - if Channel A has 4 GB then Channel B must also have 4 GB (This is just a good point of reference - read further down for more information on this)
For the sake of simplicity - use the same vendor and size memory. If possible a memory kit matched with the processor and motherboard is usually the best option - Note - it is possible to mix and match memory; however, it is fairly tricky and often results in degraded performance.

Max Bandwidth - this is where most of the waste comes into play in addition to a lot of math.

Each channel is considered a 64-bit device (Notice this is relevant to system architecture). That means each data transfer cycle 64 bits of data can pass. Since we have four channels (64x4) there are 256 total bits per data transfer cycle.

 Once again to keep things simple - some motherboards have multiple memory module slots on a single channel. Only one of those memory modules is able to use the bus during each cycle. (Example above shows two slots/dimms per channel - if all four are populated only A1 or A2 can pass data on the Channel A bus and only B1 or B2 can pass data over the Channel B bus during a single cycle.)

Since the ram used is DDR (Double Data Rate) two data chunks are transferred for a single memory clock cycle. This means a single data chunk is transferred in half the listed frequency of the RAM.

Example:
We are using DDR4-1600 a single data chunk is delivered in 800 MHz real clock speed. So in a single 1600 MHz cycle 64 x 2 data is actually transferred.

Bandwidth = 800 MHz x 64 b

Since a single cycle is actually 2 of these we double it

Bandwidth = 2(800 x 64)

Since it is calculated in bytes we divide by 8 (8 bits in a byte)

Bandwidth = (2(800 x 64))/8

Bandwidth = 12800 MB/s or 12.5 GB/s

For DDR4-2133 (Which is the highest frequency RAM recommended for our selected processor)  each stick would be 16.6640625 x 4 (channels) = 66.65625 GB/s - thus DDR4-2133 is the highest frequency RAM based on the Max Bandwidth.

The final thing to look at when picking out ram are the timings. Essentially timings are the amount of cycles it takes to complete certain actions. They are often referred to as CAS timings, but CAS latency is only a small portion of it. I’m not going to go into too much detail here - just know the lower the number is the better. Additionally it is possible to modify these numbers but one does this at the risk of losing stability.

I promise I’ll write a more in depth article on RAM - it is truly fascinating and shares a lot of the same technologies as Solid State Drives. In the next post I’ll most likely review motherboards - and following that article I review both RAM and motherboard selections.

Saturday, January 24, 2015

Inc CPU Part 2

In  INC CPU Part 1 we went over a very simplified version of how CPU’s work - in this one we will actually look at available CPUs and determine which one will be the brain of my new PC!


We are going to look at the following attributes for each processor:


1 - Architecture - this essentially provides us with what instructions are available for the processor (Ultimately it is the logical operators available and how they are organized to process the data) - For the sake of this entry we will primarily be looking at the Intel’s Haswell-E architecture, which supports DDR4 RAM.


2 - Clock Speed (Frequency) - the GHz number


3 - Cores - number of processing units


4 - Memory Supported  - (EXAMPLE:  DDR4 2133) Important when selecting motherboard to support processor


5 - CPU Socket - (EXAMPLE:  LGA 2011-v3)  Also Important when selecting motherboard to support processor


6 - Cost - Bye Bye Monies….

So Here we go, I’ve included the primary high end intel desktop processors available - Note that there are no AMD processors, because sadly it is more of a budget gamers pick and we want high end!  - there is also one ivy bridge processor because of clock speed, but because of price point it is probably not a contender but we will see based on other component costs.


Intel - Core i7-5820K
1:  Haswell-E
2:  3.3GHz (Max Turbo - 3.6 GHz)
3:  6 Cores (Supports hyper threading)
4:  DDR4-1333/1600/2133
5:  LGA 2011-v3
6:  Approx - $ 389.99
Other Notable Info:  28 Max # of PCI Express Lanes (Most high end processors support 40 - In a gaming pc with all the additional high end pci-e cards this could be an issue)


Intel - Core i7-5930K
1:  Haswell-E
2:  3.5GHz (Max Turbo - 3.7 GHz)
3:  6 Cores (Supports hyper threading)
4:  DDR4-1333/1600/2133
5:  LGA 2011-v3
6:  Approx - $ 583.99
Other Notable Info:  


Intel - Core i7-5960X
1:  Haswell-E
2:  3.0GHz (Max Turbo - 3.5 GHz)
3:  8 Cores (Supports hyper threading)
4:  DDR4-1333/1600/2133
5:  LGA 2011-v3
6:  Approx - $ 1059.99
Other Notable Info:  


Intel - Core i7-4960X
1:  IvyBridge-E
2:  3.6GHz (Max Turbo - 4.0 GHz)
3:  6 Cores (Supports hyper threading)
4:  DDR3-1333/1600/1866
5:  FCLGA2011
6:  Approx - $ 1059.99
Other Notable Info:  


Luckily - All but the IvyBridge-E processor use the same socket and RAM so when looking at motherboards and RAM we can take that into consideration.  Another thing to keep in mind is overclocking the CPU - after doing a bit of research the Core i7-5960X can be overclocked to as high as 4.6 GHz, which makes it a pretty good deal in terms of clock speed AND cores - additionally Newegg and Amazon list the price point at 1049.99 which is better than suggested retail price on Intel site.


In terms of consistency, stability and reliability all reviews read seem to be very similar in that all three Haswell-E processors run pretty hot, especially overclocked, but are nonetheless stable and consistent  


In terms of processors - we will start by basing the PC off of the Intel - Core i7-5960X - if cost becomes an issue we may look at the Intel - Core i7-5930K.  I think the Intel - Core i7-5820K is a no-go because clock speed is less than the Intel - Core i7-5930K and the number of PCI-e lanes is a little unsettling.  The reason being I’m unsure at this point how many lanes are used by the newer high end PCIe cards (Mainly the graphic and network cards).

Current PC Selections
Component
Selection
Cost
Processor
Intel - Core i7-5960X
$1,049.99
Motherboard


RAM


Graphics Card


Network Card


PSU


Cooling System


Drives


Case


Operating System


Sound Card (Optional)




Current PC Total:  $ 1049.99

Monday, January 19, 2015

Inc CPU Part 1

If we disclude price when it comes to CPU’s there are a few factors that play a fairly important role- Processor clock speed, number of cores available,  supporting motherboards for the CPU socket, supported RAM, and finally consistency as well as stability.  

Ultimately the CPU is the brain and a system should be designed around it.  

While I will briefly go over how CPU’s work - for anyone more curious than the details provided I recommend reading the microprocessor article on how stuff works:  http://computer.howstuffworks.com/microprocessor.htm

Keep in mind that what I’m about to say is grossly over simplified. We have a single core processor.  The processor basically takes in logical problems and provides results.  Example:

We have a single core processor that adds two numbers and replies with their sum.  The only thing this processor does is adds two numbers and provides the sum.

So we send it instructions to add these numbers together:
1 + 2
3 + 6
7 + 2

It first take 1 + 2 and replies with 3
Next 3 + 6 and replies 9
and finally 7 + 2 and replies 9

So let’s say we have an instruction set of 1 billion additions that needs to happen.  In reality modern processors could handle this very quickly, but let’s say it takes 30 seconds per each addition instruction line.  That is a pretty long time and we really don’t want to wait that long for all those sums.  So how do we reduce the time it takes per instruction line?  We increase the clock speed!  Clock speed for modern processors is usually measured in Gigahertz(GHz).  The higher this number is the faster single lines of instructions are processed.  But wait there is more - most modern processors have more than one core!  So while we might be processing 1 billion instructions we also are not limited to a single core to do all the work!

There is just one drawback - let’s say our processors still only add, but it can add any amount of numbers in an instruction line. And let’s say our clock speed is the same for both - however in order to process two numbers it takes 1 cycle of the clock speed.

So we give it:
1 + 2
1 + 1 + 2 + 1 + 2 + 5
2 + 3
5 + 2

And now we have two cores within the processor:

(Clock Cycle 1)
Core 1 processes 1 + 2  (Replies 3)
(At the same time) Core 2 processes 1 + 1 + 2 + 1 + 2 + 5

(Clock Cycle 2)
(First cycle replaced 1 + 2 with 2)  Core 2 processes 2 + 2 + 1 + 2 + 5
Core 1 processes 2 + 3 (Replies 5)

(Clock Cycle 3)
Core 2 processes 4 + 1 + 2 + 5
Core 1 processes 5 + 2 (Replies 7)

(Clock Cycle 4)
Core 2 processes 5 + 2 + 5
Core 1 processes nothing (Notice that it cannot help core 2 out despite there still being extra info to process)

(Clock Cycle 5)
Core 2 processes 7 + 5 (Replies 12)
Core 1 processes nothing

Despite having two cores only one core is given access to an instruction line.  Unfortunately the developers are the ones who determine what an instruction line includes.  Thus having more cores isn’t always better when trying to process data.  

With that being said in the next article we'll look at a few CPU’s available on the market -

Sunday, January 18, 2015

New PC Inc

I’m building a new PC!  The first step is trying to figure out what I’m going to use it for. 


With that being said - let’s get started!


Gaming and streaming are two of the biggest reasons for the new build.  I currently have SLI’d Nvidia GeForce GTX 460s - they were great when  I first got them several years ago, but there are so many new features available with the newer graphics chipsets I feel like I’m missing out.


While I could just update the graphic cards, the draw of DDR4 with a Haswell processor is also appealing.  This means $$$ - so I really have to know what I want and where to sacrifice so I’m not spending way more than what I really need.


Don’t get me wrong building a computer with 8x SLI’d Nvidia Titan Z, 1T of DDR4 RAM, 8 core 4GHz Haswell  w/16x 2TB SSDs….sounds amazing (Pretty sure it isn’t even possible in desktop computing, because of capped out buses on current motherboards available)  And even if it was possible there is no computing at this point where I’d actually ever be able to utilize it.  Not to mention the astronomical price to accompany it.  Unfortunately it is...not something I can afford.  


So what does it take to game and stream these days?  What type of compute is required?


It boils down to five high level components -


1 - CPU - How fast can data be processed
2 - RAM - How fast and how much data can be processed
3 - Graphics Card - How fast and how much graphical-type data be processed
4 - Drive - Load times….I feel like I’m preaching at this point
5 - NIC - HOLY CRAP NO WAY MORE SPEED??

We as gamers are purely looking for speed...in a way PC’s are our cars and we care about three things...efficiency, reliability and speed.  


Much like gaming streaming just requires more of the same.

With that let’s see what we can build!  - Next up let’s figure out a CPU!

Saturday, April 26, 2014

Good Intentions

My original intentions were to make this sort of a how to blog for Linux technologies; however, all I seem to want to write about are the ways technology impact lives, the relationships between real and virtual worlds, and my curiosity.  While some of that may be interesting, most tech gurus read to learn.  Unfortunately at this point in time our lives are finite and my opinions on technology sometimes may not be logical or relevant.  With that being said….let the learning begin!

Monday, March 17, 2014

Ports...

Recently I was asked about ports and it made me realize how little I knew about them….not only that but what I did know I wasn't exactly confident about.  In Linux there are 65536 standard ports.  This is actually a packet limitation not Linux.   Within a packet there is a space allocated for Source Port and Destination Port each space is 16 bit.  So the result is 2^16 = 65536 or 0 through 65535.  So that means there are 65536 places for a remote application to communicate.  Now it is important to note these are not physical ports, they are 100% software and are bound by the limitations of the protocols that utilize them (Primarily UDP/TCP).  The physical component would be the network interface card better known as a NIC.  Each NIC can have one or more physical ports associated with it….not to be confused with the software ports previously mentioned.
So…why all the fuss over ports?
Well the questions I was asked involved port limitations.  For instance can more than one connection exist on a port at any given time? 
I guess to start with it is important to realize that a port is nothing more than a construct with which an application can utilize for a specific type of communication.   Can a physical port receive more than one packet at a time?  No.  So how can a software port maintain more than one connection?  See this is where things get interesting….because while we like to think of a port as a place to dock and stay a while it really isn't.  It is more or less just a number with which an application binds to in order to receive packets…a filtering mechanism more or less for network traffic at the application layer.
So how are connections made then?  The socket!  A socket is a connection between two sources usually defined by the source IP/Port and destination IP/Port.  In the client server model typically the server listens on a specific port for incoming connections while the client picks from a range of ports to connect with.
Example:
Server A:
   IP: 5.6.7.8
   PORT:3000
CLIENT A:
   IP: 9.6.7.1
   PORT:5000
CLIENT A:
   IP: 9.6.7.1
   PORT:5001
CLIENT B:
   IP: 9.6.7.2
   PORT:5000
So CLIENT A has two connections to the server identified as:
Connection 1:  5.6.7.8:3000-9.6.7.1:5000
Connection 2:  5.6.7.8:3000-9.6.7.1:5001
And CLIENT B has one connection as:
Connection 1:  5.6.7.8:3000-9.6.7.2:5000

So can a port have multiple connections at the same time?  Yes.