【内存管理】处理器体系结构的一些相关基础知识

前言

本文章描述处理器体系结构相关的一部分必备基础知识。

必备知识

存储方式

大端存储模式

指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。

内存视图:
0000430: 1234 5678 0100 1800 53ef 0100 0100 0000
0000440: c7b6 1100 0000 3400 0000 0000 0100 ffff
在大端模式下,前32位为12 34 56 78

大端模式下地址的正常顺序与值的增长顺序相同。

小端存储模式

指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。

内存视图:
0000430: 7856 3412 0100 1800 53ef 0100 0100 0000
0000440: c7b6 1100 0000 3400 0000 0000 0100 ffff
在小端模式下,前32位为12 34 56 78

小端模式下地址的正常顺序与值的增长顺序相反。

判断方式

利用“联合体union的存放顺序是所有成员都是从地址值开始存放”的特性,可以判断CPU对内存采用的是大端模式还是小端模式读写。

int checkCPU(void)
{
	union w {
		int a;
		char b;
	} c;
	c.a = 1;
	return (c.b == 1);
}

如果返回结果为true,则是小端模式,否则是大端模式。

内存管理单元 MMU

ARM处理器的内存管理单元(Memory Management Unit, MMU)包括TLB(Translation Look-aside Buffer)和Table Walk Unit两个部件。

TLB

TLB是一块高速缓存,用于缓存页表转换的结果,从而减少内存访问的时间。TLB表项(TLB entry)数量比较少,每个TLB表项包含一个页面的相关信息,例如有效位、虚拟页号、修改位、物理页帧号等。
一个完整的页表翻译和查找的过程叫做页表查找(Translation table walk),页表查询的过程由硬件自动完成,但是页表的维护需要软件来完成。页表查询是一个相对耗时的过程,理想的状态下是TLB里存有页表相关信息。如果TLB表项中有相应的表项,直接从TLB表项中获取物理地址,称为TLB命中。如果TLB表项中没有相应的表项,称为TLB miss。当TLB miss时,才会取查询页表,并且开始读入页表的内容。

页的大小

超级大段(superSection):支持16MB大小的超级大块。
段(section):支持1MB大小的段。
大页面(Large page):支持64KB大小的大页。
页面(page):4KB的页,Linux内核默认使用4KB的页。

AArch64架构的异常等级(Exception Levels)

EL0:用户特权,用于运行普通用户程序。
EL1:系统特权,通常用于运行操作系统。
EL2:运行虚拟化扩展的Hypervisor。
EL3:运行安全世界中的Secure Monitor。

NUMA

绝大多数ARM都采用UMA(Uniform Memory Architecture)的内存架构,即内存时统一结构和统一寻址的。
对称多处理器(Symmetric Multiple Processing,SMP)系统大部分都采用UMA内存架构。

在UMA架构的系统中有如下特点.
1. 所有硬件资源都是共享的,每个处理器都能访问到系统中的内存和外设资源。
2. 所有处理器都是平等关系。
3. 统一寻址访问内存。
4. 处理器和内存通过内部的一条总线连接在一起。

随着处理器数量的增多,系统总线成为系统的最大瓶颈。
NUMA系统从SMP系统演化过来。
NUMA系统由多个内存结点组成,整个内存体系可以作为一个整体,任何处理器都可以访问,只是处理器访问本地内存结点拥有更小的延迟和更大的带宽,处理器访问远程内存结点速度要慢一些。每个处理器除了拥有本地的内存之外,还可以拥有本地总线,例如PCIE、SATA等。

  • 30
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值