zoukankan      html  css  js  c++  java
  • 【计算机组成】存储系统

    存储系统层次结构

    主存速度缓慢的原因:主存增速与 CPU 不同步,执行指令期间多次访问主存
    主存容量不足的原因:

    • 存在制约主存容量的技术因素:如由 CPU、主板等相关技术指标规定了主存容量
    • 应用对主存容量需求不断扩大:window98 -- 8M,windows 8 -- 1G

    存储体系结构化层次:CPU -- Cache1 -- Cache2(解决速度) -- 主存 -- 辅存(解决容量)
    存储体系结构化层次理论基础:

    • 时间局部性:程序体现为循环结构
    • 空间局部性:程序体现为顺序结构

    主存中的数据组织

    存储字长:主存的一个存储单元所包含的二进制位数,目前大多数计算机主存按字节编址,主要由32为和64位
    数据存储与边界的关系:

    • 按边界对齐的数据存储
    • 未按边界对齐的数据存储

    边界对齐与存储地址的关系:(32 位为例)

    • 双字长边界对齐:起始地址最末三位为 000(8 字节整数倍)
    • 单字长边界对齐:起始地址最末二位为 00(4 字节整数倍)
    • 半字长边界对齐:起始地址最末一位为 0(2 字节整数倍)

    大端与小端存储方式:

    • 大端:最高字节地址是数据地址(0123 存成 0123)
    • 小端:最低字节地址是数据地址(0123 存成 3210)

    存储器分类

    • SRAM存储器:存取速度快,但集成度低,功耗大,做缓存
    • DRAM存储器:存取速度慢,但集成度高,功耗低,做主存

      DRAM刷新方式:集中刷新、分散刷新、异步刷新

    主存容量的扩展

    • 位扩展法:8K * 8位 --> 8K * 32位
    • 字扩展法:8K * 8位 --> 32K * 8位
    • 字位同时扩展法:8K * 8位 --> 32K * 32位

    Cache的基本原理

    cache的工作过程

    • 数据:cpu 与 cache 交换字,cache 与内存交换块
    • 读:命中,不命中
    • 写:写穿策略,写回策略

    写策略

    • 写穿策略(write through):同时写缓存和内存,好像穿过缓存一样。若不命中,先写到主存中,并选择性地同时分配到缓存中(写分配/非写分配)
    • 写回策略(write back):写到缓存后不管了,只有当缓存的内容替换回主存时再管,需有脏位。好像隔段时间后再写回到主存中一样

    地址映射机制

    • 相联存储器:地址本身包含着位置啊可比较的信息啊等内容信息,可根据区分地址内容进行寻址
    • 主存地址 = 块地址 + 块内偏移地址 = (Tag + Index) + 块内偏移地址
    • cache结构
      • 好多行,每行与主存块大小相等
      • 每行 = tag + data + valid + dirty

    三种映射方式

    • 全相联:cache行号 = random(内存块号)
    • 直接相联:cache行号 = 内存块号 % cache行数
    • 组相联:两者结合。8 行 1 路组相联就是全相联,8 行 8 路组相联就是直接相联

    替换算法

    • 先进先出法 - FIFO
    • 最近最不经常使用法 - LFU
    • 近期最少使用法 - LRU
    • 随机替换法

    虚拟存储器

    • 解决问题:主存容量不足。希望向程序员提供更大(比主存大)的编程空间
    • 分类:页式,段式,段页式
    • 页式实现方式:MMU(Memory Management Unit) + 页表 + TLB(Transaction Lookaside Buffer:地址转换后备缓冲器)
    • 页式转换过程:虚拟地址 = 虚拟页号 + 页内偏移 ==> 物理页号 + 页内偏移

    RAID

    • 概念:独立磁盘构成的具有冗余能力的阵列(Redundant Arrays Independent Disks)
    • 核心技术:使用异或运算恢复数据 (x ⊕ y = z --> x = y ⊕ z)
    • 分类:
      • RAID0:条带均匀分布

        磁盘 0 磁盘 1 磁盘 2 磁盘 3
        D0 D1 D2 D3
        D4 D5 D6 D7
        D8 D9 D10 D11
      • RAID1:以镜像为冗余方式

        磁盘 0 磁盘 1
        D0 D0
        D1 D1
        D2 D2
      • RAID3/4:有校验盘

        磁盘 0 磁盘 1 磁盘 2 校验磁盘
        D0 D1 D2 P0
        D3 D4 D5 P1
        D6 D7 D8 P2
      • RAID5:校验信息分布式

        磁盘 0 磁盘 1 磁盘 2 磁盘 3
        D0 D1 D2 P0
        D3 D4 P1 P5
        D6 P2 D7 D8
        P3 D9 D10 D11
      • RAID10/01:10 是先镜像再条带化,01 是先条带化再镜像
      • RAID50:先 RAID5,再条带化

  • 相关阅读:
    hibernate的dialect大全
    jdbc.properties 链接各类数据库的基本配置以及URL写法
    Springboot中redis的学习练习
    博客开通了
    Java String类的hashCode()函数
    Java String类中CaseInsensitiveComparator.compare()方法的实现
    git pull远程所有分支
    Python的权限修饰符
    Tmux快捷键
    __future__模块
  • 原文地址:https://www.cnblogs.com/blknemo/p/12811121.html
Copyright © 2011-2022 走看看