I have a quad core processor and the option to link my 4 ram chips seperately to each seperate core. Is it possible to do the same with hard drives. Can you link a core, ram, and hard drive together if i had 4 drives the same size? Could that be a raid option?
migrated from stackoverflow.com Dec 18 '09 at 9:39
This question came from our site for professional and enthusiast programmers.
If you were a processor, everything else would seem kind of slow. But if RAM feels like DSL, then a hard disk, that's worse than dial-up!
So if you want something off the disk, you instruct the disk to store it in RAM for you, and then go and do something else. After what feels like a few months, the hard disk informs you that it's done. At this point, the data you wanted is in RAM and you can do your stuff with it.
This basically means that CPU-disk communication speed doesn't make much difference. The important thing is still CPU-RAM speed.
What you're talking about is effectively a blade-style server. No, really. If you're splitting up the secondary storage by core as well as the RAM, then what you wind up with is a set of independent single-core computers with a shared bus, ala Infiniband, for talking to each other.
There's no way it could be a RAID option because the whole point of RAID is to make a set of drives look like a single volume. RAID is like encapsulation.
I've seen this kind of architecture before at work. Somebody would take a bunch of VME or CompactPCI single-board computers, put storage on the PMC sites (1.8" hard drives, usually; this was before SSDs became practical), and stuff them all into a chassis. What a pain to develop stuff on those machines, since you had to partition accesses to "your" (local core) data and accesses to "their" (other cores') data. I wound up writing a library just to figure out how to get data stream producer A to talk to consumers B, C, and D without excess copies (which were killing my performance). I don't want to go back.
Companies even developed their own crossbar buses to connect the computers (Mercury RaceWay was the best I saw at the time) to maximize I/O. (For those who don't know, crossbar buses mean that you only have to arbitrate for the bus if someone else is trying to access the same destination as you are; in general, multiple transactions involving non-overlapping endpoints can happen simultaneously, resulting in some theoretically insane bandwidth. It's like using Ethernet switches instead of hubs.)
It's a great idea on paper, but it diverges enough from standard practice that the hardware has a small market and gets really expensive.
P.S. The best you're going to be able to do is put each drive on a separate controller, which has bus-mastering (i.e. DMA) capability. Then you're going to need to put some kind of "affinity" algorithm into the OS, which maps processes to CPU/RAM sets based on what disk they're using. That's the kind of thing people do Masters' Reports on. Have fun.