1/1

|
lack of pipeline in wishbone (resend)
by Unknown on Nov 28, 2005 |
Not available! | ||
|
Does anyone else see it as a serious shortcoming that Wishbone does not
support Address/Data pipelining?
When connecting Wishbone to standard synchronous SRAM's (that register
all address/control inputs) it makes it impossible to maintain
throughput at full clock rate on random address sequences, even for
those with flow-through data.
The "FASM" Synchronous RAM model that is discussed in the spec if not
actually synchonrous during read, only during write. This does not match
any SSRAM IC I have encountered, or the SSRAM's inside recent Altera FPGA's.
Is anyone working on an extension to WB to support pipelining?
Tim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.opencores.org/forums.cgi/cores/attachments/20051128/2fc8b631/attachment.htm
|
|||
|
lack of pipeline in wishbone (resend)
by Unknown on Nov 28, 2005 |
Not available! | ||
|
That's exact the point I stumbeld over in the last two weeks
when I changed the memory interface of JOP to be WB compliant. Here is a comment I posted in another group:
After implementing the Wishbone interface for main memory access
The proposed SoC interconnect standard SimpCon with pipelining
support is available at operncores:
http://www.opencores.org/projects.cgi/web/simpcon/overview
from JOP I see several issues with the Wishbone specification that makes it not the best choice for SoC interconnect. The Wishbone interface specification is still in the tradition of microcomputer or backplane busses. However, for a SoC interconnect, which is usually point-to-point, this is not the best approach. The master is requested to hold the address and data valid through the whole read or write cycle. This complicates the connection to a master that has the data valid only for one cycle. In this case the address and data have to be registered *before* the Wishbone connect or an expensive (time and resources) MUX has to be used. A register results in one additional cycle latency. A better approach would be to register the address and data in the slave. Than there is also time to perform address decoding in the slave (before the address register). There is a similar issue for the output data from the slave: As it is only valid for a single cycle it has to be registered by the master when the processor is not reading it immediately. Therefore, the slave should keep the last valid data at it's output even when wb.stb is not assigned anymore (which is no issue from the hardware complexity). The Wishbone connection for JOP resulted in an unregistered Wishbone memory interface and registers for the address and data in the Wishbone master. However, for fast address and control output (tco) and short setup time (tsu) we want the registers in the IO-pads of the FPGA. With the registers buried in the WB master it takes some effort to set the right constraints for the Synthesizer to implement such IO-registers. The same issue is true for the control signals. The translation from the wb.cyc, wb.stb and wb.we signals to ncs, noe and nwe for the SRAM are on the critical path. The ack signal is too late for a pipelined master. We would need to know it *earlier* when the next data will be available --- and this is possible, as we know in the slave when the data from the SRAM will arrive. A work around solution is a non-WB-conforming early ack signal. Due to the fact that the data registers not inside the WB interface we need an extra WB interface for the Flash/NAND interface (on the Cyclone board). We cannot afford the address decoding and a MUX in the data read path without registers. This would result in an extra cycle for the memory read due to the combinational delay. In the WB specification (AFAIK) there is no way to perform pipelined read or write. However, for blocked memory transfers (e.g. cache load) this is the usual way to get a good performance. Conclusion -- I would prefer: * Address and data (in/out) register in the slave * A way to know earlier when data will be available (or a write has finished) * Pipelining in the slave As a result from this experience I'm working on a new SoC interconnect (working name SimpCon) definition that should avoid the mentioned issues and should be still easy to implement the master and slave.
As there are so many projects available that implement the WB
See it as an 'extension' to the open Wishbone specification
and not as a substitute.
Martin
----- Original Message -----
From: "Tim Tait" tim.tait1 at gmail.com>
To: cores at opencores.org>
Sent: Monday, November 28, 2005 7:30 AM
Subject: [oc] lack of pipeline in wishbone (resend)
Does anyone else see it as a serious shortcoming that Wishbone does not
support Address/Data pipelining?
When connecting Wishbone to standard synchronous SRAM's (that register
all address/control inputs) it makes it impossible to maintain
throughput at full clock rate on random address sequences, even for
those with flow-through data.
The "FASM" Synchronous RAM model that is discussed in the spec if not
actually synchonrous during read, only during write. This does not match
any SSRAM IC I have encountered, or the SSRAM's inside recent Altera FPGA's.
Is anyone working on an extension to WB to support pipelining?
Tim
interface I will provide bridges between SimpCon and WB. For IO devices the former arguments do not apply to that extent as the pressure for low latency access and pipelining is not high. Therefore, a bridge to WB IO devices can be a practical solution for design reuse. |
|||
1/1

