Welcome, Guest. Please login or register.

Author Topic: Can FPGA 060 run more than 100 Mhz?  (Read 12432 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline billt

  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 910
    • Show all replies
    • http://www.billtoner.net
Re: Can FPGA 060 run more than 100 Mhz?
« on: April 17, 2014, 08:25:48 PM »
Quote from: SpeedGeek;762588
250MHz FPGA chips have been available for quite a while now. That's the easy part...

Not that simple. When they say an "FPGA runs at 250MHz", what does that actually mean? What is the FPGA configured to do/be for that measurement? Different designs will have different pathways in the FPGA, and thus different results and different max running speeds. You're extremely unlikely to end up 1:1 with whatever that 250MHz claim, or any other clock rate claim is based on in an FPGA. Marketing people at chip compnies feel the need to say things, but IMHO, stating system clock rates for an FPGA chip doesn't make very much sense. If a chip vendor is saying a clock rate based on some reference design they've put into each FPGA, the exact same reference design, then such a clock rate might be a useful general comparison of speed from one FPGA product to another, so you might be able to say that Generation 2 of our product runs at approximately 2x clock rate as our Generation 1 product. But in terms of knowing what clock rate your design (such as tg68 or 68K00 or 68K30) will run at is pretty useless. You learn this when you define a clock period and run synthesis if that speed works or not. (Done by timing analysis of the synthesized and place/routed result in the FPGA tools) If you decide on a target clock speed for your final product based on whatever particular FPGA chip, then you essentially get a yes or no answer from the timing checks. If yes, maybe you can go even faster, and try that. If no, then either work on improving your design and creep closer toward your goal, or realize that you need to change your goal (and datasheet and marketing) or maybe change your FPGA to a faster one. Even if whatever marketing blurb said the chip runs at your target clock rate.

I used to be part of a team that designed FPGA silicon, so that other people could buy those FPGA chips and put their own stuff inside. The architect/team lead once said that the 0.35micron chips could do 350MHz, as long as you only wanted an inverter chain that never left the IO buffers to get into the core of the chip. That wouldn't be very useful. Any design that was inside the core would be slower than 350MHz due to the longer pathways.

A simple implementation of a particular instruction set processor will run at a slower clock rate than a pipelined implementation of the same instruction set thing. A longer pipeline design will run at a faster clock rate than a shorter pipeline. (The "simple design" is essentially a 1-stage pipeline)

But longer pipelines waste more time on a branch (stuff happening in the pipeline that gets thrown out, then refill the pipeline with the branch's stuff)  than a shorter pipeline design. So there is a tradeoff between pipeline length, clock speed and branching.

Quote
the hard part is reverse engineering the 060 and programming the FPGA to correctly emulate an 060 under a fairly large number of different operating conditions.

You don't need so much to reverse-engineer the 060 chip. Anything you put into an FPGA will be somewhat different from the 060 silicon anyway. No FPGA place and route tool will give you exactly what's in the 060 silicon, even if it came from the same RTL, which isn't very likely to be the case anyway. You'd have to tool the RTL to the FPGA paradigm, and perhaps to some extent to your particular FPGA and tool (ISE or Quartus, etc.)

What such a design would really be, is an entirely new implementation of the instruction set. That instruction set is published and known publicly. It would be nice to do that as portable-friendly as possible, considering that there may be some differences in inferring memories (FIFOs, RAMs cor cache, etc) from one FPGA architecture to another (spartan3 vs spartan6 vs Cyclone5 etc) or tool to another (ISE vs Quartus), so such things should find their way into instantiable blocks to keep the rest of the RTL code portable. Such things were likely instantiable blocks at Motorola way back when, but as they were targeting a particular fab process, they may have coded to whatever their memory compiler tool (automated memory block generator to give you a chunk of silicon layout, and whatever connections that comes out of that). One would have to think of a good generic "API" of connections to fit a generic memory into, and then make such a defined wrapper around any particular FPGA inferred or instantiated memory block to keep the parent block nice and generic.

Anyway... Someone needs to define an instruction fetch and parse unit, an ALU block, etc. that is compatible with the 68060 instruction set. Or 68020 or 030 instruction set, whatever is really the best choice.

We tend to say 68060, as we perceive that to be the newest and fastest 68k chip. Motorola made certain decisions that all together concluded with the 68060 implementation. Such decisions would consider how often an instruction has actually been used, how complicated it is (and thus how much it affects die area/cost, power, and max clock rate capability)

We might today want to reconsider certain decisions, such as added or removed instructions compared to earlier 68k family parts, and make some adjustments. Maybe add some instructions back in. Maybe redo the 68040 instruction set with more of a 68060 block diagram. Or an 020, whichever particular set of instructions is most beneficial. If AmigaOS or some target application software, or more recent compiler innovations tend to make frequent use of some instruction that was removed in the 68060, and thus spends a lot of time emulating that instruction on a real 68060 accelerator, then maybe we should put that instruction back in. Putting back certain instructions can make for a better performance of the software running an 020-optimized binary compared to an 060-optimized binary running on an exact-as-possible 060 implementation.

This is not really reverse-engineering. It would be a new engineering of the published 68k instruction set. Maybe a new engineering of a new combination of all 68k family instructions not before seen in any particular silicon from Motorola/Freescale... Or even a superset, adding in some entirely new instructions in addition to whatever we take from the Motorola books. (SIMD anyone??) Apply whatever microprocessor design concepts you like. Make an 020 instruction super-scalar. Or make an 060 instruction set not super-scalar. Whatever floats your boat. I'm not sure how fancy the tg68 is, or 68k00 or any other of the several 68k softcores out there. (ao_68000 etc)

This is an opportunity to do something even more modern in concept than any 68k ever was. Depending on the FPGA, that coud come out at a higher or at a lower clock rate than previous Motorola products. Depending on the price of the FPGA, some particular "possible" performance may or may not be worth achieving. (I'm not going to pay $10000 (ten grand) for a particular FPGA to achieve the highest possible speed, but I'll pay a few hundred maybe to get the best we can from that price range)


And now that we have SoC type FPGAs coming out, with hard-wired ASIC style ARM processors inside them, we have a new possibility. The FPGA part for IO/connetivity interoperation with whatever (060 PCB socket) and/or for Minimig circuitry, and then emulate the 68k in software on the ARM. Interpret it (Cyclone emulation) or jit (might need to be created). I'm not sure how either form of software emulation in the ARM, at the hardwired ARM clock rates, would compare to FPGA implemented softcore 68k processor.
Bill T
All Glory to the Hypnotoad!
 

Offline billt

  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 910
    • Show all replies
    • http://www.billtoner.net
Re: Can FPGA 060 run more than 100 Mhz?
« Reply #1 on: April 18, 2014, 05:08:55 PM »
Quote from: psxphill;762832
I'm sure someday someone will figure out that every time that happens the project dies, then we can finally have a 68060 cpu/fpu/mmu in an fpga.
 
Once it's done and open source then everyone can discuss whether it's worth making any changes, without using the barrier to entry as a way of keeping control.

Well, if certain decisions are made, then it's done, and then we reconsider some things, it could lead to a lot of wasted time. It may be better to do some types of considerations before spending so much time on design and RTL coding. Certain things are significant, and to change them would be to throw it all away and start over, so do those things the first time rather than the second time around for the same project. If we want to do a 68030+68882 instruction set, with 4 integer units and 3 FP units, using an 8 stage pipeline, with the 68060 "native bus", then some of that would be horrible to change or add in later. It would be much easier to do the big things from the start. Let's consider tg68 or 68x00 cores as the "first time through" and not waste anyone's time doing that equivalent again, just to trash it and start over for the "real" design with the more complicated things later.

Starting with a single ALU, and then later on adding two more of them, is not a trivial change.

Starting with integer, and adding FPU later, is not trivial. It's not as huge as going from one ALU to 2 ALUs. But it's significant.

So I only mean to say, if what you really want to do is X, then do not start working on Y, and then someday try to smash Y into something sortof-kindof like X. Start out working on X. Then, when done, you have X, not a hackish X-wannabe.



Quote from: SpeedGeek;762825
There is quite bit more to emulating an 060 than implementing the 68K instruction set. What about the MMU, FPU, bus arbitration, cycle termination, interrupts, exception handling, RESET operation, 1/2 CLK bus speed operation, etc?

Yes, you will also have to read the bus spec and implement that if it plugs into a legacy chip socket on some PCB. The ao_68000 softcore is an example of implementing the instruction set, but it does not have a 68k bus of any flavor, it has a Wishbone bus instead, and so would need additional work to fit it into an existing PCB socket for a Motorola chip. That's likely doable though. For the most part, I take it as implied that things will be made to fit onto whatever target socket/bus there is to do. Some of what you mentioned did need to be done in Majsta's Vampire, as the tg68 at the time he started Vampire was not a real 68000 interface either. Close in most ways, but a few places of artistic license diverged from Motorola's socket waveforms. Yet it got a wrapper and now goes onto a conventional 68000 motherboard...

Understand that while we need to work on the target socket or bus of interest, we can turn that into anything else inside the FPGA. The socket might run at 50MHz, but we can have as fast a CPU core inside that the design will run at in the chip. If an 060 took a 100MHz clock to run the CPU at 50MHz, we don't need to run the FPGA softcore at 50MHz as well, just because Motorola did that. We an choose to diverge from that decision that Motorola made.

Regardless of what someone intends to do, there will be no 100% clone of 68060 or anything else. There will only be a new design, which may or may not be compatible with software or socket.

Here's a divergent idea... Make an FPGA board that fits into a Pentium socket, but has a 680x0 core inside... Then put Minimig chipset on a PCI card. Hilarity ensues... :)  Or, put an FPGA on one of them Apple ZIF CPU boards, with a 680x0 softcore inside.  Or an FPGA on a Com-Express module, for whatever motherboard you want...

I ordered a Zed board the other day, and am interested in playing with one of the 68k softcores in there and trying to fit the ARM-side peripherals onto it. Minimig plus those things. Which means AXI bus. I'm also very interested in buying an SOCkit or DE1-SoC board for much the same reason, with much the same requirements.



I guess that I'm not really even thinking of cloning an 060. I would really prefer what the title of this thread implies, something different than what Motorola made. Faster than 100MHz. More than that. Return some instructions that Motorola removed, but which we'd today rather have back in there. Reconsider how many of which units are present. (One needs to figure out how to make only a single ALU design work anyway, so why not start with figuring out how to make more units work at that time???) We already have a handful of the simpler designs. I'm interested in seeing something beyond those, and something beyond Motorola's products, as specced before doing any design work to change later.
« Last Edit: April 18, 2014, 05:38:52 PM by billt »
Bill T
All Glory to the Hypnotoad!
 

Offline billt

  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 910
    • Show all replies
    • http://www.billtoner.net
Re: Can FPGA 060 run more than 100 Mhz?
« Reply #2 on: April 19, 2014, 01:46:02 AM »
Quote from: psxphill;762859
Lets not. If you can't guarantee that every piece of software that works on 68060 will work on this and vice versa then it's pointless. The actual implementation is irrelevant to that, so you can debate that until the heat death of the universe if you want, just as long as the ISA is exactly the same.
 
You seem intent on wasting everybody's time, so I'm out.


I think that's a bit rash, it's a very technical topic and deserves some technical discussion and debating ideas. Just because I think I'm right and you thing I'm wrong doesn't mean there aren't good things to be said in the middle somewhere for both of us.

If all you want is exactly 68060 instruction set, then either add missing instructions to tg68 or something, maybe wait for Suska's 68k30 and start from there, and make it fit an 060 socket. If that's good enough for you, then you and like-minded people can work on that as one project.

Anyone interested in a more advanced design can work on that as another project.
Bill T
All Glory to the Hypnotoad!