Geeks With Blogs
Patrice Calve Life's short, have fun


I'm not a computer hardware specialist, but there's something that has always stricked me, since my first day on a personal computer...  Why does copying of files so expensive ?  Well, maybe not today with zooming cpus, motherboards, ram and hard disk, but bare with me...

Imagine that the hard disk was built as a server.  Maybe have it's own OS, cpu and ram.  “Hey Hard Disk, this guy up there wants you to copy the file f from location a to location b.  And while you're working, send me your progress at this location”.  Man would that be fast, no?

When you boot the computer, the hard disks would boot itself too !  It would load its OS in its RAM and provide functionality.  Once ready, it would be ready to serve.

More than that, the hard disk's OS could run constant health and activity tracking.  Generating stats and keeping track of how the data is beeing used.  Once in a while, it would generate reports.  “Hey, I noticed that your guy uses the disk for large files, I would like to re-organize everything in order to speed up things... I think it would speed it up by x %.  Wadayathink?”.

Alright, let's put it a step further (just, because I love free speech)... Imagine that the Hard Disk's OS runs an SQL server !  SELECT * FROM Folders WHERE Size>2Gig.  SELECT * FROM Files WHERE FileName like '%Wedding%' and Extension like 'xls'.  ZZZZZZOOOM !  Ok, now, Web Service:  http://harddisk0001/Stream/Get?ID={1234-ABCD-...}.  Man, that would be great. 

Imagine what could be achieved on a server when an SQL Host Server can talk to an SQL Hard Disk Server !

Why not having the hard disks talk to each other directly.  “Hey bro, I have a huge file for you...  It's 2.2 Gig, Ready?”.  Since it's all data communication (no processing necessary).  You could even have conversations between hard disk and controller... Allowing streaming of data from Hard Disk -> Controller -> Network Adapter -> Network -> Connected Device.

All that the host computer would have to do is to monitor the activity.

Imagine that the sound card was capable of talking to the hard disk.  Just think of the Audio Cable between the CD drive and the sound card.  That's an example of streaming.  Imagine that the sound card had it's own CPU,RAM, OS.  It could then run WinAmp “audio plugins“ directly on the card !  The Hard Disk would stream the data to the audio.  WinAmp on the audio card would orchestrate whatever sound changing algorithm it has to do in order to convert media x to sound (mp3 to ???). 

Let's push it a little.  Imagine that the video card has a CPU, RAM and OS.  It could have a WinAmp visualisation software on it too ! It could stream the video directly to the screen.

The Host Computer would be used to control the WinAmp front end application (The one with the skins, volume, PlayList, etc.).  But that portion of the application would be able to control the streaming of the file to the audio and video.

Now, I understand that there's timing issues, and Data transport issues.  I understand the basics (back from Assembly time).  But now, with the advancement of technology and OS...  I think that there could be (for example) two cables.  The original cable for legacy and for basic operations that wouldn't benefit for this architecture, and a second one for this new architecture.

Let's give an example:

  • The Host: H
  • The Hard Disk: D
  • The Disk Controller: C
  • The Audio Card: A

Traditionally (if I'm not mistaken)...  Data flows from H to C to D to C to H to A.  And in this scenario, H has to altern between processes, load the data (winamp app data), load the music file (mp3), do some calculation, send the result to the sound card through interupt (yeah, remember interupt).  Interupt is a way for the CPU to tell devices “hey, there's data for you at adress interuptx“. 

Imagine now, with my scenario that H tells A to play a file stream from D !  Maybe there's some initial coordination between the H, the C and D (to make sure that the file exists, that the user has the rights to read the file, etc...) but once the hand shake is done... no worries, no?

I'm still not sure how to handle a video with sound, however.  is there 1 source -> one dispatcher that sends the two streams to each device independently?  Or is one (video or audio) forwards the stream to the other device?  mmm... 

Imagine a video with tuner.  It would have the audio and the video.  It would make sence for the video card to send the audio to the audio card. 

So, computers that do not have the software loaded on the Intelligent Device would behave like our current computers (through cpu and interrupt).

Now, for data transport... The way I see it, is a bit like our Internet architecture.  There isn't one line connecting us all.  There's more than one, if one is slow, it can switch to another line.  Maybe fiberoptics is a solution?  I don't know.  Or, (like the case of a sata, you have more than 1 cable).

Lets push it one last step.  Imagine that you could install software hardware !  Imagine you could buy a SQL Chip, BizTalk chip. They would have CPU, OS, RAM and Software integrated.  They would still require host coordination...  You can buy an 8Gig USB drives !  Imagine having a 8Gig USB Thumb Server ! (forget the USB speed for now), imagine the power!  “hey John, throw me that Exchange server!“.

What do you think?


Posted on Tuesday, June 28, 2005 9:47 AM | Back to top

Comments on this post: Intelligent Device Computer Architecture

No comments posted yet.
Your comment:
 (will show your gravatar)

Copyright © Patrice CalvĂ© | Powered by: