Whenever someone asks me for an opinion on some computer he or she wants to build or buy, I am sighing and laughing at the same time. I have rarely seen any configuration or offer that was not against the laws of common sense to use for the intended purpose. If that was the case, though, the system was often dimensioned too big or too small.
My absolute favorite are systems intended for what I call general bullshit. The things normal people do with their computers, mostly running some browser, running an office suite and installing some software for this and that, like their camera or cell phone. Not that a camera should need software, but the too small and light kind of camera often comes with it and people open their disc tray faster than their mind, so...
Usually some co-worker or not too close acquaintance comes up with some current leaflet of the next best electronics discount and asks me if some of the crap in there would be a good deal. After the usual interview (what'cha gonna torture it with, how long should it be usable for the intended purpose and got money?) I usually reply with "nobody can really tell you". The baffled look usually turns into a disappointed one when I go with something like "there's no real information about the hardware, so how could I tell you more than maybe?".
The problem with almost all the discount offers is that they are horribly misconfigured for almost all customers, but at least sometimes equally for all of them. Since the Intel GMA HD nobody who does not distinctively run 3D crap needs discrete graphics. They just cost money and use power for no good reason. I agree, for some HTPC or an older box some used low end card off ebay might make a good addition to accelerate video stuff, but buying that after two years is a guaranteed money saver for the not wasted power alone.
What in almost all cases is the best part relative to what's available is the CPU. But have you ever really monitored your system for bottlenecks in the situations where you feel them? If yes, you likely do not want to exchange your CPU. And almost all the preconfigured systems would benefit if you'd take a slightly cheaper CPU and put the saved money into a better disk. Or more memory.
There is a couple of weird motherboards for special purposes that eat the expensive mobile CPUs and use mobile chipsets. So you have all the limits and the price tag of a laptop without the mobility. But if you take such a thing with one of the last Pentium M CPUs and attach some good disk, I had a SpinPoint F1 at hand, go for 3GB or more memory and try to use it, you will be amazed how usable such a thing can actually be. Of course, compiling code is as bad an idea as playing 3D games, but for the usual web browsing and office work the difference to a quad core with way faster memory and eight times the GFlops is not too big. If you put the old 250GB IDE disk into the powerhouse you might even see it lose against what is basically an old laptop with a good disk.
The price range of 1TB 3.5" disks is basically 50 to 120 bucks at the moment. The really expensive ones are with longer warranty and capable of running non stop for this time. If you see some system with an expensive CPU and a low price tag, expect that everything else is as cheap as possible. Better add another 25 bucks to get a decent disk.
What else could be cheap?
Sure, the PSU will be. And if you really use your rig, you will pay for that. Let's say the box sucks down a 100W while running in average. With a 65% efficiency this means you suck a 154W out of the outlet. With an 85% efficiency this lowers to 118W. You might say the relative efficiency I quote is too bad even for cheap PSUs, but go measure yourself. And take into account that they most often are not dimensioned accordingly to the used components. And those 36W of difference mean one kWh every 30 hours of use. Yes, this might seem like not much and it is not, but proper PSUs can be gotten for less than 40 bucks with proper efficiency and you get the usually way better quality of the brand stuff for free.
The memory will likely also be. Either you get all slots full with small modules and will have to ditch them once you wanna upgrade or the only good thing about the memory will be the size, while the timings are ass. Yeah, sure, you now say a difference in memory speed does not make too much of a difference, but if you consciously choose a slower CPU and think about the fact that the older the system gets, the more CPU bound it will be in most cases, the five bucks more to get memory with good timings you spent will have been worth it.
Something you almost never can tell from some newspaper ad and in most cases not even at the store is the mainboard, especially the chipset. While this is a completely different case in the AMD world, in Intel's domain you do not want anything else than an Intel chipset as a generic user. Not only because they usually perform faster but cause less trouble. Whether the low end chipset line is enough or if you should add some bucks to get something more mid end has changed relatively often from generation to generation. Just making sure the brand is not something you would mistake for an STD. My personal experience is that Asrock often delivers something well worth your money but your mileage may vary.
For the Core 2 line I have never seen current or better chipsets in seemingly cheap offers. At the time the 965 Express long had found successors it was put into a lot of the discounters' systems, simply just because it was old and this is always very bad for computer stuff. That you would never be able to experience the benefits of a newer CPU (FSB!), certain memory modules or nice and fast PCIe 2.0 lanes is not their problem.
If you really want to have a snappy and responsive system it might be worth thinking about getting an SSD as the primary disk for the OS and software. The 64GB models suffice for that easily and are nearing the 100 bucks rapidly.
The most important focus, though, is to put the focus on the area causing the most annoying delays for what you really do with your system. The exchange server with a quadcore but only two disks is a bright example of something gone horribly wrong, but that's stuff for another post.
Random stories and thoughts of some guy obsessed with computers and technology in general. This blog might contain posts about cats, women, mice or even popular culture.
Showing posts with label Hardware. Show all posts
Showing posts with label Hardware. Show all posts
Sunday, January 23, 2011
Thursday, January 20, 2011
Folding paper can cost you money
I just got an email that's been directed to all local employees. Our printer park consists of several rather monstrous units that are made to put through several million pages per month. One had a serious problem yesterday I couldn't look after due to time constraints which has now been solved by the technician from the company the printers are leased from.
Someone did actually put paper in A3 size in the compartment for A4. A3 is exactly twice as big as A4. The paper was folded in half. How does one get such ideas?
Someone did actually put paper in A3 size in the compartment for A4. A3 is exactly twice as big as A4. The paper was folded in half. How does one get such ideas?
Wednesday, January 19, 2011
The 400GB USB Stick
At work the lecturers have a widely varying range of computer and IT knowledge. Some teach programming and one guy doesn't even just look like a complete uber-nerd, he indeed replied with "250 dash <complete name> Hello" when I greeted him with "EHLO". If this just makes you think "WTF", google for SMTP and telnet client or console. SMTP is still the standard protocol to send email and the commands are in plain text.
Of course there's also the direct opposite of such people. The kind that does have no idea at all and needs help connecting a projector or playing a DVD. The worst kind of all is none of that, but has instead a very thin and scattered knowledge, yet thinks to have the skills of a professional. When something does not work as they expect it, it is obviously defective, because they already tried "fixing" it. Fixing here just means to change anything they can without paying attention to labeling and common sense. The result of that is of course simply more work for anyone who was basic knowledge about technology and also the slightest bit of common sense. Having to select the right input for the projector again after telling that you have to activate your VGA out to see a picture is harmless, I expect at least completely fucked up picture settings. "No signal" obviously means you might have the wrong color balance or contrast selected, doesn't it?
Of course the list of those kind of people is widely known among staff and from all of those there is one guy that stands out even from those. Let's call him Schnitzer here. We have some connections to China and he was taking part in an exchange. Clever as he was, he did some shopping there because tech stuff is cheap in China...
When my lovely co-worker called me for help because she had trouble with a thumbdrive, I wasn't expecting to get a good laugh soon. When I saw that Schnitzer was standing besides her I expected some fuck up from him, like saving something in a format that I have never heard of. The drive was shown as being completely empty, but with a filesystem and after silently sighing, I asked him to come with me and see if a real PC does read it properly. The girls nearly all only have thin clients and USB redirection has never worked properly with those.
When I looked at the drive I was getting suspicious. It said it would be a 400GB model. Not 256, not 512, not even 384, but exactly 400. And the last I heard of was something way smaller that also cost a fortune.
Me: Wow, 400 gigs, that thing must have been quite expensive.
Schnitzer: Actually not. I bought it in China.
*Alarm bell rings widly*
Schnitzer: The seller initially wanted 80 bucks for it, but I got him down to 20.
Me: Well, then you have been ripped off because this thing is just a scam.
Schnitzer: No, I tested it, this thing is totally OK.
Sure. Somebody sold you flash memory worth a hundred bucks for twenty. And also packed it on a PCB with a controller chip and into some housing. Someone here is an imbecile and despite the education standards I have the feeling the Chinese guy is not it.
Me: I'm willing to bet half a month's income that this thing does not have 400GB. If you don't take that bet, I offer you to bet about a beer it does not even have 4GB.
Schnitzer: Seriously, plug it in and you will see that it has 400GB.
I did, could read the filesystem and yes, it of course said 400GB. His data just weren't lost because there only were a mere 5MB on it.
Me: So I guess you are not aware of the fact that the capacity information is provided by the controller chip, not the actual data storage. That chip likely just writes over the same dozen megabytes again and again if you put more on it than the maybe 512MB it really has.
Schnitzer: How is this possible?
Me: USB controller chips are often programmable.
Schnitzer: I mean how can it store 400 gig in a dozen megabytes.
Me: It cannot. Your data goes to hell.
To make this shorter, he was absolutely convinced that this thing was not fake but a thumbdrive as big as a laptpop hard drive for a price lower than a bad blowjob. I offered him to demonstrate it, copied his files to somewhere else and started to put a complete DVD on it. Of course the cheap controller was slow, so we decided he should come back after holding his lecture. He did and of course neither any of his files were readable nor any of the ones from the DVD.
He was totally breathless and just wouldn't want to believe he had been ripped off like the dumbest jerk ever. When he then started whining about his lost money, I told him that I'd have to go to the server room for something and he should just write it off as an educational expense and get a real one. After the door behind me shut I turned up the AC to maximum load and laughed dementedly for at least 5 minutes.
Of course there's also the direct opposite of such people. The kind that does have no idea at all and needs help connecting a projector or playing a DVD. The worst kind of all is none of that, but has instead a very thin and scattered knowledge, yet thinks to have the skills of a professional. When something does not work as they expect it, it is obviously defective, because they already tried "fixing" it. Fixing here just means to change anything they can without paying attention to labeling and common sense. The result of that is of course simply more work for anyone who was basic knowledge about technology and also the slightest bit of common sense. Having to select the right input for the projector again after telling that you have to activate your VGA out to see a picture is harmless, I expect at least completely fucked up picture settings. "No signal" obviously means you might have the wrong color balance or contrast selected, doesn't it?
Of course the list of those kind of people is widely known among staff and from all of those there is one guy that stands out even from those. Let's call him Schnitzer here. We have some connections to China and he was taking part in an exchange. Clever as he was, he did some shopping there because tech stuff is cheap in China...
When my lovely co-worker called me for help because she had trouble with a thumbdrive, I wasn't expecting to get a good laugh soon. When I saw that Schnitzer was standing besides her I expected some fuck up from him, like saving something in a format that I have never heard of. The drive was shown as being completely empty, but with a filesystem and after silently sighing, I asked him to come with me and see if a real PC does read it properly. The girls nearly all only have thin clients and USB redirection has never worked properly with those.
When I looked at the drive I was getting suspicious. It said it would be a 400GB model. Not 256, not 512, not even 384, but exactly 400. And the last I heard of was something way smaller that also cost a fortune.
Me: Wow, 400 gigs, that thing must have been quite expensive.
Schnitzer: Actually not. I bought it in China.
*Alarm bell rings widly*
Schnitzer: The seller initially wanted 80 bucks for it, but I got him down to 20.
Me: Well, then you have been ripped off because this thing is just a scam.
Schnitzer: No, I tested it, this thing is totally OK.
Sure. Somebody sold you flash memory worth a hundred bucks for twenty. And also packed it on a PCB with a controller chip and into some housing. Someone here is an imbecile and despite the education standards I have the feeling the Chinese guy is not it.
Me: I'm willing to bet half a month's income that this thing does not have 400GB. If you don't take that bet, I offer you to bet about a beer it does not even have 4GB.
Schnitzer: Seriously, plug it in and you will see that it has 400GB.
I did, could read the filesystem and yes, it of course said 400GB. His data just weren't lost because there only were a mere 5MB on it.
Me: So I guess you are not aware of the fact that the capacity information is provided by the controller chip, not the actual data storage. That chip likely just writes over the same dozen megabytes again and again if you put more on it than the maybe 512MB it really has.
Schnitzer: How is this possible?
Me: USB controller chips are often programmable.
Schnitzer: I mean how can it store 400 gig in a dozen megabytes.
Me: It cannot. Your data goes to hell.
To make this shorter, he was absolutely convinced that this thing was not fake but a thumbdrive as big as a laptpop hard drive for a price lower than a bad blowjob. I offered him to demonstrate it, copied his files to somewhere else and started to put a complete DVD on it. Of course the cheap controller was slow, so we decided he should come back after holding his lecture. He did and of course neither any of his files were readable nor any of the ones from the DVD.
He was totally breathless and just wouldn't want to believe he had been ripped off like the dumbest jerk ever. When he then started whining about his lost money, I told him that I'd have to go to the server room for something and he should just write it off as an educational expense and get a real one. After the door behind me shut I turned up the AC to maximum load and laughed dementedly for at least 5 minutes.
Saturday, January 15, 2011
Let's bake power states!
So we now know what benefits undervolting might get us and how we do it with our precious Core or Core 2 CPU. We also know that the operating voltage changes all the time, as does the clock rate, and I hope why constantly adjusting voltage and clock is a good thing does not need a further explanation.
So how should this mechanism behave to not slow your system down and save power?
The short answer is you will likely never know the precise and correct answer but have to consider some things to avoid some pits lots of people fall into. Out of the box the power states and the rules for their transition are very well done. Chances are what you define yourself is worse, the question is just by how much.
Basically you want to rise the clock speed whenever the power consumption of the system as a whole integrated over time is smaller with a faster CPU that drains more power. This is obviously the case when your task is CPU bound, e.g. video rendering. Besides the CPU you also have the power drain of your running harddisk, the chipset, the memory, maybe your screen, the NICs and whatever else may be running. Let's say this takes 15W and your CPU takes another 10W running at half speed. The job takes x minutes to finish. Running the CPU at full speed, it uses 15W and the job takes roughly x/2 minutes. So in one case we have 25W for x minutes and in the other case we have 30W for x/2 minutes. So we end with 25*x Wminutes and 30*x*1/2 Wminutes, equaling 15*x Wminutes. Yes, this is very trivial but a lot of people do not understand this without a hammer.
If you thought about the numbers for CPU power draw used in this example you must come to the conclusion that the CPU runs way less efficiently on a lower clock rate. And this is actually true for most undervolted systems that are not overclocked. You can draw a diagram that correlates minimal power consumption for stable work and processing power and you will see it is not a line you get, but something curvy.
It will roughly look like this with power consumption being on the y-axis and processing power being on the x-axis, both assumed to be linear. The left end is intended to be a clock rate of about 0Hz, the right end something severely overclocked. The y-axis is not starting with 0, as even with basically no real clock the CPU will draw some power and need a certain minimum voltage to function at all.
The bottom line of this is that for every CPU there is a point from which you will need a lot more voltage and hence power to make it work faster. Go look for those overclocking freaks that reach 5GHz with some i7 and see what crazy voltages and cooling setups they use. Some of those systems have the CPU use 3 times the stock power and more. In terms of efficiency that is horrible, as they aren't running even twice as fast in some cases.
Around the point where the CPU needs rather suddenly a lot more voltage to operate faster, there will be a point where lowering the clock speed will not really reduce the necessary voltage for it to perform stable. Between those points, which are more intervals than points, there's the point of maximum efficiency, where you get a good speed for cheap power.
Although the diagram for each CPU will very roughly like the one above, where your stock speed is can barely be foreseen. And keep in mind stock speed usually has not the minimal power consumption as stock voltage might be way more than the CPU really needs. So you really have to figure out where on this curve you are with your own CPU. The one I talked about in the last post has its stock speed definitely in the left half of the diagram. Between lowest and highest clock there's only a tenth of a Volt more needed to keep it running stable! Keep in mind that P=U^2/R is not applying as a rule of thumb if you compare different clock speeds, though. The higher the clock rate, the more the electrical capacity of the CPU comes into play, wasting power.
Depending on how steep the needed increase in voltage is for your CPU, you should either make it aggressively increase clock speed or not so aggressively. But in general you do want it to clock up quite soon. For one because this makes the system more responsive and eliminates possible perform impacts on other hardware that might have to wait for the CPU to finish its work and also because highest efficiency is typically close to stock speed. There's another effect comping into play that you might call "the race to sleep". When the CPU has done its work, it very quickly enters a sleep state where the power consumption drops to something damn low. And it is more effective for it to work fast and sleep more than to work slower and sleep less.
If you have full load at half speed you need e.g. 10W. If you go full speed with half load you have 15W during the work times and let's say 1W during sleep. So you have 15/2+1/2W resulting in an 8W average. Yes, we leave out a lot of details here, assuming load drops to 50% and not figuring in any time for the sleep state entering, but the direction's the thing that's important.
So you now have an idea about some of the mechanisms that you should consider when deciding how your power state transitions should be defined and you will likely not make the same mistake as a lot of those kids around the interwebs that force their undervolted CPUs to perform worse and less efficient than they could. And if you think the directions are very vague, then you are absolutely right. there's so much stuff going on in detail that your setup will be not ideal most of the time, no matter what you choose as parameters. And again the most benefit comes from choosing the right general direction of behaviour, not the last tenth of a volt or 5% of load you alter. Maybe I feel like writing something about stability testing later, as this is the key to really use undervolting and not just play with it.
So how should this mechanism behave to not slow your system down and save power?
The short answer is you will likely never know the precise and correct answer but have to consider some things to avoid some pits lots of people fall into. Out of the box the power states and the rules for their transition are very well done. Chances are what you define yourself is worse, the question is just by how much.
Basically you want to rise the clock speed whenever the power consumption of the system as a whole integrated over time is smaller with a faster CPU that drains more power. This is obviously the case when your task is CPU bound, e.g. video rendering. Besides the CPU you also have the power drain of your running harddisk, the chipset, the memory, maybe your screen, the NICs and whatever else may be running. Let's say this takes 15W and your CPU takes another 10W running at half speed. The job takes x minutes to finish. Running the CPU at full speed, it uses 15W and the job takes roughly x/2 minutes. So in one case we have 25W for x minutes and in the other case we have 30W for x/2 minutes. So we end with 25*x Wminutes and 30*x*1/2 Wminutes, equaling 15*x Wminutes. Yes, this is very trivial but a lot of people do not understand this without a hammer.
If you thought about the numbers for CPU power draw used in this example you must come to the conclusion that the CPU runs way less efficiently on a lower clock rate. And this is actually true for most undervolted systems that are not overclocked. You can draw a diagram that correlates minimal power consumption for stable work and processing power and you will see it is not a line you get, but something curvy.
It will roughly look like this with power consumption being on the y-axis and processing power being on the x-axis, both assumed to be linear. The left end is intended to be a clock rate of about 0Hz, the right end something severely overclocked. The y-axis is not starting with 0, as even with basically no real clock the CPU will draw some power and need a certain minimum voltage to function at all.
The bottom line of this is that for every CPU there is a point from which you will need a lot more voltage and hence power to make it work faster. Go look for those overclocking freaks that reach 5GHz with some i7 and see what crazy voltages and cooling setups they use. Some of those systems have the CPU use 3 times the stock power and more. In terms of efficiency that is horrible, as they aren't running even twice as fast in some cases.
Around the point where the CPU needs rather suddenly a lot more voltage to operate faster, there will be a point where lowering the clock speed will not really reduce the necessary voltage for it to perform stable. Between those points, which are more intervals than points, there's the point of maximum efficiency, where you get a good speed for cheap power.
Although the diagram for each CPU will very roughly like the one above, where your stock speed is can barely be foreseen. And keep in mind stock speed usually has not the minimal power consumption as stock voltage might be way more than the CPU really needs. So you really have to figure out where on this curve you are with your own CPU. The one I talked about in the last post has its stock speed definitely in the left half of the diagram. Between lowest and highest clock there's only a tenth of a Volt more needed to keep it running stable! Keep in mind that P=U^2/R is not applying as a rule of thumb if you compare different clock speeds, though. The higher the clock rate, the more the electrical capacity of the CPU comes into play, wasting power.
Depending on how steep the needed increase in voltage is for your CPU, you should either make it aggressively increase clock speed or not so aggressively. But in general you do want it to clock up quite soon. For one because this makes the system more responsive and eliminates possible perform impacts on other hardware that might have to wait for the CPU to finish its work and also because highest efficiency is typically close to stock speed. There's another effect comping into play that you might call "the race to sleep". When the CPU has done its work, it very quickly enters a sleep state where the power consumption drops to something damn low. And it is more effective for it to work fast and sleep more than to work slower and sleep less.
If you have full load at half speed you need e.g. 10W. If you go full speed with half load you have 15W during the work times and let's say 1W during sleep. So you have 15/2+1/2W resulting in an 8W average. Yes, we leave out a lot of details here, assuming load drops to 50% and not figuring in any time for the sleep state entering, but the direction's the thing that's important.
So you now have an idea about some of the mechanisms that you should consider when deciding how your power state transitions should be defined and you will likely not make the same mistake as a lot of those kids around the interwebs that force their undervolted CPUs to perform worse and less efficient than they could. And if you think the directions are very vague, then you are absolutely right. there's so much stuff going on in detail that your setup will be not ideal most of the time, no matter what you choose as parameters. And again the most benefit comes from choosing the right general direction of behaviour, not the last tenth of a volt or 5% of load you alter. Maybe I feel like writing something about stability testing later, as this is the key to really use undervolting and not just play with it.
Details about the Intel Core (2) and voltage signaling
So after the basics, we wanna take a close look at how all the voltage stuff works for the Intel Core (2) mobile CPUs. First, there's enough tools out there to undervolt via software and you want to use that way, whether you add some hardware modfications or not. Look for CrystalCPUid or other tools like that. Don't forget to disable the power control mechanisms in your OS if you want your own tool to do the work.
First off, we wanna know how the voltage crap functions on the hardware level, so we can fuck with it. Thankfully Intel does provide good documentation of their technology and you can get your hands easily on that. They do have a website. You can not just get the pinout of your CPU (mind the difference between socket P and M!) and also a table that and an explanation for the signaling of voltage levels. There's seven pins on the CPU for that which are labeled VID0 to VID 6. With those voltages between 1.5 and lower-than-you-could-possibly-want can be signaled and the scheme behind it is easy. Base voltage is 1.5V and every pin subtracts a certain voltage from that if its level is high. VID 6 equals 0.8V, VID5 equals 0.4V, VID4 equals 0.2V and so on. The resulting table is just binary counting downwards for the pins while the voltages mapped to that are decreasing by 0.8V/2^6 per step. So what you need to do is simply make sure these pins have the right signals running on them for the voltages you want. Of course, there's more to it than just connecting some of them to something else.
Restriction one is that you cannot pull them to ground. This has fried people's CPU in the past. You can only pull them up to Vcc. Second restriction is that you do not know all the possible voltage requests of your CPU, at least without a lot of equipment or maybe inside knowledge of what some very specific registers' data mean. They again differ from CPU to CPU, if only slightly. And there's a lot of voltage transitions happening between the power button and a software starting under windows, likely even between the power button and the first try to execute any easily customizable code. And as a third restriction, you can't easily change your hardwirings for the VID pins. So if you decide to hardwire the pin that lowers the voltage by 0.4V to Vcc, every voltage having this pin on low will be reduced by 0.4V, while all others will not be affected. If you alter the table mapping pin states to voltages, you will see that every second block of voltages that is 0.4V "high" is repeated in the 0.4V range above it. That's simply a logical consequence, as the table was just counting with the pin states and you have eliminated one of these bits. So you also lose half of the voltages you could possibly get. Depending on where those blocks lie you could even have not affected the voltage range you want to alter. And also you might make your CPU getting 0.4V less in some sleep state that has very low voltage anyways. Expect this to cause problems, severe problems!
Restriction four is that you only have a small amount of voltages you can set by software. Lower ones will simply not be accepted.
Your best bet is to wire either the 0.1 or 0.2V pin to VID0 or maybe VID1. This way both pins are connected by a logical OR. Whenever one of them is high, the other one will be too. Look at the table and figure out why this is beneficial besides the fact that you have a fifty-fifty chance of it severely affecting some voltage you do not want.
Ok, we now know how to figure out what happens when we connect some pin to some other pin. If you look at the pinout again, you will see that this is not getting easy. At least some of the pins are facing the outer side of the pin array and none are really far from each other, but they do not lay too conveniently. So grab an old ethernet wire, rip it apart and get some of the fine copper stuff. Don't forget to cut your socket a little to make up for the additional height of the wire. Yes, it does make a difference and you do not want your cooler to put mechanical stress on the die or not sit as flat as possible.
If you are as lucky as I was, your CPU will run on 0.825V instead of something around 1.2V. How much of a difference that makes is easy to describe. If you just stress the CPU (and the chipset) the fan will stay really quiet instead of running at top speed and power consumption will drop by about 20W. Yes, from the level of a standard voltage CPU to the level of some insanely expensive Low Voltage one - while running at a speed the LV versions aren't even available at. Thereotically, assuming the CPU behaves like a normal resistor, the resulting power consumption should be about 45% of the original one. And this rule of thumb seems to apply well as such.
If you think about doing this yourself, keep in mind it all depends on luck for a big part of the way. Try with software only first and see how far you can get, then decide if you wanna void your warranty and risk that. If you did drill holes into your CPUs ten years ago, though, this is not going to be the question. Yes, drilling holes, as explained here: http://www.cpu-central.com/dualceleron/
And yes, I of course did that back then.
First off, we wanna know how the voltage crap functions on the hardware level, so we can fuck with it. Thankfully Intel does provide good documentation of their technology and you can get your hands easily on that. They do have a website. You can not just get the pinout of your CPU (mind the difference between socket P and M!) and also a table that and an explanation for the signaling of voltage levels. There's seven pins on the CPU for that which are labeled VID0 to VID 6. With those voltages between 1.5 and lower-than-you-could-possibly-want can be signaled and the scheme behind it is easy. Base voltage is 1.5V and every pin subtracts a certain voltage from that if its level is high. VID 6 equals 0.8V, VID5 equals 0.4V, VID4 equals 0.2V and so on. The resulting table is just binary counting downwards for the pins while the voltages mapped to that are decreasing by 0.8V/2^6 per step. So what you need to do is simply make sure these pins have the right signals running on them for the voltages you want. Of course, there's more to it than just connecting some of them to something else.
Restriction one is that you cannot pull them to ground. This has fried people's CPU in the past. You can only pull them up to Vcc. Second restriction is that you do not know all the possible voltage requests of your CPU, at least without a lot of equipment or maybe inside knowledge of what some very specific registers' data mean. They again differ from CPU to CPU, if only slightly. And there's a lot of voltage transitions happening between the power button and a software starting under windows, likely even between the power button and the first try to execute any easily customizable code. And as a third restriction, you can't easily change your hardwirings for the VID pins. So if you decide to hardwire the pin that lowers the voltage by 0.4V to Vcc, every voltage having this pin on low will be reduced by 0.4V, while all others will not be affected. If you alter the table mapping pin states to voltages, you will see that every second block of voltages that is 0.4V "high" is repeated in the 0.4V range above it. That's simply a logical consequence, as the table was just counting with the pin states and you have eliminated one of these bits. So you also lose half of the voltages you could possibly get. Depending on where those blocks lie you could even have not affected the voltage range you want to alter. And also you might make your CPU getting 0.4V less in some sleep state that has very low voltage anyways. Expect this to cause problems, severe problems!
Restriction four is that you only have a small amount of voltages you can set by software. Lower ones will simply not be accepted.
Your best bet is to wire either the 0.1 or 0.2V pin to VID0 or maybe VID1. This way both pins are connected by a logical OR. Whenever one of them is high, the other one will be too. Look at the table and figure out why this is beneficial besides the fact that you have a fifty-fifty chance of it severely affecting some voltage you do not want.
Ok, we now know how to figure out what happens when we connect some pin to some other pin. If you look at the pinout again, you will see that this is not getting easy. At least some of the pins are facing the outer side of the pin array and none are really far from each other, but they do not lay too conveniently. So grab an old ethernet wire, rip it apart and get some of the fine copper stuff. Don't forget to cut your socket a little to make up for the additional height of the wire. Yes, it does make a difference and you do not want your cooler to put mechanical stress on the die or not sit as flat as possible.
If you are as lucky as I was, your CPU will run on 0.825V instead of something around 1.2V. How much of a difference that makes is easy to describe. If you just stress the CPU (and the chipset) the fan will stay really quiet instead of running at top speed and power consumption will drop by about 20W. Yes, from the level of a standard voltage CPU to the level of some insanely expensive Low Voltage one - while running at a speed the LV versions aren't even available at. Thereotically, assuming the CPU behaves like a normal resistor, the resulting power consumption should be about 45% of the original one. And this rule of thumb seems to apply well as such.
If you think about doing this yourself, keep in mind it all depends on luck for a big part of the way. Try with software only first and see how far you can get, then decide if you wanna void your warranty and risk that. If you did drill holes into your CPUs ten years ago, though, this is not going to be the question. Yes, drilling holes, as explained here: http://www.cpu-central.com/dualceleron/
And yes, I of course did that back then.
The basic ideas about undervolting
Have you ever heard about undervolting? Sure you have, and likely either complete bullshit or just some dribble of people who only use the popular software and go for trial and error, without having the slightest idea what is really happening.
Basically undervolting is a fancy, pseudo-1337 term for just lowering the voltage for some component, usually CPU or GPU. It got cool after overvolting, which is just increasing that voltage, which often helps to achieve higher clock rates via overclocking. So if this is not making your e-penis longer, what's the point, especially with CPUs? What does it really do anyway?
Well, you might remember R=U/I, P=U*I and P=U^2/R. This says basically that half the voltage results in half the current and a quarter of the power consumption, hence a quarter of the heat that has to be disposed.
For normal PCs neither heat nor power consumption are too interesting. Unless you have a stock heatsink that's terribly weak and noisy, heat is not a real concern, as it is with power. A normal PC has a puny average load level and while the CPU is idle there's not really a noteworthy difference you could make. When it comes to servers and laptops, though, this stuff can make a huge difference.
I have a quite sexy virtualization architecture around the house that is powered by a severely overclocked AND undervolted quadcore and the power consumption under load drops by about 30W. So instead of roughly 95W the CPU only guzzles down 65W. If the load level of my server wouldn't be puny for most of the time, too, this would save some money.
If you want to build a very tiny and silent PC, having to dispose of the heat is usually a problem. 30W less is a huge difference here and actually you can run into a situation where undervolting makes a system stable. The reason for this is just insufficient cooling capacities for normal operation, though. With fans that adjust their speed to temperature, though, it can also make the difference between the system becoming noisy under load or not.
If you have a laptop, it can obviously affect battery life quite a bit. For manufacturers the heat that needs to be disposed is also a concern and the noise argument comes into play again, I did it for the battery life, though.
What voltage a specific CPU needs to work properly is different and varies for every single one. There's datasheets that tell you under what conditions your CPU is guaranteed to work properly and they involve a lot of conditions. The most important ones are temperature, voltage and clock speed. In case you don't know, I can tell you that chip fabrication ends with lots of dead CPUs that go from the wafer to the dust bin after the initial test, because they simply do not work. Over time with a new fabrication process their number decreases as the process gets optimized. Especially towards the end of the lifecycle there's a good chance there's more CPUs coming out that could be sold as high clocking or low voltage ones than there are customers for. So they simply try to fill the quota of expensive, rarely gotten chips and the rest gets labeled worse than they could technically perform. Another thing is that not every single CPU is tested for all the shit in the datasheet in exact detail. It's cheaper to analyze how the limitations are working together and add a bit of headroom for the ones that are fit to select chips by.
So you have a good chance that your off-the-shelve CPU can do more than it is labeled for. And also you can optimize the working conditions for it.
Problem with all this is that you have to test the results, know what knob to adjust and test for stability afterwards. Having a gut feeling for that helps immensely. And maintaining stability is a key issue, as an occasionally crashing system is just defective, no matter at what speed it runs. If you want to go to the extreme by adjusting things like the reference levels of the gunning transceiver logic on your motherboard, you can waste as much time as you want and usually 80% of the benefits come after 20% of the time you invest in tuning.
If you didn't get it from above, Intel is selling CPUs that meet certain power requirements quite a bit below of those of standard CPUs. For a way higher price of course. Usually no problem on desktops, laptops come with a certain range of voltages you can force by software that stop your undervolting urge quite soon, especially with the slower CPUs. And that's where real nerds are separated from kids. Or maybe just crazy idiots from sane people.
Basically undervolting is a fancy, pseudo-1337 term for just lowering the voltage for some component, usually CPU or GPU. It got cool after overvolting, which is just increasing that voltage, which often helps to achieve higher clock rates via overclocking. So if this is not making your e-penis longer, what's the point, especially with CPUs? What does it really do anyway?
Well, you might remember R=U/I, P=U*I and P=U^2/R. This says basically that half the voltage results in half the current and a quarter of the power consumption, hence a quarter of the heat that has to be disposed.
For normal PCs neither heat nor power consumption are too interesting. Unless you have a stock heatsink that's terribly weak and noisy, heat is not a real concern, as it is with power. A normal PC has a puny average load level and while the CPU is idle there's not really a noteworthy difference you could make. When it comes to servers and laptops, though, this stuff can make a huge difference.
I have a quite sexy virtualization architecture around the house that is powered by a severely overclocked AND undervolted quadcore and the power consumption under load drops by about 30W. So instead of roughly 95W the CPU only guzzles down 65W. If the load level of my server wouldn't be puny for most of the time, too, this would save some money.
If you want to build a very tiny and silent PC, having to dispose of the heat is usually a problem. 30W less is a huge difference here and actually you can run into a situation where undervolting makes a system stable. The reason for this is just insufficient cooling capacities for normal operation, though. With fans that adjust their speed to temperature, though, it can also make the difference between the system becoming noisy under load or not.
If you have a laptop, it can obviously affect battery life quite a bit. For manufacturers the heat that needs to be disposed is also a concern and the noise argument comes into play again, I did it for the battery life, though.
What voltage a specific CPU needs to work properly is different and varies for every single one. There's datasheets that tell you under what conditions your CPU is guaranteed to work properly and they involve a lot of conditions. The most important ones are temperature, voltage and clock speed. In case you don't know, I can tell you that chip fabrication ends with lots of dead CPUs that go from the wafer to the dust bin after the initial test, because they simply do not work. Over time with a new fabrication process their number decreases as the process gets optimized. Especially towards the end of the lifecycle there's a good chance there's more CPUs coming out that could be sold as high clocking or low voltage ones than there are customers for. So they simply try to fill the quota of expensive, rarely gotten chips and the rest gets labeled worse than they could technically perform. Another thing is that not every single CPU is tested for all the shit in the datasheet in exact detail. It's cheaper to analyze how the limitations are working together and add a bit of headroom for the ones that are fit to select chips by.
So you have a good chance that your off-the-shelve CPU can do more than it is labeled for. And also you can optimize the working conditions for it.
Problem with all this is that you have to test the results, know what knob to adjust and test for stability afterwards. Having a gut feeling for that helps immensely. And maintaining stability is a key issue, as an occasionally crashing system is just defective, no matter at what speed it runs. If you want to go to the extreme by adjusting things like the reference levels of the gunning transceiver logic on your motherboard, you can waste as much time as you want and usually 80% of the benefits come after 20% of the time you invest in tuning.
If you didn't get it from above, Intel is selling CPUs that meet certain power requirements quite a bit below of those of standard CPUs. For a way higher price of course. Usually no problem on desktops, laptops come with a certain range of voltages you can force by software that stop your undervolting urge quite soon, especially with the slower CPUs. And that's where real nerds are separated from kids. Or maybe just crazy idiots from sane people.
Two fucking bytes can make a difference
Don't we all love the crazy shenanigans that some vendors make us deal with?
The concept of building just a single piece of hardware and selling it for different prices by locking features is nothing new. Ask for the Siemens HiPath series and what it costs to use the basic hardware with all it can do. Even without additional hardware you easily pay 10k bucks for some small sized company if you want IP based telephony and you do not have a single phone to plug in yet.
What Intel and some notebook vendors have done (again!) now is not a thing for all of us people who like to play around with their hardware. No, this time there's no sexual innuendo intended.
Some time ago I bought myself a new Wifi card for a new toy i have for some time already. You'll hear about that toy and what I have done to it soon, too. Well, exchanging a miniPCIe card in a laptop is usually nothing challenging or complicated. It's the old in-and-out-game, getting drivers and then being happy - usually. But if the card you wanna push in as some intel Wifi Link 5100 or 5300 you might face some challenges. Google for "Code 10" and intel wifi link, then you'll see there's a lot of people who wonder why those things do not work in their units. The usual, completely useless, answer is, that it worked like a charm for some others. Why that is you seldomly hear, but there actually is a "special version" of those cards made for IBM/Lenovo and HP/Compaq. Those things simply won't work like they should, likely even in units from these brands because they are known to use BIOS whitelisting. And unless they sell you their version of the Wifi cards explicitly for your model, it will likely not be whitelisted. And if they sell it to you expect the price to be at least twice what the card would cost as a normal, not brand specific version. And I guess that's the only thing this is about, being able to force their customers to pay unreasonable prices by artificially restricting their stuff from working together with standard hardware.
Of course, I got such a crippled Wifi card and was pissed like hell after I found out about this. Curious as I am, I at least wanted to know what the actual difference is and if I could give my oversized soldering iron a shot in turning this thing from crippled to normal. I found nothing about any such mod, not even later when I knew how it all worked. Soon enough I found out that the same thing already happened some time ago with the Intel 2200BG miniPCI card and that there was a fix. Intel just used a different set of hardware ID and subsys ID for the specially crafted kind and those were saved in the EEPROM of those cards. Google soon confirmed my suspicion about this being at least one difference this time, too. I didn't find a single post or anything about this where someone suspected or stated that, though, but only a lot of diagnosis logs from people with a laptop that showed this difference clearly and consistent. So why not do what had been a success in the past and change the EEPROM with ethtool and some linux live disc?
Because it does not work. I tried my standard Knoppix and also mint linux, which was quite newly released, and ethtool does not support dumping the EEPROM from those cards. By chance I stumbled upon some GoogleCode project that was developing a tool for axactly what I wanted: dumping and writing the EEPROMs of Intel Wifi cards. It's here: http://code.google.com/p/iwleeprom/
As I did not find anything better, I decided to check this out, second meaning intended. Compiling worked as wonderfully as dumping the ROM. In some old fashioned hex editor I immediately saw what I wanted to see...
PCIVEN_8086&DEV_4237&SUBSYS_12118086 and PCIVEN_8086&DEV_4232&SUBSYS_12018086 are the 2 ID sets of the Wifi link 5100, the earlier being the IBM/HP one, the latter being the sane one. Now look for yourself.
Oh yes, as simple and obvious as one could wish. And soon after that even the MAC address is stored, which is why I chose to delete this. If you wonder why the words are seemingly swapped google big and little endian.
Ok, altering this was dead simple and guess what happened after writing this thing back to the wifi card. Yes, it worked. Goodbye crappy Atheros card, hello 802.11n. Now I can finally have sufficient network speed while in bed on the second floor and forwarding in some video file won't take ten VLC ten seconds to cache data.
If you know who had the idea to ask for a crippled version of the wifi cards to rip off customers at IBM/HP or who has agreed with that deal on Intel's side, please greet them from me and smack them in the face heavily.
The concept of building just a single piece of hardware and selling it for different prices by locking features is nothing new. Ask for the Siemens HiPath series and what it costs to use the basic hardware with all it can do. Even without additional hardware you easily pay 10k bucks for some small sized company if you want IP based telephony and you do not have a single phone to plug in yet.
What Intel and some notebook vendors have done (again!) now is not a thing for all of us people who like to play around with their hardware. No, this time there's no sexual innuendo intended.
Some time ago I bought myself a new Wifi card for a new toy i have for some time already. You'll hear about that toy and what I have done to it soon, too. Well, exchanging a miniPCIe card in a laptop is usually nothing challenging or complicated. It's the old in-and-out-game, getting drivers and then being happy - usually. But if the card you wanna push in as some intel Wifi Link 5100 or 5300 you might face some challenges. Google for "Code 10" and intel wifi link, then you'll see there's a lot of people who wonder why those things do not work in their units. The usual, completely useless, answer is, that it worked like a charm for some others. Why that is you seldomly hear, but there actually is a "special version" of those cards made for IBM/Lenovo and HP/Compaq. Those things simply won't work like they should, likely even in units from these brands because they are known to use BIOS whitelisting. And unless they sell you their version of the Wifi cards explicitly for your model, it will likely not be whitelisted. And if they sell it to you expect the price to be at least twice what the card would cost as a normal, not brand specific version. And I guess that's the only thing this is about, being able to force their customers to pay unreasonable prices by artificially restricting their stuff from working together with standard hardware.
Of course, I got such a crippled Wifi card and was pissed like hell after I found out about this. Curious as I am, I at least wanted to know what the actual difference is and if I could give my oversized soldering iron a shot in turning this thing from crippled to normal. I found nothing about any such mod, not even later when I knew how it all worked. Soon enough I found out that the same thing already happened some time ago with the Intel 2200BG miniPCI card and that there was a fix. Intel just used a different set of hardware ID and subsys ID for the specially crafted kind and those were saved in the EEPROM of those cards. Google soon confirmed my suspicion about this being at least one difference this time, too. I didn't find a single post or anything about this where someone suspected or stated that, though, but only a lot of diagnosis logs from people with a laptop that showed this difference clearly and consistent. So why not do what had been a success in the past and change the EEPROM with ethtool and some linux live disc?
Because it does not work. I tried my standard Knoppix and also mint linux, which was quite newly released, and ethtool does not support dumping the EEPROM from those cards. By chance I stumbled upon some GoogleCode project that was developing a tool for axactly what I wanted: dumping and writing the EEPROMs of Intel Wifi cards. It's here: http://code.google.com/p/iwleeprom/
As I did not find anything better, I decided to check this out, second meaning intended. Compiling worked as wonderfully as dumping the ROM. In some old fashioned hex editor I immediately saw what I wanted to see...
PCIVEN_8086&DEV_4237&SUBSYS_12118086 and PCIVEN_8086&DEV_4232&SUBSYS_12018086 are the 2 ID sets of the Wifi link 5100, the earlier being the IBM/HP one, the latter being the sane one. Now look for yourself.
Oh yes, as simple and obvious as one could wish. And soon after that even the MAC address is stored, which is why I chose to delete this. If you wonder why the words are seemingly swapped google big and little endian.
Ok, altering this was dead simple and guess what happened after writing this thing back to the wifi card. Yes, it worked. Goodbye crappy Atheros card, hello 802.11n. Now I can finally have sufficient network speed while in bed on the second floor and forwarding in some video file won't take ten VLC ten seconds to cache data.
If you know who had the idea to ask for a crippled version of the wifi cards to rip off customers at IBM/HP or who has agreed with that deal on Intel's side, please greet them from me and smack them in the face heavily.
Subscribe to:
Posts (Atom)

