I'll keep both pointers then. I have all the non-ISA bits and X86 converted and I'm trying to test it, but I'm running into a compile error in the stats stuff. Nate?
cc1plus: warnings being treated as errors build/X86_SE/base/statistics.hh: In member function 'Stats::VectorDistribution& Stats::VectorDistribution::init(Stats::size_type, Stats::Counter, Stats::Counter, Stats::Counter)': build/X86_SE/base/statistics.hh:2498: warning: converting to 'Stats::size_type' from 'double' Gabe nathan binkert wrote: > Oh, I agree there. They may both point to the same thing (unified > case), but they may not. > > Nate > > >> Having two pointers in the CPU for the DTB and ITB is still a >> necessity. If you're trying to model separate structures you're going >> to need two of them. >> >> Ali >> >> >> On Mar 6, 2009, at 1:13 AM, Gabe Black wrote: >> >> >>> I think ITBs and DTBs are usually very similar differ in a few key >>> ways >>> like the nx (no execute) bit in x86 for example. In x86 the DTB and >>> ITB >>> classes are basically just wrappers around a common TLB with one >>> translate function, and the DTB's and ITB's version just call that >>> with >>> an extra parameter or two. This should generally work across other >>> ISAs >>> as far as I know. If the translate functions really are radically >>> different, there isn't much overhead in having them both in there and >>> just picking one or the other based on that parameter. I think even >>> the >>> generic TLB that's for SE implementations that don't have an ISA >>> specific TLB yet just looks things up in the page table no matter what >>> your translating. >>> >>> As far as whether to get rid of the separation between the ITB and >>> DTB I >>> think it's a good idea. I can't think of any benefit to having the >>> separation other than that it's already there, and while it hasn't >>> caused any other problems it prevents Korey from having a UTB >>> implementation. We'd likely want to give it parameters which let you >>> independently configure it's ITB and DTB (or UTB) personalities, but >>> that should be pretty easy. >>> >>> This should (knock on wood) be pretty easy to implement and I'd be >>> happy >>> to help. >>> >>> Gabe >>> >>> nathan binkert wrote: >>> >>>>> How different are ITBs and DTBs anyway? It seems like for a UTB >>>>> you'd >>>>> want a single object that handles both ifetch and data translations >>>>> using a common translate() method, not something that inherits from >>>>> two different classes. E.g., why not just derive it from TLB? >>>>> >>>>> >>>> The two translation functions are different because every ISA does >>>> some different things for instructions vs data. Think about >>>> something >>>> like the executable bit. >>>> >>>> >>>> >>>>> Philosophically, I agree... let's avoid virtual inheritance if at >>>>> all >>>>> possible. It's just not a good idea. >>>>> >>>>> >>>> Ok, so the question is, which of the other alternatives should we do? >>>> Gabe (mister TLB expert)? Korey (since this is mips code)? >>>> >>>> Nate >>>> _______________________________________________ >>>> m5-dev mailing list >>>> m5-dev@m5sim.org >>>> http://m5sim.org/mailman/listinfo/m5-dev >>>> >>>> >>> _______________________________________________ >>> m5-dev mailing list >>> m5-dev@m5sim.org >>> http://m5sim.org/mailman/listinfo/m5-dev >>> >>> >> _______________________________________________ >> m5-dev mailing list >> m5-dev@m5sim.org >> http://m5sim.org/mailman/listinfo/m5-dev >> >> >> > _______________________________________________ > m5-dev mailing list > m5-dev@m5sim.org > http://m5sim.org/mailman/listinfo/m5-dev > _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev