为什么ARM不支持IPA错误地址的64位?

为什么ARM不支持IPA错误地址的64位?,arm,arm64,device-emulation,Arm,Arm64,Device Emulation,我试图了解ARM体系结构(ARMv8)如何在虚拟化环境中支持错误地址。对于虚拟机监控程序,必须捕获来自来宾的每个设备访问以模拟设备 来自客户机的内存访问将生成异常,虚拟机监控程序将通过读取ESR来识别异常原因。然后意识到原因是数据中断 然后,从虚拟机监控程序的角度来看,故障地址是主要的关注点,它将通过读取HPFAR(部分IPA)和FAR(故障地址的VA)来获取故障地址。通过合并它们(错误地址的上半部分来自HPFAR,下半部分来自FAR),虚拟机监控程序最终可以知道错误地址,但是,它实际上不是64

我试图了解ARM体系结构(ARMv8)如何在虚拟化环境中支持错误地址。对于虚拟机监控程序,必须捕获来自来宾的每个设备访问以模拟设备

来自客户机的内存访问将生成异常,虚拟机监控程序将通过读取ESR来识别异常原因。然后意识到原因是数据中断

然后,从虚拟机监控程序的角度来看,故障地址是主要的关注点,它将通过读取HPFAR(部分IPA)和FAR(故障地址的VA)来获取故障地址。通过合并它们(错误地址的上半部分来自HPFAR,下半部分来自FAR),虚拟机监控程序最终可以知道错误地址,但是,它实际上不是64位地址。它仅表示([51:12]或[47:12]的IPA范围,具体取决于ARMv8的版本),而不是完整的64位IPA

尽管大多数实际平台没有2^64大小的内存,但我认为ARM体系结构必须支持表示64位的完整IPA,但它似乎没有


有人能告诉我我是否遗漏了什么,或者ARM不支持64位IPA是有特殊原因的吗

2^40字节已经是256*4GB=1TB;我不认为这是不够的,即使是对于个人电脑。我同意这是巨大的和足够的。但从理论上讲,该体系结构应支持64位IPA,即使实现并不实际使用它。这是我的问题。