From Fedora Project Wiki
(Created page with "== 为什么使用32位Linux?== 使用32位Linux内核的目的是是为了减少内存占用并满足DDR和缓存要求的小容量(例如,64/128MB SIP SoC)。 ilp32的long和指针大小仅为lp64的一半(rv64默认abi - long和指针都是64位)。 这种数据类型上的显著差异导致了不同的内存和缓存占用成本。 在相同的128MB qemu系统环境中,这里是s32ilp32、s64ilp32和s64lp64之间的比较测量:")
 
No edit summary
Line 1: Line 1:
{{lang|en|zh-cn|page=Architectures/RISC-V/64ILP32}}
== 为什么使用32位Linux?==
== 为什么使用32位Linux?==


使用32位Linux内核的目的是是为了减少内存占用并满足DDR和缓存要求的小容量(例如,64/128MB SIP SoC)。
使用32位Linux内核的目的是为了减少内存占用并满足小容量DDR和缓存的要求(例如,64/128MB SIP SoC)。
 
ilp32的long和指针大小仅为lp64的一半(rv64默认的abi - long和指针都是64位)。
这种数据类型上的显著差异导致了不同的内存和缓存占用成本。 在相同的128MB qemu系统环境中,这里是s32ilp32、s64ilp32和s64lp64之间的比较测量:
 
=== 根文件系统: ===
* u32ilp32 - 使用相同的32位用户空间rootfs.ext2(UXL=32)二进制文件,来自buildroot 2023.02-rc3,qemu_riscv32_virt_defconfig。
 
=== Linux: ===
* s32ilp32 - Linux version 6.3.0-rc1 (124MB) rv32_defconfig:
<pre>
          $(Q)$(MAKE) -f $(srctree)/Makefile defconfig 32-bit.config
</pre>
 
* s64lp64  - Linux version 6.3.0-rc1 (126MB) defconfig:
<pre>
          $(Q)$(MAKE) -f $(srctree)/Makefile defconfig
</pre>
 
* s64ilp32 - Linux version 6.3.0-rc1 (126MB)  rv64ilp32_defconfig:
<pre>
          $(Q)$(MAKE) -f $(srctree)/Makefile defconfig 64ilp32.config
</pre>
 
=== Opensbi: ===
 
* m64lp64  - (2MB) OpenSBI v1.2-80-g4b28afc98bbe
* m32ilp32 - (4MB) OpenSBI v1.2-80-g4b28afc98bbe
 


ilp32的long和指针大小仅为lp64的一半(rv64默认abi - long和指针都是64位)。 这种数据类型上的显著差异导致了不同的内存和缓存占用成本。 在相同的128MB qemu系统环境中,这里是s32ilp32、s64ilp32和s64lp64之间的比较测量:
[[File:64ilp32.png|center|1024px]]

Revision as of 12:19, 4 March 2024

为什么使用32位Linux?

使用32位Linux内核的目的是为了减少内存占用并满足小容量DDR和缓存的要求(例如,64/128MB SIP SoC)。

ilp32的long和指针大小仅为lp64的一半(rv64默认的abi - long和指针都是64位)。 这种数据类型上的显著差异导致了不同的内存和缓存占用成本。 在相同的128MB qemu系统环境中,这里是s32ilp32、s64ilp32和s64lp64之间的比较测量:

根文件系统:

  • u32ilp32 - 使用相同的32位用户空间rootfs.ext2(UXL=32)二进制文件,来自buildroot 2023.02-rc3,qemu_riscv32_virt_defconfig。

Linux:

  • s32ilp32 - Linux version 6.3.0-rc1 (124MB) rv32_defconfig:
           $(Q)$(MAKE) -f $(srctree)/Makefile defconfig 32-bit.config
  • s64lp64 - Linux version 6.3.0-rc1 (126MB) defconfig:
           $(Q)$(MAKE) -f $(srctree)/Makefile defconfig
  • s64ilp32 - Linux version 6.3.0-rc1 (126MB) rv64ilp32_defconfig:
          $(Q)$(MAKE) -f $(srctree)/Makefile defconfig 64ilp32.config

Opensbi:

  • m64lp64 - (2MB) OpenSBI v1.2-80-g4b28afc98bbe
  • m32ilp32 - (4MB) OpenSBI v1.2-80-g4b28afc98bbe


64ilp32.png