Расширенная ширина виртуального адреса на чипе ракеты - PullRequest
0 голосов
/ 22 апреля 2020

При просмотре HasTileParameters я вижу два разных типа ширины виртуального адреса: vaddrBits и vaddrBitsExtended:

def vaddrBits: Int =
    if (usingVM) {
        val v = maxSVAddrBits
        require(v == xLen || xLen > v && v > paddrBits)
        v
    } else {
        // since virtual addresses sign-extend but physical addresses
        // zero-extend, make room for a zero sign bit for physical addresses
        (paddrBits + 1) min xLen
    }
def vpnBits: Int = vaddrBits - pgIdxBits
def vpnBitsExtended: Int = vpnBits + (vaddrBits < xLen).toInt
def vaddrBitsExtended: Int = vpnBitsExtended + pgIdxBits

Последний является на один бит больше, чем предыдущий, когда ширина виртуальной машины меньше чем xLen. Почему эта разница? И когда следует использовать один или другой?

...