[libre-riscv-dev] TLB key for CAM
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Tue Mar 26 03:38:15 GMT 2019
On Tue, Mar 26, 2019 at 2:29 AM Daniel Benusovich
<flyingmonkeys1996 at gmail.com> wrote:
>
> > any ideas on what the next step would be?
>
> I was planning on removing the second cache for the time being from
> the TLB and writing the basic unit tests for the TLB.
sounds initially like a plan to get going... ahh is that the 2-level
TLB idea that you were thinking of removing? i really liked the 2
levels (and it turns out it's something that intel does for high
performance).
would it be possible to remove the 2nd cache, write a unit test to
prove one cache, then add it back in and modify the unit test to do 2
again?
> Sorry for being gone for a bit had a hectic weekend.
no worries
> After that is done I am not really to sure as the TLB will be
> fundamentally done.
great! would that mean it would be at the point where it could do
page-walking in hardware? or are we sticking to software?
> Do you have any ideas? I have seen the phrase
> formal verification being thrown about (I have no
> idea what that is yet I have not googled it haha) so maybe that? Or
> start the next component perhaps?
next component... and/or discuss/review the levels of TLB idea, i
really liked that concept, to have a 2-level TLB with reduced CAM
sizes for the 1st level. being able to check the peformance of that,
via a unit test that emulates workloads would be really useful.
honestly there's quite a bit i am not familiar with on this, so the
more everyone can help out the better.
oh! btw, VectorAssembler.py can be replaced with this:
vector = []
for index in range(len(something):
ematch = entry_array[index].match
vector.append(ematch)
encoder.i.eq(Cat(*vector))
basically, VectorAssembler is identical to the nmigen "Cat" class.
the Cat class takes a variable number of non-keyword arguments. to
pass in a list *as if* it was a series of arguments, you do
Cat(*arguments).
so, these are identical:
arg1 = "hello"
arg2 = "fred"
Cat(arg1, arg2)
this is identical to the above:
arguments_list = [arg1, arg2]
Cat(*arguments_list)
the star ("*") is what tells python to apply the list (or tuple) as
arguments *to* the Cat object.
l.
More information about the libre-riscv-dev
mailing list