[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [oc] Beyond Transmeta...



> Yes I know that. As I said your computer is pretty suitable for DSP
> aplications (like filters, etc), especially if you add some floating point
> support. But latency (response time) is also important also for DSPs.
> I would estimate that your computer would make additions about 5
> times slower than normal ones. Time needed for sequential programs
> is thus too large.

That is true. I've figured latency would be an issue, that is why most 
sequential programs would need to be converted/compiled to a more network 
centric program. I do not think it would be impossible, although difficulty 
and practicality are still unknown. But one othing that is interesting, is 
that with a network centric program, latency is not much of an issue because 
things are only updated as needed because everything is persistent, 
sequential programs don't have this ability naturally they normally redo 
something even if they do not need to.

> Yes but if you have access to your own connections you must address them
> somehow, right?

Yeah, its going to be difficult. One way that I recently was thinking about 
was to have addressing as a vector of which the bits point to each other (on 
a neighbor basis),  or that each bit has a layer of bits around it that tell 
it where the instruction is, and then since the instruction is 4 bits, 
arrange it so that in the center is one bit, and the other three bits are 
neighbors of the bits that are connected. Another way to potentially do this 
is to have a 2 bit packet, so that one bit is a sort of mask that draws a 
line between bits and their connective instructions. Ah, but doing it this 
way as you can imagine starts consuming quite a bit of memory, because of 
more open space there may be a way of compressing that wasted space but that 
increases complexity, or the other thing is probably to interlace networks so 
that their connections sort of entwine in the empty spaces, there would still 
be empty space to help keep connections from crossing. All of this increases 
the complexity of the system though because something needs to be created 
that traces the connections and finds the instructions and other bits and 
then executes the instruction. I'm still thinking of ways of resolving this, 
one thing I have been thinking about is how atoms tend to connect in 
particular ways, and maybe having a system with that kind of logic, where 
instructions connect in particular ways naturally, but this is going to take 
a certain amount of thought to figure out.

> For placeing and optimizing look at OpenRisc200 project which is in a way
> similar.

Hmm, I'll check that out.

> Do you intend to have program in this or other memory? 

Maybe a combination, like how current PCs handle it, where they use virtual 
memory. A program is going to be a part of the network, but if we break 
things down into blocks/cubes where the networks pass through, blocks can be 
pulled in and out of memory as they are needed and how often they are used. 
This is not so diffrent then knowing words that you use often, but for words 
you do not remember you can use a dictionary to look them up.

> Do you think such large programs would fit into your network? If they won't
> you would have to change most of the network every cycle. That's the
> bandwidth problem I was talking about. For general applications
> particular procedures are not often used. Generally you can execute just
> a few of them simultaneusly, so your network would be mostly idle?

Well, that is an interesting situation. I would think that after a full days 
work, the system could be left to "sleep" where it would figure out its 
capacity and ability and what is used often by the user and to reconfigure 
the network between a CISC, RISC, or persistent kind of network. Persistent 
is the highest form, it is equivalent to having multiprocessor system a 
processor for everything (like I said having a network of operations for 
calculating a color of a pixel), while the lowest form is like CISC, where 
you use one processor to do everything, in betweens would be like having a 
processor do graphics and FPU operations and the main processor do other 
operations. The CISC one will not be as fast as a normal X86 kind of 
processor, but it can also decidedly do 2 CISC processors if the user 
commonly use many diffrent programs that are multithreaded in nature.. What 
might be an interesting experiment is to purposely create a network that 
works exactly like an X86/windows system, and then figure out a way to do 
network morphing to anothering kind of system (Like X86/Linux, or PPC/Mac, or 
Alpha/Linux, etc), and see if that will morph the application and then 
capture that and have that application may work on the actual system.... Kind 
of a funny thought, but it may be possible some day.

I've also been recently thinking about the self modifying part some more, and 
one thing that I was thinking about was that there would be at least 2 
seperate networks, well they are not really seperate, but where they connect 
is more of a layer between them for helping them modify each other. I think 
the idea is similar to the way the human brain works, where we have 2 sides 
of our brain, and both sides seem to have seperate personalities (one is 
creative, one is rule based), maybe having networks built like this, each 
side will alter the way the other works. Its an interesting thought in terms 
of self modification, the creative side will alter its network in many 
diffrent ways, while the other side will use what seems to work, the creative 
side will survive because it changes a lot while the other side will be 
forced to analyze its changes to decide if it should change. Something down 
those lines would be an interesting experiment. With Yin and Yang philosophy, 
you need 2 things that contradict or fight each other, for something to exist 
(explaining why humans have a strong feeling of existance), like how in 
debating whether someone is inocent or guilty, some people will say whom is 
guilty and who is innocent, some else will disagree, someone else will 
disagree and say they are all innocent, someone else will say they are all 
innocent, and yet the last person will say that they are all both guilty and 
innocent, but to think about it, with out the guilty their can be no 
innocent, with out innocents their can be no guilty, for it to exist there 
must be something that contradicts it, or is the oposite of it. Maybe that is 
why their exists the bit, 1 versus 0...

Leyland Needham