System on a Chip Concurrent Development
An anonymous reader writes "The old silo method of chip development, with hardware and firmware developers barely interacting with each other, won't cut it in today's fast-moving industry. IBM DeveloperWorks has the third in a series of articles about system-on-a-chip design. The author, Sam Siewert, displays the development tools and processes that speed system on a chip design and get all your developers working together effectively."
Link to all the articles in order.
Hosting 20G hd, 1Tb bw! ssh $7.95
Why not make a CPU with a built-in FPGA, then load bits of the kernel into that hardware?
Call me crazy, but that might be more efficient than just throwing more cores at the problem.
Hardware-software codesign is nothing new and revolutionary. It has been taught for years at berkeley and around the country. A bunch of links can also be found here
Can erlang style message passing be built into something that small?
Reality is nothing but a collective hunch.
Ok, so I did RTFA but didn't understand a lot of it because I'm not a developer and ended up skimming through the parts I wasn't following.
But, how is this different from what Apple does with their BootRom?
I understand that in the realm of Windows-based PC architecture this is not common practice but I would not consider is new or groundbreaking and, in fact, it seems fairly obvious.
Someone please post a synopsis for us laymen of what makes this innovative.
The concept of software/hardware codesign is not a new one. I would say that every project I have worked on for the past 20 years has been a software/hardware codesign project, regardless of whether it was an SoC or some other hardware system. In every case, I have seen the software start running shortly after the new hardware is powered up. Fast software boot is a validation that you did the design correctly, but it should not be viewed as an amazing feat. It should be an expected outcome that was planned for. Those who design in "silos" are doing it the wrong way from the start and are asking for problems.
Within the last 5 years or so, there has been a lot of hype about System-on-Chip (SoC) development. There have been lots of SoC articles, and many companies trying to sell tools to develop SoC's. But when I read through most of the hype, I find nothing all that revolutionary about the tools and methods. Chip fabrication has reached the point where one can integrate a lot of functionality on a chip, but the design methodologies for successful designs are still basically the same as the past non-integrated designs. Mistakes are less forgiving in an SoC since rework is very difficult or impossible, so the design verification requirements need to be thorough. Most design successes that I have seen have been more dependent on the thoroughness of the design team than the tools used. The best tools in the world will not save you from the blunders of bad designers.
I dont really want any more SOCks as I have enough to last me till next xmas now, although Linux or NetBSD on SOCks would be cool :)
/. is good for you.
Before corrupting hardware
So it's nice having these kinds of articles around, as they tend to reinforce the obvious about current practices. You'd be surprised how many companies don't understand these things.
Two of the most important things (on TFA's list of recommendations) are, IMO:
"1. Identify hardware and firmware module owners to take responsibility through entire life cycle."
"2. Adopt configuration management version control (CMVC) tools that allow for feature addition branches and version tagging."
The other items are important. But these two stand out, as their impact has ramifications in the other areas.
For #1, this can be characterized as "Avoid the Netscape Development Model". That is, there is no single owner, and everyone gets to make whatever mods they want. This leads to excessive code bloat, broken API's, and no one single person responsible for fixing a specific section. It's typically brought about by total mis-management of the project, by MBAs. It's truly amazing that the majority of managers out there simply don't understand this.
And sorry to pick on Netscape, but the stories involved with their engineering mismanagement here are rather noteworthy.
For #2, the right SCM selection is critical; and the wrong one ends up costing not only money, but even worse, time. While branching and tagging is important (does any modern SCM not have this?), there are a lot of subtle issues which you can't see based upon the marketing blurbs.
A superb example of the hidden costs is ClearCase. Regardless of whether you love CC or hate it, it ALWAYS soaks up a lot of resources. Aside from the servers required (assuming they don't go down at critical times), I have yet to see a ClearCase project which didn't have an absymally low ratio of developers to SCM engineers.
Modern SCM systems (like bitkeeper) should have one SCM engineer per hundreds of developers (at least). With ClearCase, it seems like the ratio is in the tens (or perhaps a hundred if you're lucky).
Finally, what IS somewhat new (and not mentioned really in the article), is the incredible speed in development by using Open Source. There is no faster development model with the Closed Source approaches, because you ALWAYS run into things that you didn't foresee; and you either cannot solve them with Closed Source, or it will end up costing you significant money (and additional time) to surmount the issue.
But with Open Source code, you can either solve the problem immmediately; or, someone else has come across the problem, and has a solution already in place.
I pity (and avoid) the companies which don't understand all of the above points. I also prefer to work with their competitors, as I like having successes on my Resume, and not also-rans.
The best way to predict the future is to create it. - Peter Drucker.
Why not make a CPU with a built-in FPGA, then load bits of the kernel into that hardware?
Call me crazy, but that might be more efficient than just throwing more cores at the problem.
Here's one: Atmels' 20 MIPS processor + FPGA
The problem is, fast processors are now SO cheap that the applications for a part like this are incredibly limited - you end up with the wrong FPGA and the wrong uP for more than it would probably cost you to buy the right architecture as discrete chips.
http://www.altium.com/
Check out Altium Designer, FPGA + Embedded C + PCB design all under the one hood, with all the handy things that come from having them all under the one hood.
When you say "Apple Bootrom" I beleive you actually ment:
http://www.openfirmware.org/
Which was originally created by Sun Microsystems, I believe.
IBM released a BSD-licensed version earlier for use in it's PowerPC, POWER, and Cell stuff. Make it more Linux-friendly.
Of course other manufacturers are free to use it in their own hardware. Of course they should keep in open and documented so as to not look like total jackasses and turn something that is supported by many OSes into something that they have to expensively modify and hide from everybody.
Putting the CPU, Chipset, Bios, RAM, and device controllers onto the same chip would erase many of the major bottlenecks effecting today's high-end PCs. Its these bottlenecks, which things like PCI-Express and SATA is trying to eliminate, that keeps today's fast PCs from being as fast as they truely should be.
Michael "TheZorch" Haney
thezorch@gmail.com
http://thezorch.googlepages.com/home
If Transmeta proved anything, it was that you get more performance-per-watt and flexibilty by moving hardware into software. I guess that was the point behind the RISC processors that are now delivering up to 32 concurrent threads in hardware. Keeping the hardware simple gives you far greater potential. In light of this, I don't see how "system on a chip" can be a good thing?
Zen tips: Pay attention. Don't take it personally. Believe nothing.
As a SoC developer, looking for solutions to help improve dev-team productivity, I'm finding that there is a new breed of tools emerging called Electronic System Level (ESL) tools. These tools help to automate tedious low-level work and facilitate co-development of various aspects of SoC development. When interacting with hardware from a microprocessor, or even for communicating between multiple microprocessors I generally use memory-mapped registers. SpectaReg, a new tool from Productivity Design Tools looks pretty cool. During a recent demo PDTi showed how SpectaReg captures high-level speculations and generates HDL logic, a C hardware abstraction layer API, register-map documentation in HTML and PDF formats, and a self-checking test bench for the logic.
Because I'm a minor ARM fanatic, they list the ARM7500 system-chip as a milestone in 1994 and ARM7500FE in 1996. Perhaps not putting the system RAM on the chip excludes it from being a true SoC in IBM's terms. Unless IBM wish us to believe that they invented the universe...