level 10
杜比环绕声
楼主
这可能是loongarch相对mips最大的变化
设备通过各类总线要挂到CPU核上,总是要提供控制和数据端口进行交互
所以就存在怎么访问和控制这些端口的解决方案
Mips的方案基于一个线性的地址空间和一套访存指令
哪些是内存,哪些是IO端口,通过把这个统一的地址空间分段来解决
这样的好处如同Unix&Linux把所有设备都等同成文件一样
一套拳法对付各类对手,玄妙在于施展拳法的人
另外一种解决方案是用两套拳分别解决地址访问和端口访问
X86/64选的就是这第二套方案,端口I/O访问和内存访问互相隔离,谁也不搀合谁
通过通用寄存器进行数据交换即可
Loongarch 选的也是第二套方案,但和X86/64不同的是,它把协处理器cp0也当成外设
这么做在驱动这一块,基本上和Mips说拜拜了
这么做在驱动这块,貌似X86/64驱动的移植变简单了
也因为在指令集上专门设置了指令,那么在高速缓存的调度上
指令级别的地址访问和端口访问也就分开了,命中率猜测也该有所改善
更为重要的是,这对Loongarch的二进制兼容性,也是一种体系结构上的保障
中间转换加工的层数变少,效率自然有所提升
2021年06月10日 10点06分
1
设备通过各类总线要挂到CPU核上,总是要提供控制和数据端口进行交互
所以就存在怎么访问和控制这些端口的解决方案
Mips的方案基于一个线性的地址空间和一套访存指令
哪些是内存,哪些是IO端口,通过把这个统一的地址空间分段来解决
这样的好处如同Unix&Linux把所有设备都等同成文件一样
一套拳法对付各类对手,玄妙在于施展拳法的人
另外一种解决方案是用两套拳分别解决地址访问和端口访问
X86/64选的就是这第二套方案,端口I/O访问和内存访问互相隔离,谁也不搀合谁
通过通用寄存器进行数据交换即可
Loongarch 选的也是第二套方案,但和X86/64不同的是,它把协处理器cp0也当成外设
这么做在驱动这一块,基本上和Mips说拜拜了
这么做在驱动这块,貌似X86/64驱动的移植变简单了
也因为在指令集上专门设置了指令,那么在高速缓存的调度上
指令级别的地址访问和端口访问也就分开了,命中率猜测也该有所改善
更为重要的是,这对Loongarch的二进制兼容性,也是一种体系结构上的保障
中间转换加工的层数变少,效率自然有所提升