计算机体系结构


前言

计算机体系结构:


一、存储器的层次结构

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
MMU(内存管理单元) 和 TLB 是一个硬件模块,负责虚拟地址到物理地址的转换。

1.1 设计思想

在这里插入图片描述
不以字节内容回复给你,节省时间,提升效率。

1.2 局部性原理

  1. 时间局部性:
    被引用过的存储器位置 很可能在之后被多次引用。
  2. 空间局部性:
    被引用过的存储器位置的附近位置 很可能在之后被多次引用。
    在这里插入图片描述

2 寄存器

CPU可能包含几十个寄存器,每个寄存器存储32/64/128 bit值,这些寄存器分为通用寄存器和一些特殊用途的状态寄存器(如:标识位寄存器,栈寄存器,)。

3 cache

为什么引入 cache?
因为CPU与主存之间的性能差距逐渐增大,CPU要花费大量的时间来等待,所以引入cache作为主存数据的缓存。

当CPU试图从主存中读数据的时候,会首先根据地址查找对应数据是否缓存在cache 中。 如果存在(cache hit),则直接从cache中拿数据返回给CPU。否则(cache missing),需要从主存搬到cache,再从cache拿到CPU。

3.1 cache的基本结构

在这里插入图片描述
在这里插入图片描述

3.2 cache分类

根据E的不同可将cache分为3类:

  • 直接映射cache( E = 1)
  • E路组相连cache ( 2<= E< C/B)
  • 全相联cache( E = C/B )
3.2.1 直接映射cache在这里插入图片描述

举例:
cache thrash:cache反复的加载(会造成效率很低)和驱逐相同的行。
在这里插入图片描述

3.2.2 E路组相连cache

确定了set后,需要用 tag 遍历组中的每一行。
替换策略:
LFU:最不常使用策略
LRU:最近最少使用策略
在这里插入图片描述

3.2.3 全相联cache

只适合做比较小的缓存,比如TLB
在这里插入图片描述

3.3 cache 读/写操作

读操作

cache命中,返回data给CPU.
cache缺失,从低一层获取,再返回给CPU

写操作

写命中:

  1. 直写: 立即将新的块写到低一层缓存中.
  2. 写回: 只有当要被替换时,才写到低一层缓存中.
    写不命中:
  3. 写分配:先加载低一层的块到cache中,变为写命中,然后再写
  4. 非写分配: 避开高速缓存,直接写到低一层中。

3.4 core i7 cache结构

D-cache (data-cache);I-cache (instruction指令-cache)
在这里插入图片描述

4 虚拟内存

  • 为什么需要虚拟内存?

当多个进程运行时,会共享CPU和内存资源。如果没有统一的管理者,势必会产生混乱。

  • 什么是虚拟内存?

它是一个计算机内存管理技术,通过硬件和操作系统的结合,为每个进程提供一个连续的,私有的地址空间

4.1 基本概念

物理地址(PA): 物理内存地址,比如4GB内存.
虚拟地址(VA): 32/64位操作系统

4.1.1 MMU(memory management unit)

在这里插入图片描述
在这里插入图片描述
虚拟内存技术将物理内存看作是磁盘的缓存。
磁盘与主存传输的最小单元是页(page),虚拟页与物理页大小相等
页表条目(page table entry)与虚拟页对应
页命中和缺页
在这里插入图片描述
在这里插入图片描述
负责虚拟地址到物理地址的转换
地址翻译过程:
命中:

  1. CPU生成VA,送到MMU
  2. MMU生成PTE地址,并从cache/memory中拿到PTE
  3. MMU构造PA,并传给cache/memory.
  4. cache/memory返回请求的data.
    缺页:
    1,2 同
  5. 有效位为0,触发缺页异常处理程序4.页面交换,并更新PTE.
  6. 返回原来进程,CPU再次发送VA给MMU.
4.1.2 TLB(translation lookaside buffer)

在这里插入图片描述
把PTE 放进 TLB中,MMU可以直接从TLB中取出,如果没有,则从memory中拿出PTE。

4.1.3 页表(PT)

页表(PT)是常驻内存。
假设32位地址空间,4KB的页,4B的PTE。
那么这个常驻内存大小就是4MB,比较占内存。

所以设计了多级页表,只有第一级页表才常驻内存,其他则放在磁盘虫,只有被需要时才调入内存.
在这里插入图片描述

4.2 cache与虚拟内存

Cache通过地址访问,那这个地址是虚拟地址还是物理地址?
这里面会根据tag和index分别定义.
最常用的是PIPT(Physically Indexed Physically Tagged)可能是物理地址
也有VIPT(Virtually Indexed Physically Tagged).这里就复杂了,不一定是物理地址

5.1 实例1

假设:
存储器访问是1Byte的字
虚拟地址位长14bit
物理地址位长12bit
页的大小64Byte
TLB是4路组相连,共16个条目
L1 d-cache是物理寻址,直接映射,块大小4Byte,共16组

根据下图,计算CPU读取地址Ox03d4的数据是多少?
在这里插入图片描述
CPU产生虚拟地址(VA:0x03d4)送给MMU,拆分成VPN,VPN再拆分成TLBT和TLBI,把TLB和VPO结合生成物理地址(PA),MMU送给cache,cache把PA拆分成CT(cache tag)、CI(cache index)、CO(cache offset),最终拿到的data是0x36,cache将data返回给register。(这是再TLB 页表和 cache 都命中的情况下)

假如 TLB 页表不命中,MMU会把VPN发送给Memory,如果PTE的valid为1,则会反馈给TLB并更新和反馈给MMU,则MMU获得PA;如果PTE的valid为0,则会发生缺页,从Hard disk对应的虚拟页替换到Memory里,换完后,再更新PTE。

假如 cache首次不命中,会把物理地址发送给Memory缓存中,下次访问到cache时,就会命中。

5.1 实例2

左图会有4次cache未命中,右图会有4*4次未命中,因此右图运行时间长。
在这里插入图片描述

二、

1.

2.


总结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值