It wasn't described as a mock up, but as a real working Fermi board.
NVIDIA are quite a way behind in the next generation race (time-wise, not tech-wise), and they had to try and make it look like they were a month or two away from having product availability. This fakery just makes the late Q1 2010 rumours sound more likely...
You're right about NVidia claiming it was real
FTA: Note 1: Nvidia PR was asked to comment on the faked cards earlier this evening. Their reply was, "I'm glad you're asking us before you write. That statement is false. The product that we displayed was an actual Fermi board. The demo ran on Fermi silicon." We do not believe all of that statement.
I'm willing to give NVidia the benefit of the doubt. Sometimes hardware engineering samples are all hacked together like you wouldn't believe to get the first versions working.
The whole screw / DVI / blocked vent thing could be easily explained if they had to put a DVI connector off the card (Fermi has 3 output's) and didn't have a matching backplate for it -- the screws could be holding the "floating" DVI connector. The dual power connectors also makes sense since one is 8-pin and one is 6 pin -- they may be using the same card for more than one chip in the family and depending on power requirements may use a different power connector. He claims the power connector is fake because the mounting solder points are 90 degrees from the connector itself -- the part costs a couple pennies more but you can buy power connector sockets with rotated mountings.
"replace the multitudinous connector types with a single connector" = multitudinous connector types + 1;
For a while yes... but in time no. USB pretty much has killed off the need for Parallel Ports, Serial Ports, Mouse and Keyboard Ports. USB 2.0 has really diminished external SCSI for HD's.
Misspellings won't necessarily break your code but they will make it much more difficult for others to maintain those million lines of code. And I'm pretty sure that bad grammar and logical inconsistencies (which are both prevalent in his comment) would not lead to bug-free code.
Grammar isn't important in a slashdot post. It is important in code however. He was claiming to have written a million lines of code with only two bugs when he had a dozen spelling mistakes, two dozen grammar mistakes, and at least a half dozen formal errors in his logic.
I wasn't picking on him because he was dyslexic, I was noting that given the quality of his post, I found his claim (of 99.9998% bug-free code) to be hard-to-believe.
As I've understood, BIOS isn't really that complicated nor does it do any heavy calculations. It basically just brings hardware up and tests it, which takes most of the time (not that the 5-6 seconds is so long wait anyway). So have they optimized something else, or are they just skipping those tests?
I have a fairly high-end QuadCore and the BIOS takes 37 seconds before it begins loading Windows. Some time is spent on the Intel RAID BIOS, some on the manufacturer splash screen, etc. I have as many tests turned off as I can and I have the HD pre-delay set to 0 seconds since I use SSD's.
FWIW, Windows Vista loads in about 11 seconds on my machine (I have RAID0 Intel SSD drives).
In fact one million line project went out and only had 2 bugs. Not a single one had a complaints about missing features or bloat.
Anecdotal, yes; however I ahve been programming for a long time and I was amazed at how well it worked out. Freaking amazed.
I'm amazed you can ship a million lines with only two bugs (found that is) when you misspell "have" as "ahve" three times in a single post. There are plenty of spelling "bugs" in your post and when I get through them, you have enough grammar "bugs" that it's hard to understand half of what you're trying to say -- that fact that it's logically inconsistent doesn't help as well. Please tell me you are not a native English-speaker and that all this craziness is just "lost in translation".
I just wrote an application, almost all of the function were just reuse of previous projects I ahve done. How does an account quantify the value of reuse?
Reuse of code does not mean it's bug free -- sure you've had some testing on the previous code but using it in new and different ways is bound to expose bugs in any non-trivial piece of code.
I'm happy to believe that IE8 actually has a good security model. I'm happy to believe that Chrome is not without flaws.
One thing worth knowing... on Windows, Chrome by itself runs as a user process - no OS-level permissions or hooks. It even installs in the USER directories -- I wish it would install in "Program Files" like everything else but Google made it so that even a "limited" user can install and use Chrome without escalating any privileges on the OS. On top of that, plugins and different parts of Chrome (windowing, html renderer, javascript, etc) run in separate processes that are sandboxed from each other and have the minimal number of privileges necessary (even less than the top-level "limited user") to function.
This is a much more secure model than tightly integrated into the OS at system level that IE has.
More platters == more mass. Which translates to more power required for the motor, higher energy usage and much more heat generated by the drive. Generating more heat == quicker hardware failures. Also with bigger / larger / more platters, it's much harder to spin the platters faster. Usually more platters == slower RPM drive speed and much slower seek rates. If you can do fewer, smaller, and lighter platters, you can make the drive spin faster and perform better -- this is exactly what the Velociraptor does with it's high RPM 2.5" format.
Also, using only one side of the platter is often faster and more reliable because the head arm weighs less (1/2 the heads) so they don't have as much mass to impede fast seeking or to cause vibration. Plus you don't have to worry about the alignment on both sides of the platter. This is one reason why the highest speed drives do not necessarily even use both sides of the platter.
It's RAID 5 or 6 on a single disk, although without spindle redundancy.
No it's not... what happens if the control electronics fail, the arm actuator, or the spindle motor? RAID 5/6 have whole disk redundancy. You just have data redundancy on the platters - not full hardware redundancy. Also, all this extra components you want to add to the drive will just make it more complicated and have more points of failure so the drives will actually fail earlier.
And I also want a high-performance option: 2 sets of read/write heads 180 degrees apart, which effectively would cut seek times in half, making the drive perform more like a 10k RPM drive.
Except that it would slow the drive down by making calibration harder and slower. Moving the head arms causes vibration and movement in the drive. One arm would not be able to reliably read while the other was moving unless the drive was spinning slower to begin with.
The moral of your story is that you have some interesting ideas, but believe it or not, most of them have already been tried and rejected well before coming to market because they weren't feasible or reliable or didn't actually result in performance improvements in a cost effective manner.
Dude, if SPU programming is so easy for you, please apply for a position at my company: WB Games Chicago. We'd love to have someone who can port entire libraries to SPU in 30 minutes as you claim working on either the Mortal Kombat team or our other unannounced title.
Hundreds of years ago, 14 year olds would have been raised to be responsible for themselves and their families, to support their communities and nations, to hunt or raise their own food, and to make major decisions on their own.
Back when the average lifespan was 25-35 years old, if you didn't start having kids by age 14, you wouldn't live to see your grandchildren. Oh, and an old wise man/woman was someone who made it past 35.
I get nearly 2X the speed of a single drive that is limited by SATA. Theoretically, that might not be the same thing but for all *PRACTICAL* purposes, it gets around the bottleneck just fine for me:-)
Actually current SSD's are bottlenecked by the SATA connection at 300MB/s read so getting 500 with specialized hardware doesn't seem all that fantastic.
The easy way around the SATA speed limit is software RAID and multiple drives. I have two Kingston 160GB (relabelled Intel G1) SSD Drives on an Intel Matrix Controller MB with software RAID 0. I get read rates over 400MB/s with technology that is roughly a year old. I'm sure newer technology on higher end controllers can easily achieve 500.
If you program C# Windows / Direct3D, programming, XNA for XBOX is easy to program for. You can actually start with XNA on the PC and most stuff will transfer over with minimal changes. You have access to the GPU and shader programming so GPGPU programming ideas can be ported as well.
The PS3 Linux is significantly more difficult to program for, has a different memory model (and programming architecture) for the SPU's, has very poor (compared to Visual Studio) debugging and programming IDE environment, etc. Not to mention that the latest version of the PS3 doesn't even support Linux. There is no GPU access so GPGPU algorithms available on the PC need to be manually ported to the PS3.
That said, if they actually did buy older PS3's, take the steep learning curve to SPU programming, port all of their code to a 100% custom platform with hard-to-use tools, and heavily optimize the SPU code, they would probably be running their algorithms significantly faster on PS3 SPU's than on the XBOX 360 GPU.
It's not a given... not to mention that such batteries don't last a long time (i.e. only hours or a day or two - not a week). The HyperDrive RAM Drive requires a DC adapter to keep the DRAM running and uses it's battery only in case of powerfailure to backup the DRAM to Compact Flash.
For read-caching of OS files that survives reboots, flash has another obvious answer: it's NON-VOLATILE.
DRAM caching still requires that you read files from the HD to boot up (unless you have a battery backup for the DRAM). With Flash, you could start your boot sequence while the HD is still spinning up for a faster boot time.
When given similar performance but a slightly higher price, i would prefer the SSD. I can't take the flash to the next PC as i can do with the SSD.
You shouldn't have to. The Braidwood Motherboard SLC Flash Memory is used as a HD cache for reads and writes but all writes are written through to the HD before you shutdown. Your chance of losing data doesn't have to be any higher than with current in-memory (DRAM) HD caching algorithms used by all modern operating systems.
At festivals, where there are thousands of people jammed together (like Jazz-Fest, Satchmo Fest, Shrimp and Petrol Fest, Strawberry Fest, Satsuma Fest, Fest Fest, Mardi Gras (don't even get me started on mardi gras), etc.) My phone might as well be a brick. No incoming, no outgoing, no texts, no service. AT&T obviously ran the numbers and installed EXACTLY the capacity they would need for day-to-day operations and not a single bit/sec more. As soon as people start globbing together, AT&T's network falls to its knees and pleads for mercy.
I experience this whenever I go to a festival or street fair in the Chicago area. The 3G network gets so borked I can't even send and recieve text messages. However -- The solution is pretty simple. When the iPhone is dead on 3G, just go to the network settings and select "EDGE" and it will work just fine then. You should be able to make calls and get data on 3G. Web Browsing will be slower than normal 3G but it's better than nothing at all.
What would be nice is if the iPhone automatically detected when 3G was oversubscribed / unusable and automagically failover to EDGE without user intervention. However, as long as it sees a 3G signal, it will stay on 3G even if the 3G network is oversaturated and unuseable.
Not just ongoing support.... there are large initial costs involved besides "material expense" -- especially when you're talking Petabyte data centers. For example, the cost to assemble the hardware, interconnect everything, install the software on hundreds of servers (even cloning takes time), testing the configuration, etc. Plus buying or renting the real estate to house the unit. Oh, and making sure the building has adequate filtered power and air conditioning.
The 'goto' version is very easy to understand once you get past the fact that they're essentially the same code. Once you grok the pattern, either one is easy to read. You simply need to think about it a bit more... maybe write that pattern a couple times and you'll grok it sooner or later.
I will agree the nested version is simpler for people who don't grok the 'goto' pyramid. Also, one needs to use significantly more care coding the goto version because one can easily screw up the 'goto' version with a misplaced label or an improper goto target -- that's much harder to do with 'if' logic.
The benefit of the goto version in readability is you don't have a ton of tabs and braces shifting your code out to the right. Basically, the code you posted here is nearly unreadable from the line wraps and indentation. If you cut and pasted the 'goto' version into your narrow slashdot post, it would be more readable for the post width. Futhermore, startup code often follows step-by-step logic unless something goes wrong (which is hopefully the very rare case) so it's easier to consider the code in a linear manner at the same indentation level and then only break the flow if something goes wrong, rather than breaking the flow (indenting a level) at every step of the code-- especially if there are a lot of steps involved in starting up the process.
Breaking out of a deeply-nested loop, as can happen when you’re looking for a specific element in a multidimensional array. The alternative involves adding state variables and complicating the logic terribly.
Actually, there is a simple work-around without a goto to the lack of a labelled break in C. Make the deeply-nested-loop search a function and "return" when you've found the element. If it's a relatively small loop, the compiler should inline it and basically generate the same code you'd get as if you had used the goto but without the goto. You can do this for just about anything although if done too often it does lead a bit to function bloat.
I personally don't think 'goto' when used in place of a labelled-break is all that bad. It avoids the function bloat of the method above and it also runs faster in DEBUG (non-inline / non-optimized) builds.
One place I do use 'goto' is to jump past conditional branches from within another condition where they actually perform an optimization that is impossible to recreate using standard C structures without copy-and-paste to duplicate code.
It's still immensely simpler to use credit cards than to have on hand 16 of any coin (for $1 denominations assuming they would be accepted). So that's what I've been doing for the parking machines.
It wasn't described as a mock up, but as a real working Fermi board.
NVIDIA are quite a way behind in the next generation race (time-wise, not tech-wise), and they had to try and make it look like they were a month or two away from having product availability. This fakery just makes the late Q1 2010 rumours sound more likely...
You're right about NVidia claiming it was real
FTA: Note 1: Nvidia PR was asked to comment on the faked cards earlier this evening. Their reply was, "I'm glad you're asking us before you write. That statement is false. The product that we displayed was an actual Fermi board. The demo ran on Fermi silicon." We do not believe all of that statement.
I'm willing to give NVidia the benefit of the doubt. Sometimes hardware engineering samples are all hacked together like you wouldn't believe to get the first versions working.
The whole screw / DVI / blocked vent thing could be easily explained if they had to put a DVI connector off the card (Fermi has 3 output's) and didn't have a matching backplate for it -- the screws could be holding the "floating" DVI connector. The dual power connectors also makes sense since one is 8-pin and one is 6 pin -- they may be using the same card for more than one chip in the family and depending on power requirements may use a different power connector. He claims the power connector is fake because the mounting solder points are 90 degrees from the connector itself -- the part costs a couple pennies more but you can buy power connector sockets with rotated mountings.
"replace the multitudinous connector types with a single connector" = multitudinous connector types + 1;
For a while yes... but in time no. USB pretty much has killed off the need for Parallel Ports, Serial Ports, Mouse and Keyboard Ports. USB 2.0 has really diminished external SCSI for HD's.
Misspellings won't necessarily break your code but they will make it much more difficult for others to maintain those million lines of code. And I'm pretty sure that bad grammar and logical inconsistencies (which are both prevalent in his comment) would not lead to bug-free code.
Grammar isn't important in a slashdot post. It is important in code however. He was claiming to have written a million lines of code with only two bugs when he had a dozen spelling mistakes, two dozen grammar mistakes, and at least a half dozen formal errors in his logic.
I wasn't picking on him because he was dyslexic, I was noting that given the quality of his post, I found his claim (of 99.9998% bug-free code) to be hard-to-believe.
The problem s not that they don't work, the problem is most places don't actually implement them correctly, or have on partial buy in.
If your turd never gets out the door, that's a people problem, not a problem with the method of development.
As I've understood, BIOS isn't really that complicated nor does it do any heavy calculations. It basically just brings hardware up and tests it, which takes most of the time (not that the 5-6 seconds is so long wait anyway). So have they optimized something else, or are they just skipping those tests?
I have a fairly high-end QuadCore and the BIOS takes 37 seconds before it begins loading Windows. Some time is spent on the Intel RAID BIOS, some on the manufacturer splash screen, etc. I have as many tests turned off as I can and I have the HD pre-delay set to 0 seconds since I use SSD's.
FWIW, Windows Vista loads in about 11 seconds on my machine (I have RAID0 Intel SSD drives).
In fact one million line project went out and only had 2 bugs. Not a single one had a complaints about missing features or bloat.
Anecdotal, yes; however I ahve been programming for a long time and I was amazed at how well it worked out. Freaking amazed.
I'm amazed you can ship a million lines with only two bugs (found that is) when you misspell "have" as "ahve" three times in a single post. There are plenty of spelling "bugs" in your post and when I get through them, you have enough grammar "bugs" that it's hard to understand half of what you're trying to say -- that fact that it's logically inconsistent doesn't help as well. Please tell me you are not a native English-speaker and that all this craziness is just "lost in translation".
I just wrote an application, almost all of the function were just reuse of previous projects I ahve done. How does an account quantify the value of reuse?
Reuse of code does not mean it's bug free -- sure you've had some testing on the previous code but using it in new and different ways is bound to expose bugs in any non-trivial piece of code.
I'm happy to believe that IE8 actually has a good security model. I'm happy to believe that Chrome is not without flaws.
One thing worth knowing... on Windows, Chrome by itself runs as a user process - no OS-level permissions or hooks. It even installs in the USER directories -- I wish it would install in "Program Files" like everything else but Google made it so that even a "limited" user can install and use Chrome without escalating any privileges on the OS. On top of that, plugins and different parts of Chrome (windowing, html renderer, javascript, etc) run in separate processes that are sandboxed from each other and have the minimal number of privileges necessary (even less than the top-level "limited user") to function.
This is a much more secure model than tightly integrated into the OS at system level that IE has.
I want 8 sides of the platters dedicated to data
More platters == more mass. Which translates to more power required for the motor, higher energy usage and much more heat generated by the drive. Generating more heat == quicker hardware failures. Also with bigger / larger / more platters, it's much harder to spin the platters faster. Usually more platters == slower RPM drive speed and much slower seek rates. If you can do fewer, smaller, and lighter platters, you can make the drive spin faster and perform better -- this is exactly what the Velociraptor does with it's high RPM 2.5" format.
Also, using only one side of the platter is often faster and more reliable because the head arm weighs less (1/2 the heads) so they don't have as much mass to impede fast seeking or to cause vibration. Plus you don't have to worry about the alignment on both sides of the platter. This is one reason why the highest speed drives do not necessarily even use both sides of the platter.
It's RAID 5 or 6 on a single disk, although without spindle redundancy.
No it's not... what happens if the control electronics fail, the arm actuator, or the spindle motor? RAID 5/6 have whole disk redundancy. You just have data redundancy on the platters - not full hardware redundancy. Also, all this extra components you want to add to the drive will just make it more complicated and have more points of failure so the drives will actually fail earlier.
And I also want a high-performance option: 2 sets of read/write heads 180 degrees apart, which effectively would cut seek times in half, making the drive perform more like a 10k RPM drive.
Except that it would slow the drive down by making calibration harder and slower. Moving the head arms causes vibration and movement in the drive. One arm would not be able to reliably read while the other was moving unless the drive was spinning slower to begin with.
The moral of your story is that you have some interesting ideas, but believe it or not, most of them have already been tried and rejected well before coming to market because they weren't feasible or reliable or didn't actually result in performance improvements in a cost effective manner.
Dude, if SPU programming is so easy for you, please apply for a position at my company: WB Games Chicago. We'd love to have someone who can port entire libraries to SPU in 30 minutes as you claim working on either the Mortal Kombat team or our other unannounced title.
Because we don't get any naturally from the Sun, Cosmic rays, or spontaneous decay of elements naturally occuring on earth.
Hundreds of years ago, 14 year olds would have been raised to be responsible for themselves and their families, to support their communities and nations, to hunt or raise their own food, and to make major decisions on their own.
Back when the average lifespan was 25-35 years old, if you didn't start having kids by age 14, you wouldn't live to see your grandchildren. Oh, and an old wise man/woman was someone who made it past 35.
That doesn't get around the bottleneck at all.
I get nearly 2X the speed of a single drive that is limited by SATA. Theoretically, that might not be the same thing but for all *PRACTICAL* purposes, it gets around the bottleneck just fine for me :-)
Actually current SSD's are bottlenecked by the SATA connection at 300MB/s read so getting 500 with specialized hardware doesn't seem all that fantastic.
The easy way around the SATA speed limit is software RAID and multiple drives. I have two Kingston 160GB (relabelled Intel G1) SSD Drives on an Intel Matrix Controller MB with software RAID 0. I get read rates over 400MB/s with technology that is roughly a year old. I'm sure newer technology on higher end controllers can easily achieve 500.
If you program C# Windows / Direct3D, programming, XNA for XBOX is easy to program for. You can actually start with XNA on the PC and most stuff will transfer over with minimal changes. You have access to the GPU and shader programming so GPGPU programming ideas can be ported as well.
The PS3 Linux is significantly more difficult to program for, has a different memory model (and programming architecture) for the SPU's, has very poor (compared to Visual Studio) debugging and programming IDE environment, etc. Not to mention that the latest version of the PS3 doesn't even support Linux. There is no GPU access so GPGPU algorithms available on the PC need to be manually ported to the PS3.
That said, if they actually did buy older PS3's, take the steep learning curve to SPU programming, port all of their code to a 100% custom platform with hard-to-use tools, and heavily optimize the SPU code, they would probably be running their algorithms significantly faster on PS3 SPU's than on the XBOX 360 GPU.
"unless you have a battery backup for the DRAM"
You say that like it is not a given....
It's not a given... not to mention that such batteries don't last a long time (i.e. only hours or a day or two - not a week). The HyperDrive RAM Drive requires a DC adapter to keep the DRAM running and uses it's battery only in case of powerfailure to backup the DRAM to Compact Flash.
What's the correct terminology for the second kind of random I/O? Random I/O with very low locality?
Dunno, but the correct terminology for the first is "Random Access" or "Random Access IO" -- not "Random IO".
RTFA. It's cheaper than DRAM.
For read-caching of OS files that survives reboots, flash has another obvious answer: it's NON-VOLATILE.
DRAM caching still requires that you read files from the HD to boot up (unless you have a battery backup for the DRAM). With Flash, you could start your boot sequence while the HD is still spinning up for a faster boot time.
When given similar performance but a slightly higher price, i would prefer the SSD. I can't take the flash to the next PC as i can do with the SSD.
You shouldn't have to. The Braidwood Motherboard SLC Flash Memory is used as a HD cache for reads and writes but all writes are written through to the HD before you shutdown. Your chance of losing data doesn't have to be any higher than with current in-memory (DRAM) HD caching algorithms used by all modern operating systems.
At festivals, where there are thousands of people jammed together (like Jazz-Fest, Satchmo Fest, Shrimp and Petrol Fest, Strawberry Fest, Satsuma Fest, Fest Fest, Mardi Gras (don't even get me started on mardi gras), etc.) My phone might as well be a brick. No incoming, no outgoing, no texts, no service. AT&T obviously ran the numbers and installed EXACTLY the capacity they would need for day-to-day operations and not a single bit/sec more. As soon as people start globbing together, AT&T's network falls to its knees and pleads for mercy.
I experience this whenever I go to a festival or street fair in the Chicago area. The 3G network gets so borked I can't even send and recieve text messages. However -- The solution is pretty simple. When the iPhone is dead on 3G, just go to the network settings and select "EDGE" and it will work just fine then. You should be able to make calls and get data on 3G. Web Browsing will be slower than normal 3G but it's better than nothing at all.
What would be nice is if the iPhone automatically detected when 3G was oversubscribed / unusable and automagically failover to EDGE without user intervention. However, as long as it sees a 3G signal, it will stay on 3G even if the 3G network is oversaturated and unuseable.
Not just ongoing support.... there are large initial costs involved besides "material expense" -- especially when you're talking Petabyte data centers. For example, the cost to assemble the hardware, interconnect everything, install the software on hundreds of servers (even cloning takes time), testing the configuration, etc. Plus buying or renting the real estate to house the unit. Oh, and making sure the building has adequate filtered power and air conditioning.
And putting such "if" statements is not solving the problem - not even temporarily - but hiding the bug.
Wait, I though 'goto' was bad... now 'if' is bad as well ?
The 'goto' version is very easy to understand once you get past the fact that they're essentially the same code. Once you grok the pattern, either one is easy to read. You simply need to think about it a bit more... maybe write that pattern a couple times and you'll grok it sooner or later.
I will agree the nested version is simpler for people who don't grok the 'goto' pyramid. Also, one needs to use significantly more care coding the goto version because one can easily screw up the 'goto' version with a misplaced label or an improper goto target -- that's much harder to do with 'if' logic.
The benefit of the goto version in readability is you don't have a ton of tabs and braces shifting your code out to the right. Basically, the code you posted here is nearly unreadable from the line wraps and indentation. If you cut and pasted the 'goto' version into your narrow slashdot post, it would be more readable for the post width. Futhermore, startup code often follows step-by-step logic unless something goes wrong (which is hopefully the very rare case) so it's easier to consider the code in a linear manner at the same indentation level and then only break the flow if something goes wrong, rather than breaking the flow (indenting a level) at every step of the code-- especially if there are a lot of steps involved in starting up the process.
Breaking out of a deeply-nested loop, as can happen when you’re looking for a specific element in a multidimensional array. The alternative involves adding state variables and complicating the logic terribly.
Actually, there is a simple work-around without a goto to the lack of a labelled break in C. Make the deeply-nested-loop search a function and "return" when you've found the element. If it's a relatively small loop, the compiler should inline it and basically generate the same code you'd get as if you had used the goto but without the goto. You can do this for just about anything although if done too often it does lead a bit to function bloat.
I personally don't think 'goto' when used in place of a labelled-break is all that bad. It avoids the function bloat of the method above and it also runs faster in DEBUG (non-inline / non-optimized) builds.
One place I do use 'goto' is to jump past conditional branches from within another condition where they actually perform an optimization that is impossible to recreate using standard C structures without copy-and-paste to duplicate code.
It's still immensely simpler to use credit cards than to have on hand 16 of any coin (for $1 denominations assuming they would be accepted). So that's what I've been doing for the parking machines.