Live data from Hacker News

Just give me a simple CPU and some I/O ports

jgc.org

41–50 of 56 posts

Re: Just give me a simple CPU and some I/O ports

#41

Earlier quoted context omitted.

Much of my blog is devoted to precisely this subject. (See for instance: http://www.loper-os.org/?p=16 ) I believe that the only solution to the complexity plague is a from-scratch reboot of all of computing.

I share your belief. At the same time I think it is going to be like trying to replace the automobile piston engine with something better. The amount of money and time invested in the way we do things today is going to be a very large stumbling block to overcome in order to create a clean slate.

rotary engines are pretty cool. http://www.youtube.com/watch?v=6BCgl2uumlI

each time each piston reverses direction you're losing energy in a standard piston engine.

Re: Just give me a simple CPU and some I/O ports

#42

Earlier quoted context omitted.

I share your belief. At the same time I think it is going to be like trying to replace the automobile piston engine with something better. The amount of money and time invested in the way we do things today is going to be a very large stumbling block to overcome in order to create a clean slate.

rotary engines are pretty cool. http://www.youtube.com/watch?v=6BCgl2uumlI each time each piston reverses direction you're losing energy in a standard piston engine.

For some reason my brain showed me the picture of a star piston engine when you said 'rotary', my bad :)

We call those 'Wankel' engines here.

Pretty cool stuff.

Beautful animation by the way!

Re: Just give me a simple CPU and some I/O ports

#43
post #35

I think the completely comprehensible system has always been an illusion. There's always some cutoff level below which people don't understand (or don't care to understand) the system they're working in. The old Apple 2 hackers had a great understanding of assembly, but that's because it was the top level of the system to them, the stuff they worked with daily. I doubt most of them understood the PLA that decoded the…

However, the relation between how much is there to know (increasing) and how much fits in a head (constant) is growing, which is sad, and whether it has ever been 1 seems rather unimportant to me.

The fact that the ratio continues to grow seems like a fundamental property of technology -- personally I don't find it sad. In exchange for more powerful tools, you inevitably need to accept more levels of abstraction and more underlying complexity.

Re: Just give me a simple CPU and some I/O ports

#44
post #26
post #18

Earlier quoted context omitted.

It's quite probable that x86 processors are more complex than they need to be-- at least, the instruction set is more complicated than is necessary. CISC architectures are meant to make life easier for assembly language programmers, letting you do things like load, multiply and store in a single command. In practice that hasn't been all that valuable, because programmers just use higher level languages like C when th…

> RISC has much more flexibility with regards to automatic optimization, pipelining, etc. Folks designing processors haven't believed that since before the Pentium was introduced. (I went to dinner with some of the MIPS principals right after the first Pentium tech talk. Their conclusion was that everyone would finally figure out that the RISC/CISC wars were over and they'd lost.) There are lots of things that go int…

When pentium was introduced? Yeah, it looked like RISC had lost. But that was not because it wasn't a better design, but because Intel had a lot invested in the x86 and that's the processor that was used in the PC.

Now that mobile devices are becoming as important or more important than PCs, the field has changed. Also, it's possible that RISC's parallel processing advantages will matter given the current trend toward multiple processors and multiple cores.

Re: Just give me a simple CPU and some I/O ports

#45
post #26
post #18

Earlier quoted context omitted.

It's quite probable that x86 processors are more complex than they need to be-- at least, the instruction set is more complicated than is necessary. CISC architectures are meant to make life easier for assembly language programmers, letting you do things like load, multiply and store in a single command. In practice that hasn't been all that valuable, because programmers just use higher level languages like C when th…

> RISC has much more flexibility with regards to automatic optimization, pipelining, etc. Folks designing processors haven't believed that since before the Pentium was introduced. (I went to dinner with some of the MIPS principals right after the first Pentium tech talk. Their conclusion was that everyone would finally figure out that the RISC/CISC wars were over and they'd lost.) There are lots of things that go int…

RISC won. Intel continues to ship with CISC style artifacts, but that is only because Intel has almost never removed a feature from its microprocessors. However, the actual processor implementation is designed with CPU microcode, which is a RISC architecture. Even when you think you are doing something "CISCy" in an Intel proc, it's translated to RISC behind the scene.

Re: Just give me a simple CPU and some I/O ports

#46
post #35

I think the completely comprehensible system has always been an illusion. There's always some cutoff level below which people don't understand (or don't care to understand) the system they're working in. The old Apple 2 hackers had a great understanding of assembly, but that's because it was the top level of the system to them, the stuff they worked with daily. I doubt most of them understood the PLA that decoded the…

However, the relation between how much is there to know (increasing) and how much fits in a head (constant) is growing, which is sad, and whether it has ever been 1 seems rather unimportant to me.

The ratio of things we know to things we don't know is essentially zero. Thankfully that doesn't preclude us from dreaming big and accomplishing great things.

Re: Just give me a simple CPU and some I/O ports

#47

I've been having that exact thought for quite some time now. It seems that the art of programming - or at least, the practice of it, equivalent to "proficiency" or "competency" - has shifted from fundamentals of the machine and the language's intrinsic semantics, which allowed you to actually create something anew, to spending 90-95% of the time trying to figure out someone else's API. In other words, the real skill…

There will always be a gap between what's technologically interesting and what's economically interesting. Web applications stopped being technologically interesting a while back. I've seen everything from in-browser HD-video to AJAX-powered e-mail clients before 2001. After the major technical challenges had been solved the industry kicked in and started mass-producing.

Today the mobile phone platform is sort of like the Web of 1999: a technological wild west. Fart Apps can still make you rich, while useful bluetooth apps hardly exist. If that's not adventurous enough for you, there's plenty more.

I spend most of my time on vehicle robotics for automated roads (C) and divide the rest over Arduino/AVG programming (C) and VMM hacking (C/IA32). You can be sure you won't find any "rich APIs" there. Also there's no chance it will make you rich, you need to be in the proven areas for that. (unless...)

Re: Just give me a simple CPU and some I/O ports

#49

I can no longer understand the computer I am forced to spend my days in the lonely struggle against an implacable and yet deterministic foe: another man's APIs. Having worked as an electrical engineer creating hardware, this seems strange. Obviously the computer designer had to create an API of some sort, even if they did it in transistors. Computers aren't given to us from above -- there are people creating them too…

There is a fundamental difference between a hardware "API" and a software one. See http://www.loper-os.org/?p=37

It's not a fundamental difference, it's a consequence of the fact that hardware people are at the bottom of a very big stack and have a massive financial incentive to be as solid and predictable as possible. Higher up the stack everyone prefers to use relatively cheap programmers and build stuff quickly.

The problem is not having to deal with software APIs, the problem is the sheer size of the stack and the sheer number of accumulated assumptions that are built into it. Moving more pieces into hardware might improve the stack's overall integrity and reduce bugs, but it won't do much to reduce the size.

The real issue, IMHO, is that no one wants to admit that the general reuse problem is hideously, horrifyingly difficult. The biggest problems it causes are diffuse and long term, and in the short term everyone can do things faster by hacking together their old code with someone else's 95% solution library, so that's what everyone does. Putting enough thought into each new application to really do it right tends to be hard to justify on a business level, and most programmers have neither the inclination nor the skill to do it anyway. It's so ingrained that even people who are frustrated with the way things are think that a different operating system or language would solve the problem. It wouldn't - it would only start the process again, with at best a percentage reduction in stack size and corresponding percentage increase in time to frustration. I think it boils down to the fact that code reuse is basically a 2^n problem, and the bigger and more opaque the stack gets the harder it is to cheat that 2^n.

The only potential solution I've seen is what Chuck Moore is doing with Forth chips. He's now at the point where he can design and manufacture chips that are cheap and simple in design but are very good at running Forth very quickly. Of course the tradeoffs are (perhaps necessarily) as horrifying as the reuse problem in that it demands a lot more from programmers in general, and in particular requires them to learn a radically different way of doing things than they are used to while at the same time strongly discouraging reuse at the binary and source levels. In other words, he's spent decades designing a small core language and hardware to run it, and that's really all you should be reusing (along with data transfer protocols). Needless to say, no desktop or web or server programmer (or said programmer's boss or company) is ever going to go for this unless problems with reuse become far worse than they are now. (Even then the supply of cheap programmers might grow fast enough to keep masking the problem for a long time.) Most programmers are not very good, managers like it that way, and most of the smarter programmers are nibbling around the edges or looking for a silver bullet.

In short, there are no easy solutions. If you don't like the direction software is going, think about becoming an embedded systems programmer.

Re: Just give me a simple CPU and some I/O ports

#50
Love the article and like many others here enjoy the simple. I still have the pleasure of coding in C at work and my fun work is currently writting an app for the Nintendo DS. Truly simple system.

While back I was interested in designing/constructing simple 4-bit cpu, here is one that was actually completed: http://www.vttoth.com/vicproc.htm

Post reply on HN