Skip to content

Why RoCC accelerator requires physical address when accessing L1D cache? #14

@allencho1222

Description

@allencho1222

I was hacking the source code of Rocket SoC, and found that Rocket uses virtual address when having access to L1D cache(from the source code of nonblocking cache code).

But, from the following code:
image

As far as I know, the interface between L1D cache and Accelerator(co-processor) is same as the interface between core and L1D cache.

L1D cache accepts virtual address because it is virtually indexed and physically tagged. So, accelerator also has to use virtual address.

If L1D cache accepts physical address, the indexing of TLB will use physical address, which is non-sesnse.

The core uses virtual address in the 'store' and the 'load' instruction. But, why the virtual address needs to be translated into physical address before the accelerator accesses L1D cache?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions