计组那些容易搞混的东西

访存

机器字长 = 机器位数 = 内部数据总线:是CPU一次处理的位数

  • (64位机器,机器字长为64位,1字=64位=8字节)

存储字长 = 外部数据总线根数(MDR) :一次访存取出一个存储字长的数据,所以可能需要多次访存才能进行一次操作

  • 存储字长不等于机器字长,但有些题并未分别清楚给出时默认相等

低体交叉编址和字位扩展

低体交叉编址分为轮流(流水线)和同时执行
判断轮流还是同时需要看存储字长(数据总线宽度)

轮流执行:

此时存储字长 = 1个体的位数

  • 可以理解为多个内存条先后依次执行,每次读出还是1个内存的位数

同时执行:

存储字长 = n个体的位数

  • 并行,理解为n个内存条同时读出,每次读出n个内存的位数
  • 如下的题干中便为并行执行的方式
    【2017 统考真题】某计算机主存按字节编址,由4个64Mx8 位的 DRAM 芯片采用交叉编址方式构成,并与宽度为 32 位的存储器总线相连
  • 【2022.17】某内存条包含8个8192x8192*8位的DRAM 芯片,按字节编址,支持突发(bust)传送方式,对应存储器总线宽度为64位,每个DRAM芯片内有一个行缓冲区,下列关于该内存条的叙述中,不正确的是(C)。(注意DRAM使用地址复用技术)
    A.内存条的容量为512MB
    B.采用多模块交叉编址方式 此处就是同时执行的情况
    C.芯片的地址引脚为26位
    D.芯片内行缓冲有8192x8位

而字位扩展可以穿插在交叉编址中

  • 比如系统要求32K×16b的存储器,通过两个16K×8b的DRAM先扩展为32K×8b,再将两个32K×8b的体进行交叉编址(此情况为同时执行)
  • 也可以系统要求16K×16b的存储器,通过两个16K×8b的DRAM先扩展为16K×16b,再将两个16K×16b的体进行交叉编址(此情况为轮流执行)

编址,寻址

字节进行编址,可以按或者字节进行寻址
编址则只能按字进行寻址

  • cpu有20根地址线和32根数据线,按字节编址,按字节和字寻址,寻址范围分别是多少?
    (注意此处默认了机器位数 = 存储字长 = 32位)
    按字节寻址,寻址范围:220=1MB
    按字寻址,32根数据线可以看做存储字长有32位,4个字节,这4个字节的区分,需要从20根地址线拿出两根作为字内寻址,这样剩下18根数据线来寻址,寻址范围:218(0~218-1)
  • 设有一个1MB容量的存储器,字长32位,问:按字节编址,字编址的寻址范围以及各自的寻址范围大小?
    如果按字节编址,则
    1MB =220B
    220B/1B=220
    地址范围为0~220-1,也就是说需要二十根地址线,寻址范围大小为2^20=1M
    如果按编址,则
    1字=32bit=4B
    220B/4B=218
    地址范围为0~218-1,也就是说我们至少要用18根地址线,因此按字编址的寻址范围是218

页-主存-Cache

逻辑地址

通过逻辑页号找到该页对应的页框号(物理页号),以它为前n位,在后面n位后加上页内地址即为主存地址

逻辑页号(12) 页内地址(11)

页面大小2KB=211=页内地址位数,逻辑页号(虚页号)=12位
逻辑(虚拟)地址空间8MB=223,则页内地址为11位

主存地址

物理页号(3) 页内地址(11)
主存块号(6) 块内地址(8)
标记+行号(组号)

主存地址空间为16KB=214,物理页号为14-11=3位
主存块内地址 = Cache行长 = 28

Cache

行长(8)

cache行长只代表块内地址位数,标记等信息不参与计算
注意容量和总容量,容量=行长×块数,总容量行长还要加上标记等

脏位 有效位 标记 行长(8)

N组相联 LRU脏位数n: 2n=N

posted @   瓜瓜头  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示