CPU及地址空间回顾

CPU


计算机中各个部件都有频率,比如内存频率,CPU频率,总线频率等,为了协同工作有一个基准频率,即总线速度,也叫CPU外频,其他频率都是这个频率的倍数(倍频技术)。

倍频:通过技术手段把外频传递到CPU内部时翻一定的倍数;
右图中核心速度即是CPU主频,主频=外频*倍频;
睿频:保证CPU稳定的同时拉高倍频来提升主频;
超频:人为拉高外频或倍频来获得更高的主频,稳定性不能保证,尤其是超外频,严重时会造成硬件烧毁;

随着制造工艺限制提升单核心频率,于是人们想到了通过增加核心数量来进一步提高CPU速度,形成了多CPU结构

多核CPU 1


SMP(Symmetrical Multi-Processing):对称多处理器结构,多个CPU之间没有区别,平等地访问内存、外设、一个操作系统,如果两个处理器同时请求访问一个资源(例如同一段内存地址),由硬件、软件的锁机制去解决资源争用问题。由于资源共享,资源竞争限制了这种结构的扩展性。


NUMA(Non-Uniform Memory Access):非一致存储访问结构,具有多个 CPU 模块,每个 CPU 模块由多个 CPU组成,并且具有独立的本地内存、 I/O 槽口等,模块之间通过互联模块通信,开发应用程序时需要尽量减少不同 CPU 模块之间的信息交互;

非一致存储访问:访问本地内存的速度将远远高于访问远地内存 ( 系统内其它节点的内存 ) 的速度


MPP(Massive Parallel Processing):海量并行处理结构,由多个 SMP 服务器 (节点 ) 通过节点互联网络连接而成,每个节点只访问自己的本地资源 ( 内存、存储等 ) ,是一种完全无共享 (Share Nothing) 结构,理论上其扩展无限制。
每个 SMP 节点也可以运行自己的操作系统、数据库等。

地址空间

地址空间是一个抽象概念,可以当成一个数组理解,每个数组元素是一个字节,而这个数组的长度由地址空间的地址长度决定,比如32位的地址空间大小有2̂32=4294967296字节(4G),有效地址空间是04294967295,16进制0x000000000xFFFFFFFF。

地址空间分两种:虚拟地址空间(Virtual Address Space)和物理地址空间(Physical Address Space),物理地址空间是实际存在的,一般通过内存表现,比如计算机只有512M内存,则物理地址的有效部分是0x00000000~0x1FFFFFFF,然后计算机中的一些硬件地址映射到物理空间,剩下的就是可用的共享内存了。

每个进程都有自己独立的虚拟空间,而且每个进程只能访问自己的独立空间,这也就是进程的隔离。进程间是可以通过技术实现通信的。

分段

分段(Segmentation):把一段程序(进程)所需要的内存空间大小的虚拟空间映射到某个地址空间,即虚拟空间中的每个字节相对于物理空间中的每个字节。这个映射过程由软件来设置,比如操作系统设置这个映射函数,实际的地址转换由硬件完成。

如图,A访问地址0x00001000,CPU会将这个地址转换成实际的物理地址0x00101000

分段对内存的分配按照程序为单位,粒度比较大,如果内存不足,被换入换出到磁盘的是整个程序,可能会造成大量的磁盘操作,从而影响速度和体验。

地址转换

虚拟存储的实现需要依靠硬件的支持,对于不同的CPU来说是不同的,一般采用一个叫MMU(Memory Management Unit)的部件来进行页映射。

MMU一般集成在CPU内部,非独立部件。

在页映射模式下,CPU发出的是Virtual Address,即程序看到的是虚拟地址,经过MMU转换以后就变成了Physical Address。

根据程序的局部性原理(当程序运行时,在某个时间段内只是频繁用到了一小部分数据),人们想到了更小粒度的内存分割和映射的方法,大大提高了内存的利用率,即分页(Paging)。

分页

分页的基本方法是人为的把地址空间等分成固定大小的页,每一页的大小由硬件决定或硬件支持多种大小的页由操作系统选择决定页的大小。常见的是4K,如32位系统,虚拟空间按4K分的话,有2̂32/(4*1024)=1048576个页。

DP(Disk Page):磁盘页;VP(Virtual Page):虚拟页;PP(Physical Page):物理页;
图中虚拟页被映射到同一个物理页,即内存共享

上图,有两个进程Process1和Process2,每个虚拟空间有8页,每页大小1K,有效的物理空间只有6页。运行时加载需要的数据到内存(进程中的部分虚拟页面被映射到物理页面)。
如Process1的VP0、VP1、VP7映射到PP0、PP2和PP3,VP4、VP5和VP6尚未被用到或访问,访问VP2、VP3时,它们不在内存中,这时硬件会捕获到页错误(Page Fault),然后操作系统会接管进程负责将它们从磁盘读出来并且装入内存,然后将装入的页与VP2和VP3建立映射关系。


  1. https://www.cnblogs.com/yubo/archive/2010/04/23/1718810.html ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值