## Quick Binary Bit background

In computing we use a unit of information with two values 0 or 1, which is called a bit. Now with either a 0 or 1, how do we go about representing the number 6 or 9? We could write 111111 and 111111111111, but you will see that this will require a lot of space to show larger number. If we use Binary (base-2), then the position of the 0/1 will relate to a corresponding value which in binary are 1,2,4,8,16,32,64,128 etc. Note that this is 2 to the power n where n is the position of the value starting from 0. The positions would be read from right to left, so Pos 7, Pos 6, Pos 5,Pos 4, Pos 3, Pos 2, Pos 1 and finally Pos 0. Perhaps therefore the decimal number values would be more easily understood if written as 128,64,32,16,8,4,2,1.

2 to Power 0 = 1

2 to Power 1 = 2

2 to Power 2 = 4 (2×2)

2 to Power 3 = 8 (2x2x2)

2 to Power 4 = 16(2x2x2x2)

2 to Power 5 = 32(2x2x2x2x2)

2 to Power 6 = 64(2x2x2x2x2x2)

2 to Power 7 = 128(2x2x2x2x2x2x2)

The number 6 is therefore represented by setting 1 in position 1, and position 2. Which would look like this 0 0 0 0 0 1 1 0. (Position zero is set to 0 so even number)

The number 9 is therefore represented by setting 1 in position 0, and position 3. Which would look like this 0 0 0 0 1 0 0 1. (Position zero is set to 1 so odd number)

### Time for a quick Byte?

Now I have not chosen to show 8 bit positions randomly, as this group of 8 is referred to as a Byte. Where this gets complicated is that from this point on there are two ways to group the data units, which are either binary (base-2) or decimal (base-10).

As numbers get larger we assign a prefix denoting that it is to be multiplied by X to get the actual value. In decimal (base-10) a prefix is added for multiplies of 1000, in binary (base-2) however this is multiples of 1024.

So how much is a kilo byte? Well do we mean a binary or decimal?

1024 bytes = 1 binary kilo byte

1000 bytes = 1 decimal kilo byte

Confused? The easiest way to relieve this confusion is to use an appropriate prefix which denotes this difference. A multiple of 1000 in decimal is referred as k or kilo, where as in binary a multiple of 1024 is stated as Ki or kibi.

A more comprehensive list can be found online with a quick search but below is the first few. https://en.wikipedia.org/wiki/Binary_prefix

k kilo Ki kibi

M mega Mi mebi

G giga Gi gibi

T tera Ti tebi

So RAM in a computer is referred to as 4 GB or 4 Gigabytes, it would be more accurately described as 4 GiB or 4 GibiBytes as it is denoting a binary value. A 1000 BASE Ethernet card refers to decimal value, therefore the card is 1 GiBits. Storage is often labelled by hardware vendors as decimal multiples.

### Useful Specifications

Here is a useful link for data transfers: https://en.wikipedia.org/wiki/Data_rate_units

**USB **https://en.wikipedia.org/wiki/USB

Mode Gross data rate Introduced in

Low Speed 1.5 Mbit/s USB 1.0

Full Speed 12 Mbit/s USB 1.0

High Speed 480 Mbit/s USB 2.0 (60 MB/s)

SuperSpeed 5 Gbit/s USB 3.0 (625 MB/s)

SuperSpeed+ 10 Gbit/s

**PCI Express** https://en.wikipedia.org/wiki/PCI_Express

v1.x: 250 MB/s (2.5 GT/s)

v2.x: 500 MB/s (5 GT/s)

v3.0: 985 MB/s (8 GT/s)

v4.0: 1969 MB/s (16 GT/s)

**SATA Decimal Prefix Units** https://en.wikipedia.org/wiki/Serial_ATA

SATA 1.0 – 1500 Mbit/s – 150 MB/s

SATA 2.0 – 3000 Mbit/s – 300 MB/s

SATA 3.0 – 6000 Mbit/s – 600 MB/s

SATA 3.2 – 16 Gbit/s – 1969 MB/s

### Appendix: Throwing new hardware at an old server?

Is it a good idea to fully populate an R710 with 8 x expensive consumer grade SATA SSD? (This is an 11 Generation Dell PowerEdge Server from 2009.)

Well the server itself supports SATA 2.0 so that means each connected drive could potential push 300 MB/s, and most SSD will do more than that. So bottleneck one is that a modern SSD will want to go faster than SATA 2.0. So buy cheap SSD, as max we are going to start with is 300 * 8 = 2400 MB/s.

Next thing we hit is the controller card. A PCI Express x8 card with only 4 lanes wired Gen 1. 250 MB/s * 4 = 1000 MB/s.

Mmm, it’s really not going to take much to saturate this server using modern storage. Good idea to add SSD? No, unless you have them laying about.

**Dell Documentation for the R710:**

http://www.dell.com/downloads/global/products/pedge/en/server-poweredge-r710-tech-guidebook.pdf

*11.1 Overview*

* The PowerEdge R710 has two PCI Express risers: Riser 1 and Riser 2. Each riser connects to the planar through a x16 PCI Express connector.*

* * Riser 1 consists of two x4 slots and a third x4 slot dedicated for internal SAS storage through the PERC 6i or SAS 6/iR.*

* * The default Riser 2 consists of two x8 PCI Express connectors.*

* * There is also an optional x16 Riser 2 that supports one x16 PCI Express card.*

*11.2 PCI Express Risers*

* The two PCI Express risers provide up to four expansion slots and one slot dedicated for the*

* integrated storage controller card. The slots meet the following requirements:*

* * Two x8 and two x4 PCI Express Gen2 slots, each connected to the IOH*

* * One x4 PCI Express Gen1 slot for internal storage connected to the IOH*

*12.4.1 SAS 6/iR*

* The R710 internal SAS 6/iR HBA is an expansion card that plugs into a dedicated PCI Express x8 slot (four lanes wired). It incorporates two four-channel SAS IOCs for connection to SAS or SATA hard disk drives. It is designed in a form factor that allows the same card to be used in the PowerEdge R610 and PowerEdge T610.*

The Dell part number 330-4525 is the x16 riser!

I will keep an eye out for cheap parts on eBay :-p The server is a bit noisy for most of my work, so I tend to use my Intel nuc setup now for most things.