[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: A Challenge to all takers...
Ranando King wrote:
It's always good to hear disuasive opinions on my ideas just to make sure
I'm staying grounded. Now, that being said...
"josephoswaldgg@hotmail.com" <josephoswald@gmail.com> wrote in message
1110496938.185706.304210@l41g2000cwc.googlegroups.com">news:1110496938.185706.304210@l41g2000cwc.googlegroups.com...
You are very vague when you say "capabilities approaching that of
modern PCs." Modern PC hardware is complicated.
You forgot the word "unnecessarily" between "is" and "complicated".
Not all of the hardware complexity is unnecessary. If you want
to transfer data on both edges of a 400MHz clock to get memory
bandwidth, it will require sophisticated circuits and timing.
These performance levels are not practically achievable without
custom ICs.
To take just one example: video output for modern PCs is handled by
highly integrated, high performance GPUs and video hardware on a fast
bus. This hardware is highly specialized and proprietary, requiring
complicated drivers and OS code to provide a usable API for
applications programming.
Hmm. Perfect for a peripheral card, don't you think?
Not if you consider that the driver code is pushing 1MB in
size!
You will not build this in your garage, or code it using a few
engineers working on it as a hobby.
Actually, you're right. I will build this in the office in my house. ;-)
Designing a new processor and bus is a possibly fun activity, but you
will not achieve real hardware meeting modern standards without a
company the size of, say, AMD. GHz IC design is not a hobby for
tinkerers, anymore than building a Cray I was within the reach of
hobbyists in the Apple IIgs era.
"Modern capabilities" is my target, not "modern standards". Modern standards
are, in many cases, unwieldy, proprietary, and painfully difficult to
acquire information on.
Modern capabilites require custom IC design capabilities.
No combination of off-the-shelf IC will accomplish what you want.
Trust me, modern PCs are cost-reduced within an inch of their
lives, subject to the constraint that they must continue to run
older software and OS's.
Would you muse on an automotive group about building a new kind of car,
presumably from scratch, with capabilities approaching a Honda Accord?
Not if they built it without needing tires, brake shoes/drums/rotors, and
gasoline. A car that somehow floats above the ground with some kind of
air-braking system, being completely electric, and having the same basic
capabilities as a Honda Accord, including energy efficiency, would be a
marvelous thing.
And would only violate a few physical laws... ;-)
You need to consider that Honda is _already_ building some of the
most advanced, radical automotive designs on the planet--subject to
the constraint that they remain somewhat affordable and do not need
to be worked on more than once or twice a year.
What you *can* do is something like developing an interesting FPGA core
with a novel CPU programming paradigm. It will have limited real-world
performance, but has wide scope for creative thinking, and can actually
be realized and used in demonstration projects. From a software point
of view, it is conceivable to write a new API/runtime environment to
allow new models of programming applications to run on a widely
supported OS infrastructure like Linux.
You're not too far from what I intend to do. I'll use a Xilinx Spartan 3
FPGA with a homebrew core for the CPU and a handfull of low-density CPLD's
for the system bus design. The performance won't be as limited as you might
think if I do it properly. Of course, I've got almost no chance in hell of
crossing the 1GHz border, but seeing as how some people still use 500Mhz
machines, I've still got a chance of approaching that speed. Performance,
however, is measured on a completely different scale. About the new API
idea? I've already got a project in that direction that I'm working on. This
is different.
Ah--very practical. But _far_ from having modern performance
capabilities--off by about a factor of 20-50, I would guess.
Don't get me wrong--it sounds like great fun! But don't expect
to come close to a 3GHz Pentium IV with _any_ programmable logic.
I'm not trying to discourage you from designing and implementing
something as a project, but I am hoping to get your expectations
set correctly for what is achievable in a general-purpose machine.
The whole thing that made Apple II's accessible to hobbyists is that is
was limited in its performance aspirations, but unlimited in its scope
for creative uses. One could understand virtually everything about an
OS that fit in 32k total ROM+RAM. You simply cannot understand as much
about a system that barely fits in 32 MB. (And don't imagine for a
second one could implement anything realistically "modern" in
capability in less: software "bloat" is not a moral failing, it is the
result of an engineering compromise, accepting lower resource
efficiency in return for hugely increased capability.) The Apple II
kind of limited performance+wide scope is now embodied in the PIC/FPGA
realm, not the PC realm.
Actually, I think Joseph got this about right. The hobbyists who
were Apple II fans in its day are now the microcontroller folks.
I would laugh, but it's not as convincing when you have to type out the
laughter...
You're right. Software bloat isn't a moral failing. It's a philosophical
failing, the idea that one has to compromise efficiency for functionality.
If you take a close look at the bottom line, when MS Windows 95/98 loads,
just in safe mode, it takes up several megs of memory. Note that none of the
specific drivers required to run the hardware have loaded. Look at GSOS. It
has about the same functionality as Windows in safe mode, yet GSOS is
considerably smaller (less than 1mb)
The bloat comes from two promary sources: 1) programmers calling
general routines to do simple, specific tasks, and 2) designing
software systems that are layered to an extraordinary degree.
The laziness or unwittingness of programmers can indeed be faulted,
but the dependence we have on deep stacks of layered functionality
is not easily remedied.
"Grid computing" is another three or four layers of abstraction on
top of the five or six of IP, which is built on two or three layers
of OS functionality. Then the GUI is another structure of three or
four layers (if any really have a clean "layered" structure".
The result is that "Hello, world!" winds up taking several million
instructions, minimum, to display on a local screen, and about a
billion to display on a remotely connected screen.
If the layers on which today's programmers were "transparent", and
they could "see all the way to the ground", they would be transfixed
by the enormity of the digital effort to do even the simplest thing.
Consider this analogy: if floors were all transparent, then almost
no one could stand to work in a skyscraper! The vertigo would be
palpable.
The hobbyists who in 1900 would build an automobile are now building
kit cars or tinkering with modifications to existing cars, or restoring
old cars. This is because the modern auto industry has achieved such
amazing efficiencies of scale that they can beat any hobbyist in *both*
cost and performance. Modern PC hardware & software has achieved
roughly the same thing.
You're correct, and the worst kind of correct at that: statistically
correct. Large businesses are more "cost efficient" because they divide
their development costs across several million sales. They achieve better
performance because they can afford to spend several million looking for
ways to improve performace. That being said, it does not exclude the
possibility of someone comming along and developing something better. Can
you say Delorian? That car's design is why cars these days are being built
with wider chassis. One of the major manufacturer's bought the guy out and
stopped production of the vehicle and put the design in a vault for a time.
Many of the good ideas used by various industries today are the designs of
someone working from home on a hobby project a decade or so ago.
Hear, hear! But it works best when you develop a world-beating
technology before trying to sell it. ;-)
There are hundreds of people _talking_ about changing the world
for every _one_ that is actually doing something about it. Save
the talking for later.
The beginning of the personal computer era was a "green field"
era--there was no "establishment" for PCs, so anything that seemed
like a good idea could be tried and have a chance.
Today's personal computing environment is quite different. The
market is near saturation, the applications are semi-standardized
(so much so that no one sees any reason to upgrade), and hardware
of amazing capabilities is as cheap as any personal computer ever
was (yes, even a C64 with a disk drive and printer is undercut by
an eMachine with a bundled printer).
You can only hope to appeal to the hobbyists, but they are quite
heterogeneous, and it's hard to imagine one project appealing to
very many of them.
Good luck and have fun, but don't go tilting at those windmills.
Don't worry. If I decide I want to "go tilting at those windmills," I'll
make sure I knock them completely over. ;-)
R.
-michael
New Applesoft BASIC interface for NadaNet networking!
Home page: http://members.aol.com/MJMahon/