[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [openrisc] Cache Line Fill
HI Damjan,
Just want to touch base with you on this project, "instruction execution
with 0 wait state", did yo have a chane to put the changes into the
CVS so we can download and try them out.
Thanks in advance
Michael Phan
----- Original Message -----
From: mphan@n...
To: lampret@o... , openrisc@o...
Date: Tue, 6 May 2003 17:57:54 -0100
Subject: Re: [openrisc] Cache Line Fill
>
>
>
> Hi Damjan,
>
> Your feedbacks are so precious and helpful to our project. Exactly,
> we
> don't need to use MMU and want to replace the cache with fixed
> memory for instruction execution with 0 wait state. So please put
> your
> changes in the CVS at your convenience so we can try it out and
> measure the performance improvement. Our project needs about 512
KB
> for the cache.
>
> Thousand thanks
> Michael Phan
>
>
>
> ----- Original Message -----
> From: "Damjan Lampret" <lampret@o... >
> To: <openrisc@o... >
> Date: Mon, 5 May 2003 21:21:38 -0700
> Subject: Re: [openrisc] Cache Line Fill
>
> >
> >
> >
> > ----- Original Message -----
> > From: <mphan@n... >
> > To: <openrisc@o... >
> > Sent: Thursday, May 01, 2003 3:36 PM
> > Subject: [openrisc] Cache Line Fill
> >
> >
> > > Hi Damjan.
> > >
> > > In the current design of orp_soc, with
> or1200_registered_ouput
> > > supported, a cache line fill takes 8 clocks (2-2-2-2) to
> fetch
> > 4 DWORDs
> > > from the SRAM/FLASH. And a single DWORD fetch takes 3
> clocks
> > > (including one idle cycle of wb_cyc_o deasserted).
> > >
> > > If we have a very fast internal SRAM, is it possible to
> do a
> > cache line
> > fill
> > > with 4/5 clocks (1/2-1-1-1) by changing the wb_stb logic
> in
> > the
> > > or1200_wb_biu.v and do a single DWORD fetch with 2
> clocks.
> >
> > OR1200 is it is has been used in SoC projects much more
> complxed
> > than
> > orp_soc. In all these projects the memory subsystem takes more
> than
> > 1/2-1-1-1. So the current 2-2-2-2 was fast enough for all
> SoCs. If
> > you
> > however have faster memory subsystem than modification of
> > or1200_wb_biu and
> > possibly IC/DC state machines will be needed.
> >
> > >
> > > My next question is can we increase to cache size to 512
> kB to
> > reside
> > > the whole firmware and execute instructions from it with
> 0
> > wait state.
> > >
> >
> > If you want to use MMUs, then no. This is because MMU's page
> > translation is
> > done at the same time as cache access - virtual page number is
> > translated at
> > the same time as cache hit is determined. Since page size is
> 8KB,
> > largest
> > direct mapped cache can only be 8KB, unless you use several
> ways,
> > or unless
> > cache access takes an additional clock cycle (maybe acceptable
> for
> > data
> > accesses ?).
> >
> > Anyway if you don't need MMU, then your caches sizes are not
> > limited. To
> > increase cache size just add new IC/DC configuration (search
> for
> > "configuration" in or1200_defines.v and when you find IC and
> DC
> > configurations, just add a new size and then enable new
> > configuration).
> > Right now there are configurations for 4KB and 8KB caches.
> >
> > I'm working on one project where similar to your case all code
> > needs to be
> > accessible in 0 wait states. What I plan to do is to replaces
> > caches with
> > fixed memories - basically removing TAG RAMs and making sure
> that
> > the "hit"
> > always happens when accessing certain address range and never
> > happens when
> > accesssing outside of that range. This will effectively
> "change
> > caches into
> > fixed RAMs much like DSP RAMs or similar).
> > If you want these changes, I can put them into the cvs with
> > appropriate
> > defines. But it will take a few days.
> >
> > regards,
> > Damjan
> >
> > > Thanks
> > >
> > > Michael Phan
> > >
> > >
> >
>
--
To unsubscribe from openrisc mailing list please visit http://www.opencores.org/mailinglists.shtml