|
Parallel Array Processor Project
by markus on Aug 16, 2004 |
markus
Posts: 32 Joined: Dec 9, 2002 Last seen: Apr 30, 2013 |
||
|
There Is a complete body of knowledge relative to SIMD processing.
http://www.cse.ogi.edu/~strom/papers/cnaps.pdf
Thanks for the link.
You certainly should understand the MMX extensions to the Pentium
as a preliminary to building the kind of core you are talking about. Yes, I'm quite familiar with those. My interest, in fact, is not on the SIMD processing. It's hard, if not impossible, to build a general-purpose microprocessor based strictly on the SIMD-architecture without losing lot's of processing power. As a co-processor, they are just fine. My area of intrest is MIMD and I'm very aware, that the architecture I'm currently planning won't beat SIMD-processors or systolic arrays in their strong area. That's not a target for the project; the target is to design architecture and tools for general purpose parallel processor. The scalability is one of the key targets; no matter how many processors or GIPS you have in your desktop computer, it's not enough tomorrow ;-D
A word of caution. The application space for these machines is high
performance digital filtering [...] beating the DSP's ( and the Pentium MMX for that matter) is not easy. I'm not going to even think about it. --- Offtopic:
(neural networks have not proved commercially viable).
That's true. As a programmer, IMO the neural networks have a few critical lackness: *) The fundamental usage of NNs is transformation functions, which are too complex for _human_brains_ to be expressed in a formal language. But all these problems are still solvable with a conventional processors. *) They are not general purpose; some tasks are "neuralized" easier than others and some of the tasks are almost impossible to be executed by a general neural network processor (without any special hardware solutions). Just think, that not all tasks are easy to be expressed with multiply-accumulate-treshold -operations. *) Learning algorithms used to "program" the networks are currently capable of tune the NN for transformation functions - they can't resolve signal feedbacks in general case (there exist some special-case algorithms, e.g. for speech recognition). [I was once scetching a programming language for NNs and I studied them a lot ;-)] |
|||
|
Parallel Array Processor Project
by Unknown on Aug 16, 2004 |
Not available! | ||
|
Aloha!
markus at reaaliaika.net wrote:
My area of intrest is MIMD and I'm very aware, that the architecture I'm
Yes and no, see footnote [1].
The problems I see with building massive MIMDs on anything (cabinet or chip)
is program model and communication. And esp for the embedded/integrated thingy
you don't want to have to resort to MPI for you interprocessor communication.
AFAIK there have been some experiments done loading several tens of
PicBlaze/KCPSMs onto an FPGA and have them work together to solve big tasks.
The KCPSM is basically a programmable state-machine with a few instructions
and a very limited amount of both program storage and data ram. For your
neural network experiments, I believe that type of implementation should
suffice. Implementing a perceptron should not take too many instructions.
Ken Chapman have written a nice, five part article series on how design
decisions and implementation of the processor:
http://www.xilinx.com/xlnx/xweb/xil_tx_display.jsp?sTechX_ID=kc_emb_micro&languageID=1
Also, since you are planning to use an FPGA as platform, check out Göran
Bilskis insights on efficient processor design on a prelaid architecture (the
FPGA). These were posted about a week ago on the list (The "Why open
processors are som much slower...").
There have been many attempts at creating multi-core-designs. One of them were
BOPS, who had a scalable architecture for DSP-cores that you then could
instanciate into your ASIC. Important features were specific communication
devices that scaled in performance with the DSP-cores. Unfortunately BOPS have
died. There are some stuff on the webb still, this article for example:
http://www.elecdesign.com/Articles/Index.cfm?ArticleID=3496&pg=2
[1] Unless the HW is unable to run the Windows OS, which is the perrenial
compute hog. ;-)
More seriously, thera are some very interesting grand challenges. Look at
Vernor Vinges singularity ideas for the wild ones. But global weather
prediction, gene/bio-design (not just analysis, but engineering of DNA-based
stuff) as well as more down-to-earthy things like real-time speech recognition
and synthesis.
Fortunately, with nano-technology if some wild ideas are to go by, we should
be able to get basically as much computing power as we are going to need EVER:
http://www.aeiveos.com/~bradbury/MatrioshkaBrains/index.html
--
Med vänlig hälsning, Yours
Joachim Strömbergson - Alltid i harmonisk svängning.
VP, Research & Development
----------------------------------------------------------------------
InformAsic AB / Hugo Grauers gata 5B / SE-411 33 GÖTEBORG / Sweden
Tel: +46 31 68 54 90 Fax: +46 31 68 54 91 Mobile: +46 733 75 97 02
E-mail: joachim.strombergson at informasic.com Home: www.informasic.com
----------------------------------------------------------------------
currently planning won't beat SIMD-processors or systolic arrays in their strong area. That's not a target for the project; the target is to design architecture and tools for general purpose parallel processor. The scalability is one of the key targets; no matter how many processors or GIPS you have in your desktop computer, it's not enough tomorrow ;-D |
|||
|
Parallel Array Processor Project
by Unknown on Aug 16, 2004 |
Not available! | ||
|
Seems to me Douglas Adams was on the right path with "Deep Thought" The answer is 42 .... but what is the question ? What is the problem you are trying to solve with your parallel array ? The key seems to be to find a problem that a new technology solves. ie. what does my parallel array have to offer now that was not practical before. You might look to see if there is any work on computational density and heat distribution in chips. Parallel Processing Arrays should have the advantage of distributing heat dissipation, across the chip. You also have the advantage of localising high speed computational routing to small cells on the chip rather than routing data across the whole chip. To solve the distributed heat problem you need to look at how best to perform computational load balancing and the architecture of the parallel array best suited to implementing such a load balancing algorithm. Dilbert. Joachim Strömbergson wrote:
Fortunately, with nano-technology if some wild ideas are to go by, we
should be able to get basically as much computing power as we are
going to need EVER:
http://www.aeiveos.com/~bradbury/MatrioshkaBrains/index.html
--
http://members.optushome.com.au/jekent
|
|||
|
Parallel Array Processor Project
by markus on Aug 16, 2004 |
markus
Posts: 32 Joined: Dec 9, 2002 Last seen: Apr 30, 2013 |
||
|
markus at r... wrote:
> My area of intrest is MIMD and I'm very aware, that the
> architecture I'm currently planning won't beat SIMD-processors > or systolic arrays in their strong area. That's not a target for > the project; the target is to design architecture and tools > for general purpose parallel processor. > [...]
The problems I see with building massive MIMDs on anything (cabinet
or chip) is program model and communication. You're absolutely right here - the programming model is terrible. In the early 90's, when I was last time working on this project, I was convinced, that the difficultiness of programming makes the model unusable. And altought I now have over 10 years more experience of programming, including parallel systems, with a strong motivation for solving the thing, it's still hard and desperous mission. But, most of you are probably familiar with VHDL - that's one of the existing parallel languages and you probably know, that it's not impossible to make something usable with it, and it's even possible to make the code somewhat understandable, too. About the communication, it's a thing with which you just have to live, if you're designing massively parallel systems.
And esp for the
embedded/integrated thingy you don't want to have to resort to MPI for you interprocessor communication. Maybe not. --- [PicBlaze/KCPSM]
For your neural network experiments, I believe that type of
implementation should suffice. Implementing a perceptron should not take too many instructions. Certainly, but I'm not interested (any more / at the moment) on neural networks. They are fine in the area where they work, but as a general purpose computational model they need a lots of refinements for getting them work. The KCPSM model seemed interesting and I'll study it more.
Also, since you are planning to use an FPGA as platform,
In fact, I'm not, but I think that FPGA would be one of the most easy way to test the hardware solutions...
check out Göran Bilskis insights on efficient processor design on
a prelaid architecture (the FPGA). These were posted about a week ago on the list (The "Why open processors are som much slower..."). OK, thanks. I already readed those, when they arrived to this list, but I'll check them again. I'm also following the discussion of the 8-bit microprocessors (Z80 and 8088 compatibles). [BOPS]
There have been many attempts at creating multi-core-designs.
[...]
Unfortunately BOPS have died. There are some stuff on the
webb still, this article for example:
http://www.elecdesign.com/Articles/Index.cfm?ArticleID=3496&pg=2
All right, thanks. --- And then to the interesting part ;-)
> The scalability is one of the key targets; no matter how many
> processors or GIPS you have in your desktop computer, it's not > enough tomorrow ;-D Yes and no, see footnote [1]. [...]
[1] Unless the HW is unable to run the Windows OS, which is the
perrenial compute hog. ;-) Certainly they port Windows for forthcoming processors, too - they already ported it for embedded devices ;-)
More seriously, thera are some very interesting grand challenges.
Yes, those are some application areas for parallel computing, but I think
that we doesn't need to go that far. Each of our desktop computers
have all the time several applications running and most of them are
nowadays "threaded" - this has opened the door for SMP-computers,
which were mostly unusable (i.e. the software couldn't use the
performance) a decade ago.
Even a "single-CPU" modern desktop computers have a parallel co-
processor, the GPU, located in the graphics card - and they are
becoming more and more programmable (see http://www.gpgpu.org).
And still, there's need for increasing the processing power to make
better games, to support realtime raytracing and to support live video
effects. Even the highest performance Pentium feels slow, if you for
example make a noice reduction for your half hour video recording.
Look at Vernor Vinges singularity ideas for the wild ones. But global weather prediction, gene/bio-design (not just analysis, but engineering of DNA-based stuff) as well as more down-to-earthy things like real-time speech recognition and synthesis.
Fortunately, with nano-technology if some wild ideas are to go by,
we should be able to get basically as much computing power as
we are going to need EVER:
http://www.aeiveos.com/~bradbury/MatrioshkaBrains/index.html
Yes, here's the goal! ;-) But seriously, one can imagine computer systems like that, but how are they programmed? In which language? How are the processing cells constructed (instruction set, memories, external connections, etc)? What kind of memory bus those computers have? What kind of peripherals? |
|||
|
Parallel Array Processor Project
by nico on Aug 16, 2004 |
nico
Posts: 21 Joined: Jun 21, 2008 Last seen: May 11, 2009 |
||
|
markus at r... wrote:
> My area of intrest is MIMD and I'm very aware, that the
> architecture I'm currently planning won't beat SIMD-processors > or systolic arrays in their strong area. That's not a target for > the project; the target is to design architecture and tools > for general purpose parallel processor. > [...]
The problems I see with building massive MIMDs on anything (cabinet
or chip) is program model and communication. You're absolutely right here - the programming model is terrible. In the early 90's, when I was last time working on this project, I was convinced, that the difficultiness of programming makes the model unusable. And altought I now have over 10 years more experience of programming, including parallel systems, with a strong motivation for solving the thing, it's still hard and desperous mission. But, most of you are probably familiar with VHDL - that's one of the existing parallel languages and you probably know, that it's not impossible to make something usable with it, and it's even possible to make the code somewhat understandable, too. For a large scale small cpu array, VHDL could do a great job i beleive. [...]
Fortunately, with nano-technology if some wild ideas are to go by,
we should be able to get basically as much computing power as
we are going to need EVER:
http://www.aeiveos.com/~bradbury/MatrioshkaBrains/index.html
Yes, here's the goal! ;-) But seriously, one can imagine computer systems like that, but how are they programmed? In which language? How are the processing cells constructed (instruction set, memories, external connections, etc)? What kind of memory bus those computers have? What kind of peripherals? I think the best model is a PC cluster. Every node contain memory and is linked to the closest other cell. Then the routing algorithm could be fractal like.
_______________________________________________
http://www.opencores.org/mailman/listinfo/cores
|
|||
|
Parallel Array Processor Project
by markus on Aug 16, 2004 |
markus
Posts: 32 Joined: Dec 9, 2002 Last seen: Apr 30, 2013 |
||
|
Seems to me Douglas Adams was on the right path with "Deep
Thought" The answer is 42 .... but what is the question ? ;-D
What is the problem you are trying to solve with your parallel
array ? Hmmh, well... The objectiveness for the project are: 1) To construct a cell design, which, when connected together to form a regular pattern array, would form a general purpose parallel processor. 2) To construct programming tools (model, languages, OS) for programming those cells to co-operatively solve computational problems, like how to save your Word document to disk. I haven't ever thought this at the point of problem-solution view, so I have some difficultiness to form the objetiveness in that way. If I now think the path, which led to this construction again, I could probably try to form it like this: "The problem is to increase the speed of the general purpose processors, in a permanent (i.e. scalable) way."
The key seems to be to find a problem that a new technology solves.
ie. what does my parallel array have to offer now that was not practical before. OK, I'll try - compared to conventional processors, it tries to offer more performance, achieved with parallelism. Compared to SMP systems, it tries to offer scalability. In general, it tries to offer a cell design and programming tools for processors constructed from an array of simple processing units. This was a good question, because it sets the target performance metrics for the final design (if there ever is one) - the processor is usable, when it can beat a SMP system in performance.
You might look to see if there is any work on computational density
and heat distribution in chips. Parallel Processing Arrays should have the advantage of distributing heat dissipation, across the chip. You also have the advantage of localising high speed computational routing to small cells on the chip rather than routing data across the whole chip. The heat dissipation issue was something I haven't thought about. The high speed issue is something I have already thought about - that's the reason why I wouldn't like to use any kind of global buses inside the array.
To solve the distributed heat problem you need to look at how
best to perform computational load balancing and the architecture of the parallel array best suited to implementing such a load balancing algorithm. True, but I probably won't put a much effort for solving that at the moment. |
|||
|
Parallel Array Processor Project
by kavi on Aug 16, 2004 |
kavi
Posts: 5 Joined: Apr 14, 2004 Last seen: Feb 27, 2020 |
||
|
----- Original Message -----
From: markus at reaaliaika.net>
To: cores at opencores.org>
Sent: Monday, August 16, 2004 2:55 PM
Subject: Re: [oc] Parallel Array Processor Project
> markus at r... wrote:
> My area of intrest is MIMD and I'm very aware, that the
> architecture I'm currently planning won't beat SIMD-processors > or systolic arrays in their strong area. That's not a target for > the project; the target is to design architecture and tools > for general purpose parallel processor. It is seems you clarify your application field and your expectactions. Agree. -- I don't have strong background on processor systems of MIMD-granularity, but i will comment on the following:
But, most of you are probably familiar with VHDL - that's one of the
existing parallel languages and you probably know, that it's not impossible to make something usable with it, and it's even possible to make the code somewhat understandable, too. Well, VHDL does not adhere to any programming model! It is not a programming language, but a hardware description language, that mistake is coming up every week or so. In an HDL you just get to describe module connectivity and their internal functionalities. Of course, the VHDL notion of an event and the ability of parallel process execution (parallel in simulation time advancing) is necessary to model hardware.
[PicBlaze/KCPSM]
> For your neural network experiments, I believe that type of
> implementation should suffice. Implementing a perceptron should > not take too many instructions. I think that neural nets on hardware need some more specific programmer's model. It sounds reasonable to have custom memory organization with some data structures (as constant or non-constant coefficients) allocated in scratchpad RAM, careful design of the memory interface, and maybe a coarse-grain unit in the execution stage for the given topology of the NN. The Picoblaze solution is OK if you can't spare time, need something better verified with software tools or either way could much your performance requirements. I don't expect a specialized processor for NN emulation will map efficiently on the fine-grain FPGAs. It depends on your application characteristics, too. Nikolaos Kavvadias nkavv[at]skiathos.physics.auth.gr |
|||
|
Parallel Array Processor Project
by markus on Aug 16, 2004 |
markus
Posts: 32 Joined: Dec 9, 2002 Last seen: Apr 30, 2013 |
||
|
[Programming array with VHDL]
For a large scale small cpu array, VHDL could do a great job i
beleive. That's why I have borrowed many things from VHDL to my HLL. [MatrioshkaBrains]
> But seriously, one can imagine computer systems like that, but
> how are they programmed? In which language? How are > the processing cells constructed (instruction set, memories, > external connections, etc)? > What kind of memory bus those computers have? What kind of > peripherals? I think the best model is a PC cluster. Every node contain memory and is linked to the closest other cell. Then the routing algorithm could be fractal like. Well, my design principles are: * Every node contain a memory - at least one single 8-bit result and an instruction. * Neighborhood connection: The ways to route data to distant cells is up to the software. The normal PC clusters are often topologically stars (central control) or full-connected (each node can contact any node in the cluster). |
|||
|
Parallel Array Processor Project
by nico on Aug 16, 2004 |
nico
Posts: 21 Joined: Jun 21, 2008 Last seen: May 11, 2009 |
||
|
[Programming array with VHDL]
For a large scale small cpu array, VHDL could do a great job i
beleive. That's why I have borrowed many things from VHDL to my HLL. Why yet a new langage ?
[MatrioshkaBrains]
> But seriously, one can imagine computer systems like that, but
> how are they programmed? In which language? How are > the processing cells constructed (instruction set, memories, > external connections, etc)? > What kind of memory bus those computers have? What kind of > peripherals? I think the best model is a PC cluster. Every node contain memory and is linked to the closest other cell. Then the routing algorithm could be fractal like. Well, my design principles are: * Every node contain a memory - at least one single 8-bit result and an instruction. If it's lsome tiny cpu programmed like macro-cell of FPGA are, it must also contain all the memory code. * Neighborhood connection: The ways to route data to distant cells is up to the software. So local node decide the route to an other cell. That's not the TCP/IP moto :/ The local node must be aware of the topology of the local connection. It could be really hard to make a fast routing. For fast routing, i have always seen a ring (hardwared or logical) or a switch :).
The normal PC clusters are often topologically stars (central control) or
http://aggregate.org/KLAT2/ describe an other topology much more efficient
and scalable.
full-connected (each node can contact any node in the cluster).
_______________________________________________
http://www.opencores.org/mailman/listinfo/cores
|
|||
|
Parallel Array Processor Project
by markus on Aug 16, 2004 |
markus
Posts: 32 Joined: Dec 9, 2002 Last seen: Apr 30, 2013 |
||
|
> > the project; the target is to design architecture
> > and tools for general purpose parallel processor. It is seems you clarify your application field and your expectactions. Agree. Well, I have made some of these clarifications in my web pages, but I didn't want to "spam" them to this mailing list, too :-) Surely, the project is living and I probably need to refine the targets and designs over the time.
> But, most of you are probably familiar with VHDL - that's one
> of the existing parallel languages and you probably know, [...] Well, VHDL does not adhere to any programming model! It is not a programming language, As you can see here, I didn't say, that VHDL is a _programming_ language. It's, indeed, a parallel language in the way, that it describes the relations of concurrent events. I would use it as it is, if it would contain the structures needed for general purpose programming.
...but a hardware description language, that mistake is
coming up every week or so. In an HDL you just get to describe module connectivity and their internal functionalities. Of course, the VHDL notion of an event and the ability of parallel process execution (parallel in simulation time advancing) is necessary to model hardware. Yes, true and the same things are IMO necessary for a parallel programming languages, too. There's not much of those existing. The largest group of the languages used for programming parallel systems are conventional languages (C, Fortran, Pascal) with parallel "add-ons" (few instructions for synchronizing events). Mostly they are based on the message passing interface. The second largest group allows parallel execution, being still close to conventional programming languages, for example Make, LISP, Prolog and Haskell. LISP contains lot's of programming constructions, which are not possible to be executed in parallel; for example the variable model, condition checking block ("cond") and loop constructions (these can be parallelized, if you have a compiler intelligent enough - but, if you have a very intelligent compiler, every language would be parallel). Then there's a little amount of languages, which are aimed for parallel processing, for example NESL. |
|||
|
Parallel Array Processor Project
by markus on Aug 16, 2004 |
markus
Posts: 32 Joined: Dec 9, 2002 Last seen: Apr 30, 2013 |
||
|
> That's why I have borrowed many things from VHDL to my HLL.
> Why yet a new langage ? There's not many programming languages, which support low-level, fine- grained parallelism. Many of them are hard to be used for general purpose programming (e.g. APL) or they are based on sequential constructions (LISP, Prolog). The most usable programming languages are sequential (C, Pascal and alikes). [MatrioshkaBrains]
> I think the best model is a PC cluster. Every node contain
> memory > and is linked to the closest other cell. Then the routing > algorithm could be fractal like. > > Well, my design principles are: > > * Every node contain a memory - at least one single 8-bit > result and an instruction. If it's lsome tiny cpu programmed like macro-cell of FPGA are, it must also contain all the memory code. The array itself contains the code - a single cell contains only the instruction it will execute, when fired.
> * Neighborhood connection: The ways to route data to distant
> cells is up to the software. So local node decide the route to an other cell. Yes.
That's not the TCP/IP moto :/ The local node must be aware
of the topology of the local connection. Well, the local node need only to move data from it's input to it's result. With the software you construct more complex routing.
It could be really hard to make a fast routing.
True. That's why I have thought of having hardware accelerators for special purposes, like long distance data transfers. But hardware acceleration solutions are not scalable and thus they can be applied only for specific size of the array. That's why the fundamental model doesn't contain them (they are used only for HW implementations). For real world implementation, I have thought of having a hierarchial structure of the array. That means, that at the bottom, there's a processor core executing the cell instructions. They form a larger unit, and connecting these larger units you form even larger units. But I have somewhat covered those issues on my web site.
> The normal PC clusters are often topologically stars (central
http://aggregate.org/KLAT2/ describe an other topology much more
efficient and scalable.
> control) or > full-connected (each node can contact any node in the > cluster). Well, yes, that's one possible hardware topology. In my design I'm still quite sceptic to use any other than neighborhood connections, for the reasons I described above. |
|||
|
Parallel Array Processor Project
by nico on Aug 16, 2004 |
nico
Posts: 21 Joined: Jun 21, 2008 Last seen: May 11, 2009 |
||
|
i just read quicly your wek site.
i read : "How about running redesigned 80486 with 2.8GHz clock and having one hundred of those serving your applications? " Be carefull !! A 468 with today technology should run about 200/400 Mhz even less ! What make the difference between P4 and 486 is 20 (and now 40) pipestages. The 122 Millions transistor chip of ATI (x800) run around 350 Mhz.
> That's why I have borrowed many things from VHDL to my HLL.
> Why yet a new langage ? There's not many programming languages, which support low-level, fine- grained parallelism. Many of them are hard to be used for general purpose programming (e.g. APL) or they are based on sequential constructions (LISP, Prolog). The most usable programming languages are sequential (C, Pascal and alikes). I have heard about C + extention to use the paradigm of uniform memory adressing.
[MatrioshkaBrains]
> I think the best model is a PC cluster. Every node contain
> memory > and is linked to the closest other cell. Then the routing > algorithm could be fractal like. > > Well, my design principles are: > > * Every node contain a memory - at least one single 8-bit > result and an instruction. If it's lsome tiny cpu programmed like macro-cell of FPGA are, it must also contain all the memory code. The array itself contains the code - a single cell contains only the instruction it will execute, when fired. So you will need a very very fast network to provide instruction to each cell:/
> * Neighborhood connection: The ways to route data to distant
> cells is up to the software. So local node decide the route to an other cell. Yes.
That's not the TCP/IP moto :/ The local node must be aware
of the topology of the local connection. Well, the local node need only to move data from it's input to it's result. With the software you construct more complex routing.
It could be really hard to make a fast routing.
True. That's why I have thought of having hardware accelerators for special purposes, like long distance data transfers. But hardware acceleration solutions are not scalable and thus they can be applied only for specific size of the array. That's why the fundamental model doesn't contain them (they are used only for HW implementations). For real world implementation, I have thought of having a hierarchial structure of the array. That means, that at the bottom, there's a processor core executing the cell instructions. They form a larger unit, and connecting these larger units you form even larger units. The problem are the resulting bandwith could be low.
But I have somewhat covered those issues on my web site.
i should read it better :)
> The normal PC clusters are often topologically stars (central
http://aggregate.org/KLAT2/ describe an other topology much more
efficient and scalable.
> control) or > full-connected (each node can contact any node in the > cluster). Well, yes, that's one possible hardware topology. In my design I'm still quite sceptic to use any other than neighborhood connections, for the reasons I described above. I beleive you will have the same problem than place & route tools for ASIC/FPGA : some time some data should be provide to hundred of cell and that could consume a lot of cell just for routing. Some data replication/modification propagation model should be used :) nicO
_______________________________________________
http://www.opencores.org/mailman/listinfo/cores
|
|||
|
Parallel Array Processor Project
by markus on Aug 16, 2004 |
markus
Posts: 32 Joined: Dec 9, 2002 Last seen: Apr 30, 2013 |
||
|
i read : "How about running redesigned 80486 with 2.8GHz clock
and having one hundred of those serving your applications? " Be carefull !! A 468 with today technology should run about 200/400 Mhz even less ! What make the difference between P4 and 486 is 20 (and now 40) pipestages. That's why the word "redesigned" ;-) As we all know, the main reasons for the higher processor clock frequencies are new faster transistors and increased pipelines. But a simple processor core should be able to be clocked with higher frequency than a 40-stage pipelined P4. And, if the cell data width is kept in 8-bits, it should be faster than it's 32/64-bit cousins.
The 122 Millions transistor chip of ATI (x800) run around 350 Mhz.
Yes, if the data paths inside the chip are long, you can't get high clock frequencies. [programming languages]
I have heard about C + extention to use the paradigm of uniform
memory adressing. Yes, they do that too. [cell arrays]
> The array itself contains the code - a single cell contains
> only the instruction it will execute, when fired. So you will need a very very fast network to provide instruction to each cell:/ I didn't quite follow this... Yes and no I need fast connections. The cells have an internal memory location to store the instruction, which is executed. During execution, it's not fetched from anywhere. My virtual memory plans requires a huge bandwidth (or let's say, that bandwidth would help a lot), when the cell number increases - but when there's enough cells, it's not needed anymore. And, meantime you can have many different virtual memory hierarchies to overcome the bandwidth problem. All in all, virtual memory requires as much bandwidth as in conventional processors, not more, not less.
I beleive you will have the same problem than place & route
tools for ASIC/FPGA : some time some data should be provide to hundred of cell and that could consume a lot of cell just for routing. Exactly! The basic model is not optimal for SIMD-style processing, because data propagation reserves numbers of cells and it's not propagated "immediately" (but it will grantly flow inside the array). The basic model is better suited for pipelined processing (vector programming).
Some data replication/modification propagation
model should be used :) If you want to save cells (as we probably want), yes. If you have enough of them (in the future), why bother? ;-) |
|||
|
Parallel Array Processor Project
by Unknown on Aug 16, 2004 |
Not available! | ||
|
Aloha!
(Going extremely off charter for the list here... ;-)
Quoting markus at reaaliaika.net:
Fortunately, if Vernor Vinge is anybody to trust, by then the singularity have
happened and we feeble humans have been replaced by the ancestors to the
Matrioshka brains long ago.
In other words: A Matrioshka brain programs itself, and since it have all the
resources (energy and material) of a solar system it can probably manufacture
and use any peripherial it decides it needs. Peripherials designed and
manufactured from atomic level and up.
... And I guess it might use Windows for fun somewhere too, weird creatures they
sure are indeed these Matrioshka brains...
--
Med vänlig hälsning, Yours
Joachim Strömbergson - Alltid i harmonisk svängning.
VP, Research & Development
----------------------------------------------------------------------
InformAsic AB / Hugo Grauers gata 5B / SE-411 33 GÖTEBORG / Sweden
Tel: +46 31 68 54 90 Fax: +46 31 68 54 91 Mobile: +46 733 75 97 02
E-mail: joachim.strombergson at informasic.com Home: www.informasic.com
----------------------------------------------------------------------
Yes, here's the goal! ;-) But seriously, one can imagine computer systems like that, but how are they programmed? In which language? How are the processing cells constructed (instruction set, memories, external connections, etc)? What kind of memory bus those computers have? What kind of peripherals? |
|||
|
Parallel Array Processor Project
by markus on Aug 17, 2004 |
markus
Posts: 32 Joined: Dec 9, 2002 Last seen: Apr 30, 2013 |
||
|
Joachim:
(Going extremely off charter for the list here... ;-)
Well, it's just fun sometimes ;-) But I have not any additions to
the "Matrioshka Brains" - it's simply the computer I would like to have at
my desk.
---
Me: "But a simple processor core should be able to be clocked with
higher frequency than a 40-stage pipelined P4. And, if the cell data
width is kept in 8-bits, it should be faster than it's 32/64-bit cousins."
I of course meant, that the clock frequency of 8-bit processor should be
higher than it's 32/64-bit counterparts (because of shorter propagation
paths inside the processor). With the same frequency, wider processors
are usually faster.
---
Nico: "I have heard about C + extention to use the paradigm of uniform
memory adressing."
Have anyone programmed DSPs with C (or other higher level language)?
In my other project, a DSP-based guitar effect box, I'm programming
Motorola DSP56303. It's very hard to try to express variable allocation
from different kinds of memories (internal/external, X/Y/P/L) and it's very
hard to write a good C compiler for these. And trying to write an OS:
very unpleasant job, indeed.
That's why I changed back to the assembler in that project... :-)
---
PicoBlaze/KCPSM: I've read the article sent by Joachim. Yes, I've
thinking of constructing the array from the processors something like
these.
There were one idea I haven't even think about - constructing a stack-
based PSM. The author has rejected this because it's not very
straightforward to program, but that doesn't matter in this project.
The compiler could be easily modified to output reverse polish program
for the cell. In fact, it's easier to do this than make the compiler to
output programs for register-based PSMs.
I have tried to say in my web pages, that the compiler can be
programmed to output almost any kind of code for cells - the cell can
have a fixed instruction set or it can be microprogrammamble (i.e.
compiler outputs code to directly access the internal muxes). Not all
instructions need to be hard-coded for the cell; microprogrammable cell
can be programmed to perform more complex operations, like
multiplication.
The compiler can utilize the cells even more - it can collect parts of the
software (for example, short equations, iterative loops) and convert
those to be executed in one cell.
The stack-based PSM would have a very dense instruction set and it
would be versatile with small efforts. Certainly I have think about this
more closely.
|
|||




