OpenCores
First Prev 3/5 Next Last
Parallel Array Processor Project
by Unknown on Aug 17, 2004
Not available!
Aloha! markus at reaaliaika.net wrote:
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.


Yes I have. I would say that quite a lot (most?) DSP programming is done in C,
albeit with more or less lots of pragmas and calls to (inlined) library
functions sprinkled whithin the code. DSP codes are much more regular with the
bulk of the execution located in specific kernels. The kernels however might
be written in optimized assembler for the specific architecture.

Programming DSPs can be quite a challenge, both due to non-orthogonal
instruction sets and (for example TIs 6000 series) VLIW and multiple core
architectures.

TI, AMD, AD etc spends lots of money developing good compilers for their
architectures.

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.


Stack based cores for embedded multiprocessor applications are a very fine
idea. There have been some work done on this, but I have few references for
you. One thing to consider is how to implement/include the communication
semantics. You could do this by adding a communication co-processor that
extends the instruction set with port semantics. Doing this pushes/exposes the
syncronization to the user and removes lots of burden for the HW implementation.

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.


You mean you have a pcode generator? ;-)

The stack-based PSM would have a very dense instruction set and it
would be versatile with small efforts.
Yep! -- 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 ----------------------------------------------------------------------
Parallel Array Processor Project
by nico on Aug 17, 2004
nico
Posts: 21
Joined: Jun 21, 2008
Last seen: May 11, 2009

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.
If you look at stack based cpu. You could maybe look at forth chip. I have heard about "F40" or somethink linke that. It's a self timed assynchronous chip. It was running at a 2 ns cycle on a 0.5 µm technology (but need 4 cycles for an add). It count around ~1000 transistors designed by hand. It was made with a french public lab like Tima or INRIA but i don't remember precisly. Maybe that could be a nice starting point if you know how to programm such array :) I find this about FORTH cpu but is not the projet i had speak about : http://pet.dhs.org/~ecl/theproject/theproject.html and this one : http://www.jwdt.com/~paysan/b16.html
Parallel Array Processor Project
by nico on Aug 17, 2004
nico
Posts: 21
Joined: Jun 21, 2008
Last seen: May 11, 2009
i found the forth chip :) http://www.ultratechnology.com/f21.html
Parallel Array Processor Project
by markus on Aug 17, 2004
markus
Posts: 32
Joined: Dec 9, 2002
Last seen: Apr 30, 2013
i found the forth chip :) http://www.ultratechnology.com/f21.html


Thanks! I already took a quick look. The F21 could be striped down
more, when using in the array. There's no need for subroutines, jumps
and conditionals are enough. Thus, there's no need for PC stack, either.
The data stack could be decreased, too.

What increases the complexity, is the neighborhood synchronization - it
could be HW or SW based, which ever seems to be better. I would
prefer software-based, because:

* You would implement only that synchronization mode, which you're
using in the cell (with HW implementation, you'd need to implement all
modes to all cells)

* It could give you possibility to use very complex synchronizations.

But I'll look it closer and make some scetchs.


Parallel Array Processor Project
by markus on Aug 17, 2004
markus
Posts: 32
Joined: Dec 9, 2002
Last seen: Apr 30, 2013
[Forth Chip]
It was running at a 2 ns cycle on a 0.5 µm technology
(but need 4 cycles for an add).


The speed of the single operations is not a problem. If my current
thoughts are right, the parallelism easily overcomes that in the average
cases.

It count around ~1000 transistors designed by hand.


Sounds faschinating!


Parallel Array Processor Project
by markus on Aug 17, 2004
markus
Posts: 32
Joined: Dec 9, 2002
Last seen: Apr 30, 2013
[Stack-based cells]
One thing to consider is how to implement/include the
communication semantics. You could do this by adding a
communication co-processor that extends the instruction
set with port semantics. Doing this pushes/exposes the
syncronization to the user and removes lots of burden for the HW
implementation.


I have already been comparing HW-based and SW-based
synchronization models in my head. The SW-based is more fascinating
for me, because I'm much more a programmer than a HW designer and
because it's relatively easy to include that to the assembler/HLL
compiler.

> 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.


You mean you have a pcode generator? ;-)
Well, I didn't quite follow this... Most parsers/compilers (including most of my compiler constructions and the current PM HLL compiler) convert the mixed prefix/infix notation (function calls, infix operators) to a postfix, stack-based code. Then, for conventional processors, a register allocation is done and the compiled code is emitted. Furthermore, most of the virtual machines (Java bytecode VM, Python VM) are stack-based, because of the easiness of the implementation of both VM and the compiler for it. --- [DSPs and C and uniform memory addresssing/accessing paradigm]
> Have anyone programmed DSPs with C (or other higher level
> language)?

[...]
Yes I have. I would say that quite a lot (most?) DSP programming is
done in C, albeit with more or less lots of pragmas and calls to
(inlined) library functions sprinkled whithin the code.


I know - what a mess :-( But, the assembler programming is much
harder for larger applications than programming tweaked C code... :-/

Programming DSPs can be quite a challenge, both due to
non-orthogonal instruction sets and (for example TIs 6000
series) VLIW and multiple core architectures.


You said it :-)

TI, AMD, AD etc spends lots of money developing good compilers
for their architectures.
Yes, and the results are quite good, altought the language itself does everything to make it harder...
Parallel Array Processor Project
by Unknown on Aug 17, 2004
Not available!
Aloha! nico at seul.org wrote:
If you look at stack based cpu. You could maybe look at forth chip. I have
heard about "F40" or somethink linke that. It's a self timed assynchronous
chip. It was running at a 2 ns cycle on a 0.5 µm technology (but need 4
cycles for an add). It count around ~1000 transistors designed by hand. It
was made with a french public lab like Tima or INRIA but i don't remember
precisly.
There has been a previous thread about stack processors on OC. These links were mentioned in that thread: (Good list of basically all known chips and cores) http://www.ultratechnology.com/chips.htm JOP - The Java Optimized Processor; a stack architecture http://www.jopdesign.com/ And it's hard to talk about stack processors without mentioning Koopmans seminal book on the subject - "Stack Computers: the new wave": http://www.ece.cmu.edu/~koopman/stack_computers/index.html Finally Chuck Moore is the old man to know about when it comes to stack processors: http://www.colorforth.com/ -- 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 ----------------------------------------------------------------------
Parallel Array Processor Project
by Unknown on Aug 17, 2004
Not available!
Aloha! markus at reaaliaika.net wrote:
Thanks! I already took a quick look. The F21 could be striped down
more, when using in the array. There's no need for subroutines, jumps
and conditionals are enough. Thus, there's no need for PC stack, either.
The data stack could be decreased, too.


Remember to strip you compiler if you kick out subroutines. They really don't
cost that much in stack machines.

What increases the complexity, is the neighborhood synchronization - it
could be HW or SW based, which ever seems to be better. I would
prefer software-based, because:

* You would implement only that synchronization mode, which you're
using in the cell (with HW implementation, you'd need to implement all
modes to all cells)

* It could give you possibility to use very complex synchronizations.
Did you see my comments on the PORT semantics for stack machines? What you probably want are three primitives: (1) An IN port directive. Read from a shared memory via the port system. The address could be implicitlt taken as the value on TOP on the data stack. (2) An OUT port directive. Write to a shared memory via the port system. The address and value could be implicitly taken as TOP and TOP+1 on the data stack. (3) An atomic test and set ("TST" perhaps), a semaphore. Either a binary or multi value semaphore where the set value is TOP. The HW implementation for (1) and (2) would need to consider write scheduling and/or memory segmentation (dedicated write areas per PE), the latter would directly affect the programming model. (3) can be quite simply implemented by restricting the area where TST can be performed. I.e. they are located in a separate area from the shared memory. -- 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 ----------------------------------------------------------------------
Parallel Array Processor Project
by Unknown on Aug 17, 2004
Not available!
Aloha! markus at reaaliaika.net wrote:
You mean you have a pcode generator? ;-)


Well, I didn't quite follow this... Most parsers/compilers (including most
of my compiler constructions and the current PM HLL compiler) convert
the mixed prefix/infix notation (function calls, infix operators) to a
postfix, stack-based code. Then, for conventional processors, a register
allocation is done and the compiled code is emitted.
Which is called p-code after the UCSD p-code machine. Used heavily in the early compiler research and was related to Pascal. See: http://en.wikipedia.org/wiki/P-Code_machine http://en.wikipedia.org/wiki/Pascal_programming_language http://www.fact-index.com/p/p_/p_code_machine.html Normally though you use the p-code to build trace trees and then optimize on them, perform register allocation, instruction selection, new optimization pass etc etc before generating code for the non-stack-processor. Unless the target is a stack machine like Python or Java byte code etc.
I know - what a mess :-( But, the assembler programming is much
harder for larger applications than programming tweaked C code... :-/
That's why people buy a faster DSP instead and take the overhead [1], esp for first, second product releases. Converting code to assembler and other optimizations are saved for nmanufacturing cost reduction after the product have successfully been released onto the market. [1] And if you look at TI 6000, AD TigerSHARC etc, most programmers have a hard time beating the performance reached by the compilers by hand writing asssembler. Few people are able to easily grok multiple executin, instruction pairing. This is especially true if the architecture is non-orthogonal which introduces lots of rules for instruction scheduling, register allocation, instruction pairing, pipeline allocation etc etc. -- 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 ----------------------------------------------------------------------
Parallel Array Processor Project
by markus on Aug 17, 2004
markus
Posts: 32
Joined: Dec 9, 2002
Last seen: Apr 30, 2013
[P-code generator]
>You mean you have a pcode generator? ;-)

>
> Well, I didn't quite follow this... Most parsers/compilers [...]
> convert the mixed prefix/infix notation (function calls, infix
> operators) to a postfix, stack-based code.


Which is called p-code after the UCSD p-code machine.

I readed the description, and in broader sense, yes, maybe, I have a
some kind of P-code generator - or Forth-code generator.

Hmmh, I have hard times to trying to classify the current compiler
backend. The front-end is definitely a stack-based, recursive system.
It's derived from compiler for conventional processors, but because the
array has no stacks or procedure calls, the resulting code is not stack-
based. But because of the inheritance, it's easily modified to do so.

Normally though you use the p-code to build trace trees and then
optimize on them [...] for the non-stack-processor.


Yes (altought I normally use the term "evaluation trees").

[Striping a Forth processor]
Remember to strip you compiler if you kick out subroutines.
They really don't cost that much in stack machines.


What would the cell call for? I can't see at the moment much use of
subroutines, because the stack engine is only used to implement cell
instructions (which would otherwise require HW). The array itself doesn't
have subroutines.

For example, one cell could add the values from north and south cells.
The code for the cell would be:

push north
push south
add
out

..where: "out" "result = pop()"

> What increases the complexity, is the neighborhood
> synchronization - it could be HW or SW based [...]


Did you see my comments on the PORT semantics for stack machines? Yes, I saw and I'm familiar with the concept (Forth uses somewhat similar thing for memory addressing). I have a something like that in my simple single-bus cell processor design: http://reaaliaika.net/showarea.php/procmem/schw_connection Some more words about the sync'ing with software based solutions: http://reaaliaika.net/showarea.php/procmem/schw_sync [DSP programming]
[1] And if you look at TI 6000, AD TigerSHARC etc, most programmers
have a hard time beating the performance reached by the
compilers by hand writing asssembler.


Yes, and speak about the difficultiness of writing the compiler. For that
DSP56303, I realized, that I have to have a quite complete processor
model inside an assembler compiler to produce good, pipeline stall-less
code.


Parallel Array Processor Project
by markus on Aug 22, 2004
markus
Posts: 32
Joined: Dec 9, 2002
Last seen: Apr 30, 2013
Amongst a huge restructuration, there's now a small PDF file, which tries to collect the basic things of the project: http://reaaliaika.net/download/procmem.000.sxw.pdf
Parallel Array Processor Project
by Unknown on Aug 23, 2004
Not available!
At 15:54 2004-08-22 +0200, markus at reaaliaika.net wrote:
Amongst a huge restructuration, there's now a small PDF file, which tries to collect the basic things of the project: http://reaaliaika.net/download/procmem.000.sxw.pdf


Hi Markus,

I've followed this thread for a while. Your ideas sound interesting
I think, but note that I'm not any kind of expert on processor
architecture.

I am however a hardware developer, and as such, one thing strikes me
when I read about your ideas; Isn't it so that your architecture
actually IS the architecture of an FPGA? Or very much like it anyway,
might be that the FPGA architectures have even simpler processing cells
than the ones you have in mind? But they do have an instruction register
(the LUT programming), a result register (output flip-flops), and read
connections to their neighbours (the routing, even though this is more
complicated in the FPGA case).

You then have to excuse my ignorance because I have not had time to
in detail try to understand your ideas for programming this processor,
but from what I've read in this thread I got the impression that you're
thinking in the way of a programming language with lots of parallellism.
Sounds quite a lot like hardware design, on RTL or somewhat higher level,
to me... The RTL code can be seen as a "program" for an FPGA, the compiler
then being the synthesis and place-and-route tools.

Interesting also that you call it a "processing memory", this name also
fits quite good for an (SRAM-based) FPGA... Which is basically a memory
with some processing facilities added (the people developing the FPGAs
might not agree completely with this description... ;-)

Do you think that this interpretation of your ideas makes any sense?
Maybe the fact that the processing cells you're thinking of are much
more advanced than the current FPGA macrocells really adds a new
dimension with regards to how the processor is programmed and so on?

Anyway, if my comparison stands, you probably can take some inspiration
from hardware design and the associated tools. And maybe also the other
way around in the future...

(Take a look at e.g. "handel-C" from Celoxica, which is C with extensions
for parallellism. They have a compiler for it that takes it all the way
to hardware. They claim it is a very efficient way to design hardware. I
don't know about that though... :)

Good luck with your project, best regards
Gunnar Dahlgren
ASIC designer @ Axis Communications AB, Sweden

_______________________________________________ http://www.opencores.org/mailman/listinfo/cores



Parallel Array Processor Project
by markus on Aug 23, 2004
markus
Posts: 32
Joined: Dec 9, 2002
Last seen: Apr 30, 2013
I am however a hardware developer, and as such, one thing strikes
me when I read about your ideas; Isn't it so that your architecture
actually IS the architecture of an FPGA? Or very much like it
anyway [...]


You're absolutely right here! Unconsciously I have thought that the PM
and FPGA have many things in common (for example, I have studied
using the VHDL as a programming language and I have borrowed many
ideas found from FPGAs to the possible physical implementations), but I
haven't thought this consciously.

Now I'm doing this first time, when writing this, so you probably
understand some "fuzziness" in the thougts... :-)

[...] might be that the FPGA architectures have even
simpler processing cells than the ones you have in mind?


That's true. What are the differences of the FPGA cell and the PM cell?

In ground level, the program written for PM could be compiled to the
FPGA, as well as for conventional processor. That's nothing new, I think,
every program can be implemented either with hardware or with
software or with a some kind of combination of both.

---
I could quickly think these differences:

* The PM design should allow you to write programs for writing programs
(e.g. compilers, text editors and so on). I'm not sure, if you could write
a VHDL/FPGA compiler to FPGA?

BTW, one test for analyzing the completeness of the programming
languages is, that is it possible to write a program to output that
program with it? I don't know, if the VHDL passes that test?

* Furthermore, PM design should allow a program to "load" another
program inside the array. If I recall correctly, there has been some
attempts for creating "self-reconfigurable" FPGAs, too? But because of
the application area of the FPGA, I think that those oddities are not
very popular...?

* The PM chip should be able to execute larger programs that can fit
inside of the chip, by using a virtual memory. Normally, you don't have
this kind of possibilities in the FPGA, am I right?

I think that the ground reason for this is, that the PM cell is
synchronous. You can stop it for processing, read the state of it, store
it and later, restore the state from the memory and continue processing.

---

But PM and FPGA share many things, like inherent parallelism and cellular
structure. Some people could say, that PM is one implementation of so
called reconfigurable computing - I'd say, that it's just a massively
parallel processor.

But they do have an instruction register
(the LUT programming), a result register (output flip-flops), and
read connections to their neighbours (the routing, even though
this is more complicated in the FPGA case).


I borrowed the idea of the "transmission gateway" (accessing distant
parts of the array) from the FPGA world :-)

but from what I've read in this thread I got the impression that
you're thinking in the way of a programming language with lots of
parallellism.


Yes, you're right here. My approach comes from the programming world
and I have just basic knowledge (which is not too much) of the
hardware desing world.

Sounds quite a lot like hardware design, on RTL or somewhat higher
level, to me... The RTL code can be seen as a "program" for an
FPGA, the compiler then being the synthesis and place-and-route
tools.


Yes, and I think, that the hardware designers would easier understand
the programming paradigms of the PM than regular software designers.
And, I have borrowed the idea of "cell mapper" from the FPGA world -
that is, the PM needs a program for mapping the virtual assembler code
to physical cells just like VHDL does.

Interesting also that you call it a "processing memory",
this name also fits quite good for an (SRAM-based) FPGA...
Which is basically a memory with some processing facilities
added (the people developing the FPGAs
might not agree completely with this description... ;-)


:-) But yes, PM and SRAM-based FPGAs are close to each other. And
yes, PIM (Processing In Memory) architectures are close to these, too.

The name comes to very obvious thing: I was designing a memory,
which processes the data by itself.

Do you think that this interpretation of your ideas makes any
sense?


Perfectly!

Maybe the fact that the processing cells you're thinking of are
much more advanced than the current FPGA macrocells really
adds a new dimension with regards to how the processor is
programmed and so on?


Surely, the cells are more complex than the cells in the FPGA. About the
new dimension of processor programming, I'm not sure - my primary goal
is to get the PM to be programmable, without any extra pain (which it is
at the moment).

Anyway, if my comparison stands, you probably can take some
inspiration from hardware design and the associated tools.


I'll do that.

(Take a look at e.g. "handel-C" from Celoxica, which is C
with extensions for parallellism. They have a compiler for it
that takes it all the way to hardware. They claim it is a
very efficient way to design hardware. I don't know about
that though... :)


I'll do that, altought at the moment I started the design of the HLL once
again from the grounds and decided to leave the world of the existing
languages behind... :-)


Parallel Array Processor Project
by nico on Aug 23, 2004
nico
Posts: 21
Joined: Jun 21, 2008
Last seen: May 11, 2009
I am however a hardware developer, and as such, one thing strikes
me when I read about your ideas; Isn't it so that your architecture
actually IS the architecture of an FPGA? Or very much like it
anyway [...]


You're absolutely right here! Unconsciously I have thought that the PM
and FPGA have many things in common (for example, I have studied
using the VHDL as a programming language and I have borrowed many
ideas found from FPGAs to the possible physical implementations), but I
haven't thought this consciously.

Now I'm doing this first time, when writing this, so you probably
understand some "fuzziness" in the thougts... :-)

[...] might be that the FPGA architectures have even
simpler processing cells than the ones you have in mind?


That's true. What are the differences of the FPGA cell and the PM cell?

In ground level, the program written for PM could be compiled to the
FPGA, as well as for conventional processor. That's nothing new, I think,
every program can be implemented either with hardware or with
software or with a some kind of combination of both.

---
I could quickly think these differences:

* The PM design should allow you to write programs for writing programs
(e.g. compilers, text editors and so on). I'm not sure, if you could write
a VHDL/FPGA compiler to FPGA?


It's theorically possible. But the design will be udge. But it's much
easier, to put a LEON or an openrisc in the FPGA and then used C ;D

BTW, one test for analyzing the completeness of the programming
languages is, that is it possible to write a program to output that
program with it? I don't know, if the VHDL passes that test?


That will be hard but i don't see why this could impossible.


* Furthermore, PM design should allow a program to "load" another
program inside the array. If I recall correctly, there has been some
attempts for creating "self-reconfigurable" FPGAs, too? But because of
the application area of the FPGA, I think that those oddities are not
very popular...?


Most FPGA are SRAM based. So you "just" need the access to the SRAM buses.
A compagny have sell a fpga with high-bandwith configuration bus, much
faster than the usual serial link. It could also be reprogrammed partialy.

This is not common because nobody find an application for it.


* The PM chip should be able to execute larger programs that can fit
inside of the chip, by using a virtual memory. Normally, you don't have
this kind of possibilities in the FPGA, am I right?


virtual memory are juste a means to "remap" real memory. It don't think
it's the easiest way to spread a lot of tiny memory bloc.

You could always programm the use of an external memory chip.


I think that the ground reason for this is, that the PM cell is
synchronous. You can stop it for processing, read the state of it, store
it and later, restore the state from the memory and continue processing.


From the point of view of the system, an FPGA cell could be much more

synchronous than a unpredictive cpu.

Beside that, i don't think it possible for the humain brain to track the
state of each individual cpu in a 128 cpus array.

---

But PM and FPGA share many things, like inherent parallelism and cellular
structure. Some people could say, that PM is one implementation of so
called reconfigurable computing - I'd say, that it's just a massively
parallel processor.

But they do have an instruction register
(the LUT programming), a result register (output flip-flops), and
read connections to their neighbours (the routing, even though
this is more complicated in the FPGA case).


I borrowed the idea of the "transmission gateway" (accessing distant
parts of the array) from the FPGA world :-)


You could also look at the concept of "LAN on chip". This use message
passing instead of buses. Message passing could be pipeline very easly.
Buses could not, because of the semantic of the "read".

but from what I've read in this thread I got the impression that
you're thinking in the way of a programming language with lots of
parallellism.


Yes, you're right here. My approach comes from the programming world
and I have just basic knowledge (which is not too much) of the
hardware desing world.

Sounds quite a lot like hardware design, on RTL or somewhat higher
level, to me... The RTL code can be seen as a "program" for an
FPGA, the compiler then being the synthesis and place-and-route
tools.


Yes, and I think, that the hardware designers would easier understand
the programming paradigms of the PM than regular software designers.
And, I have borrowed the idea of "cell mapper" from the FPGA world -
that is, the PM needs a program for mapping the virtual assembler code
to physical cells just like VHDL does.

I imagine that a compiled programme is a tiny code that is loaded in the
program memory of each cpu. To look like a "usual" cpu, it must be easly
change. But it will be a hard task from the HW point of view.


Interesting also that you call it a "processing memory",
this name also fits quite good for an (SRAM-based) FPGA...
Which is basically a memory with some processing facilities
added (the people developing the FPGAs
might not agree completely with this description... ;-)


:-) But yes, PM and SRAM-based FPGAs are close to each other. And
yes, PIM (Processing In Memory) architectures are close to these, too.

The name comes to very obvious thing: I was designing a memory,
which processes the data by itself.

Do you think that this interpretation of your ideas makes any
sense?


Perfectly!

Maybe the fact that the processing cells you're thinking of are
much more advanced than the current FPGA macrocells really
adds a new dimension with regards to how the processor is
programmed and so on?


Surely, the cells are more complex than the cells in the FPGA. About the
new dimension of processor programming, I'm not sure - my primary goal
is to get the PM to be programmable, without any extra pain (which it is
at the moment).

Anyway, if my comparison stands, you probably can take some
inspiration from hardware design and the associated tools.


I'll do that.

(Take a look at e.g. "handel-C" from Celoxica, which is C
with extensions for parallellism. They have a compiler for it
that takes it all the way to hardware. They claim it is a
very efficient way to design hardware. I don't know about
that though... :)
I'll do that, altought at the moment I started the design of the HLL once again from the grounds and decided to leave the world of the existing languages behind... :-) _______________________________________________ http://www.opencores.org/mailman/listinfo/cores




Parallel Array Processor Project
by markus on Aug 23, 2004
markus
Posts: 32
Joined: Dec 9, 2002
Last seen: Apr 30, 2013
Gunnar Dahlgren:

Isn't it so that your architecture actually IS the architecture
of an FPGA? Or very much like it anyway [...]
I added the comment with my reply to my web pages (feedback section), because it just brought a whole new world in to my mind... I also thought the issue a little further and made this addition: "What really is the difference between the PM and the FPGA? I must think more about this, because it could reveal some extraordinary possibilities for the PM. One thing is sure; the FPGA has been designed to process electronical signals. The PM has been designed to process abstract signals - data. PM is like a FPGA, not operating in the physical world, but in the abstract, virtual data world. Does it make any sense?" --- Altogether, there's new thoughts about the HLL and esp the "HLL Crisis": http://reaaliaika.net/showarea.php/procmem/hll_design/crisis
First Prev 3/5 Next Last
© copyright 1999-2026 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.