Sunday, January 31, 2010

"Mind" -> Hacking SPD On Memory

This the laptop that I was wrestling with yesterday.  It is an old NC4010 that I decided that I would buy refurb about 2 year ago, so that my wife could have her own PC to do email.  The PC is very small, and while it sold for $2000 when new, it was selling for $200 as a refurb.

The PC never ran as fast as I thought that it should and the battery was not very good, but it was good enough for logging into Google mail for my wife.  After using it a lot for the last two years, I bought a big 17" Acer Portable for her desk downstairs, which she uses all the time.  The nice thing about her new portable is that from time to time, the kids use to watch videos on.  The new portable is more like an entertainment system.

But there were a couple of nice things about the old portable.  With a new battery, it should still get around 2.5 hours of battery life, which is a lot longer than the entertainment system.  It also comes in at about 3.5lbs, which is a very light portable considering that the screen is very tall (albeit with a resolution of 1024 x 768), which is pretty much a winner.

I like that it also had a track stick and a speaker that could be cranked up quite high to listen to web casts.

If the portable was a bit more responsive, I would actually like to keep the thing around, as it had some unique features.  No doubt, the original $2000 price tag allowed the designers to put in a few of the extras that I just described.  So how to fix the performance? 

I suspected that the real issue on the PC is that it had a fairly large, for the age, shared memory space with the video, and I needed a bit more RAM in the thing.  I also needed a new battery, so I looked on ebay, and I found a Hong Kong seller of batteries that would replace the battery for less than $40.  The battery cost wasn't bad.  What about memory?

So, I looked up the memory on the HP site.  It was166Mhz memory (also called PC2700), and the memory was DDR1 (or just DDR).  So, I got online and found I could buy a gigabyte of RAM, doubling the RAM space, for around $40 dollars.  My guess is that this would lower the hard drive swapping by a lot, thus speeding it up.

I had read on the HP forum that some had problems getting new memory to work, so I was very careful to order PC2700/166Mhz chips to make this work just fine. 

Putting in memory is not that hard.  The picture above shows this class of memory, and I'm holding the old memory chips that came out of the HP. 

Laptop memory normally comes in 200 pin DIMMs, which is just another way of describing the packaging.  The important thing to note is that there are 4 or more types of memory in use over the last 5-6 years.  Each memory package look a little like each other, but the notches are set up so that you can't plug a DDR1 into a DDR2. 

The other thing is that the older memory technologies, like SDRAM and DDR1 aren't made much any more if at all.  If you are buying chips, it probably means that you might have a repackaged chip.

When I  got the new chips, I plugged them into my HP, and the screen just went black.  I went to the HP forums, and this is what happens when the memory is not being accepted.  The people on the forum had no idea what was happening, and the were speculating all types of things.  The good thing is that you don't have to speculate, because you can use tools.

Now you may be asking why I am posting this here, but the posts on the HP forum were a couple of years old.  I had a suspicion about why the memory didn't work, and I had enough knowledge to figure out how to check on it.  Unfortunately, the forum posts were for people that had given up a couple of years ago.

The key for me was having another older laptop in my house that I could use to see the chips.  So while the new memory would not boot on the HP, it would boot on my old Dell laptop.

The first thing that you can use to see the memory is something call CPU-Z, which will tell you what is inside of your PC.   Now, I didn't take snapshot at the time of my new memory, this is actually a picture from my Dell portable with its own memory, but you can see that CPU-Z will show you a bunch of stuff including the memory type that is in your machine.  In this case, you can see that the utility is looking at slot #1, which is the onboard memory in my old Dell, and that the type of memory that I have is DDR in that slot is just DDR or DDR1. 

Now what is PC2700?  The memory manufacturers came up with an idea of labeling the memory in terms of bandwidth because this is what the hard drive guys do.  However, it just confuses everyone as the key thing is matching the memory for Mhz not bandwidth.  Regardless, the term PC2700 means that the data transfers at 2.7 Gigabytes of information per second.

Again, most people just want to know the megahertz (MHz).  You can see that the MHz is both 133 and 166.  This is interesting.  Is it 133 or 166?  The answer is "it is both," which we'll cover in just one second.

So, I put my new memory, which was labeled as 166Mhz into my Dell portable to double check the speed, and although it said "166Mhz," there was a third line with 200Mhz on it also!  The memory maker that sent me the chips had repackaged some newer chips, and said that it would work with my older system.

In most cases it is true.  Remember I said that the memory could operate at 166 or 133?   If you have faster memory, it will often work with the older machines.  This is why there are two memory speeds above.  If the system cannot connect at the fast speed, it falls back to the slower speed.  The problem is that my HP was choking and not trying to negotiate the speed.  I did not want to go through the problems of doing an RMA, so I decided to program the chips.  The mechanism for detecting speed is called "Speed presence detect" or SPD, and to program this SPD you need a PC with an open memory slot and a SPD programmer.

The best program is something called Thaiphoon burner.  If you are only going to use the program once, it is $20, but they have a 15 day trial.  So, you can use it for a single shot issue.  There is also SPDtool, but it is harder to use.  The screen shot above shows you a picture from my old Dell portable, looking at the memory that was is in the machine.  What you need to do is "read SPD at 51" which reads the SPD timing of the memory in the second slot.  Beware that you can read the wrong slot and write the wrong data.  Luckily, if you really hose your memory, you can boot with certain pins covered with tape, and reprogram the memory, but it is a real pain.  Better to be careful and not screw up.

If you go onto the memory page, you can pull up the timing memory table.  I stuck the memory from the HP into my Dell to pull up the information, and I got the memory table above.

You can see that it has "table 0" and the other tables.  Table #2 is grayed out, so it doesn't exist.  This only has two memory settings:  166 MHz and 133 MHz.  I also popped in the new memory and sure enough, it had 3 tables.  The third table was at 200 Mhz, just like I saw in CPU-Z.

To get the timing speed, you adjust tRCD, tRP, tRAS, tRC, tRFC, and the tRRD.  I won't go through what they mean because they are Wikipedia.  However, I guessed that I needed to set all tables so that they would coincide with the memory that worked.  What was interesting is that the 166Mhz timing was also different on my new memory.  So, I adjusted my new memory table 0 to the above timings, and I adjust table 1 to the above timings.  If I didn't wipe out the 200MHz setting, the memory would still try and negotiate to a higher speed, so I had to totally remove the 200MHz setting.

After resetting the SPD, I put in the memory chips in the old HP and I let out a whoop of delight as the PC purred to life without a problem.  I also found a new driver for the old Ali Chipset, which was dog to begin with as the company went bankrupt.  Luckily, a university type had spent a bunch of time research the Ali 7101 driver and had it posted on his University page.  Thank goodness to academia.

My wife used the portable last night and remarked how much faster it was with new memory.  I felt a little bit guilty for not fixing it earlier, but for $80, we were going to have a very servicable extra portable around the house.

Saturday, January 09, 2010

"Mind & Spirit" -> Why The Little Guy Wins

The most problematic issue that I've face at my work over the last 20 years of being in corporate America is the propensity for social loafing. Now social loafing is one of those things that simply don't need to be described once you figure out what it is saying.

If you want to get a good sense of the connection to Christianity, all that you need to look at is Paul's writings in 2 Thessalonians 3:

"In the name of the Lord Jesus Christ, we command you, brothers, to keep away from every brother who is idle and does not live according to the teaching you received from us. For you yourselves know how you ought to follow our example. We were not idle when we were with you, nor did we eat anyone's food without paying for it. On the contrary, we worked night and day, laboring and toiling so that we would not be a burden to any of you. We did this, not because we do not have the right to such help, but in order to make ourselves a model for you to follow. For even when we were with you, we gave you this rule: "If a man will not work, he shall not eat."

We hear that some among you are idle. They are not busy; they are busybodies. Such people we command and urge in the Lord Jesus Christ to settle down and earn the bread they eat."

Social loafing is simply the normal human reaction for people to back off working hard when they are part of a group. The person to first document this behavior was Maximilien Ringelmann in the early 20th century. To this day, some social loading is considered an important part of the Ringlemann effect.

To understand the entirety of the Ringlemann effect, we need to understand what Ringlemann did, and why it is so applicable to group dynamics. It explains why major corporations are not the preferred method of employment.

Very simply he ran and experiment where he had his subjects pull on a rope. He then measureed the pull of that individual. Once he was done with measuring the individuals, he would place all of the individuals into teams and have them pull on the rope.

Now the only numbers that Ringlemann test was 1, 2, 3, and 8, but I think the chart is probably pretty close.  If we are in a group of 2 or 3 people, a lot of work is done.  It is as soon as we get to more than 3 people, we see the group effort really start to fall off.

Ringlemann, himself, had some idea of what was happening, but he thought perhaps the groups were losing effort due to lack of coordination.  As the researchers have done more and more work (Ingham, Levinger, Graves, & Peckham, 1974), they discover that in things like pulling rope, the biggest issue is that people simply stop working as hard because there are more people around to do the work.

Eric Weiser, at Curry College,did a nice chart that shows the individual drop in effort from several studies.

The problem with most of these types of studies is that they cannot perfectly predict what will happen in real life.  However, good fundamental thought as gone into this.  Now that you understand the idea of social loafing, we can look at the roles that the various people can play.

1a.  The free rider:  This is the person that decides to back off on the hard work.  Fredrick Taylor, the father of scientific management, called this soldiering.  Taylor, in his day, recognized and categorized many reasons for this behavior in the common work force.

1b.  The infected free rider.  Free riders are a habit, and not something that is done every once in a while.  These are the individuals that may have run into individuals in the past that have pushed them to achieve, and this was a bad event for them.  If this was a confrontation, the individual may turn into an infected free rider.  This is an individual that is trying to get back at a corporation or a manager.  I call them an infected free rider because they tend to spread their mindset throughout the group and get other people sick.  If the free rider backs off a bit, the infect free rider can actually lower the output of a group by being in it and being counterproductive.

2.  The sucker effect:  These are the formally hard working people in the group that look at the free rider, and they say to themselves, "why am I working so hard?  This guy isn't working, and he is getting paid the same as me.  I'm a sucker, so I'll back off."

3.  The starter and pusher.  These are individuals who just are wired differently.  Generally, they are highly motivated and want to achieve something, therefore, they are willing to engage in conflict to get something done.  The point is that they are extremely rare, and can cause either great harm or good.

4.  The credit taker.  Often, inside of these groups, not only do people not do equal work, but they start to realize that the group as a whole may be judged.  In this case, what starts to happen is that individuals will start to position themselves so that they can receive credit for whatever goodness does happen out of the group.  The other people in the group, knowing that they will not receive the credit, then back out of providing their full effort.

The last role is especially important, the researchers say that there is one way to ensure that all members of the group work more toward the value of their individual contributions is to have each member recognized for the effort that they put in.  As an example, the swimmer relay is often used to prove that groups can have as good if not better performance.  It is not uncommon for individuals to perform their best effort while on a team.  However, in this case, each member's input is carefully monitored, and know that their team mates are depending on them only increases their effort.  The key is that although they are on a team, they are seen individually.

Ask we understand these groups, we start to understand why business can be so turbulent, and why groups can under perform so dramatically.  If you get 8 people together, the output of the group is going to drop closer to the output of 6 individuals.  Then you have some people that are going hard, and others that are showing a variability in their effort.

If you are unfortunate enough to have a starter and a pusher, the group will either turn into a high performance group, or it will self destruct.  The problem is that starter/pushers push themselves, and if they are an extrovert, they will start to push other people.  The starter/pusher present a unique issue for us.  You would think that a starter/pusher would be considered as a positive.  However, to understand why he can be self destructive is understand why people freeload.

The reason that people back off in effort is that it is uncomfortable to put out a lot of effort.  So, to go back to the beginning of this post, the question should not be "why do people loaf in groups?"  This should be very obvious.  They loaf because this is the most comfortable thing for them to do.

The real question is "why do individuals excel when they are alone?"

The obvious answer is "because the effort that somebody puts out shows their self image."  The person works hardest by themselves because they know that other people will judge them.  This explains why effort falls off in groups.  If the individual believes that they cannot be measured, then they have no motivation to do better.

This is why the credit taker is so discouraging to a group.  Since they suck up the available credit, they will heavily demotivate the other individuals.  So, to go back to the pusher, he can be perceived by the rest of the group as a credit taker.  So, he will instantly get some push back that he/she is simply giving orders because they want to get credit for whatever the group does.  The other instant thing that will happen is that the pusher is going to try to get the individual to perform in a zone that they do not want to perform.  So, they are afraid that they are not going to get the credit, and they are working harder than they want.

This often sets up an extreme amount of conflict.  The good news is that there will be change in performance in the group.  The bad news is that a free rider, which was performing at 75% of their effort, may suddenly tank to 30% or 40% effort.  In today's knowledge work, you cannot force somebody to work hard.  You can hope to change their mind set, but if you fail, you run the risk of turning a free rider into an infected free rider.

So, here is my advice as we get to the end of my post.  If you are a high performance individual, generally you are far better off working in organizations that are small.  At the very least, you need to work for somebody who is a starter and a pusher.  A couple of starter/pushers can be an awesome team inside of a company.  Generally, because their are two of them, they can watch each others back.

If you are a free rider, I guess that you'll never have gotten to this part of my post, because you felt uncomfortable.  In the last couple of years, I've spotted a couple of people that are clearly loafing.  They are very nice individuals.  However, this will upset me.  I feel that I've been suckered by these individuals.  In both of these cases, as I've had a heated discussion with them, I basically called them lazy.

Now this is something that I should not have done.  And it certainly wasn't very Christian of me.

However, in both case the individuals went speechless and hung up on me.  In both cases, it was extremely obvious, they knew that I hit it square on the head, and it hurt them.

But in both cases, they didn't face reality, and I don't think I bought myself anything.