• Content count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About Pharseid1

  • Rank

Profile Information

  • Gender Male
  1. That's more of an April Fool's question than a Christmas question. But on the odd chance that you're serious, no.
  2. Back in the early 90's, I wrote a 3D renderer. I started off doing most everything in FP, but to get speed eventually it was pretty much all fixed point. At the back end, it was doing interpolations over and over, I'd interpolate to get polygon edges, interpolate shading values and planned to use the same scheme to interpolate across textures when I heard about OpenGL and Direct3D coming to the PC, at which point I dropped the project. So if you just built an interpolation unit, as a wishbone device or something, you should get a big boost over software-only. And of course you have all those hard multipliers, so a fixed point vector unit. The source code to Quake is in the public domain, one strategy might be to start software only and modify both software and hardware incrementally.
  3. The MPP was a big SIMD machine. Because everything works on the same clock, coordination is pretty simple, but on the other hand, you're pretty much only looking at problems that have large amounts of data parallelism. That works for some things, for instance, GPU'S work on problems with huge amounts of data parallelism. So it's not ideal for all problems, but an interesting asset to have. Especially in the case of FPGA'S, where you can design a custom machine for each problem. The virtual stack method is interesting because it allows efficient compilation of Forth onto register machines. You keep a list of available registers and you have a virtual stack at compile time. So if you compiled something like "dataValue @ 4 +" you would push dataValue , with the tag that it was a literal value (which I would hope would be a variable address) onto the tagged virtual stack, then compile a machine language instruction to read that value to a register obtained from the available register list, removing that register from the list, then compile an instruction to add the immediate 4 to the register, leaving the value of the register with a register tag on the virtual stack. Operations like "swap" occur at compile time if both operands are on the virtual stack, requiring no runtime activity. Compared to naïve compilation on the cpu's of that day (late 80's), this technique was typically 3 times faster for binary operations. This method is attractive for an incremental compiler (traditional Forth) or a JIT compiler because it is simple and fast. So on an FPGA you have the choice of using an existing register machine and doing a little extra work to build an efficient compiler or designing a Forth machine that doesn't need this optimization.
  4. Monsonite, it's good to see that there's still interest in Forth. I did some programming in Forth in the 80's (I'm co-inventor of the virtual stack method of compiling Forth to register machines). Forth on a single stack machine can be more frustrating than on register machines. I think there are a couple FPGA Forth implementations out there, although they may be 16-bit versions. There are a couple FPGA projects that interest me, but at the moment I have way to much on my plate to seriously consider them. But one of those would be a 32-bit Forth machine with two instruction formats, one strictly Forth operations and the other containing a 16 bit Forth operation in parallel with a 16 bit coprocessor operation. The thought being to create a model that would allow people to create coprocessors closely coupled to the cpu. In the late 80's I met a couple guys from NASA that were running Forth on NASA's Massively Parallel Processor. A couple years later I became aware of FPGA's and it struck me that the day would come that people could create there own MPP's. I think we're there. Anyway, if you're interested in creating a Forth machine or compiling Forth to a register machine like MicroBlaze, I would certainly be willing to help within the constraints of my current situation.