储存系统和结构

存储系统的组成

file

RAM

file

基本结构

file

译码器驱动电路

  • 译码器:将地址总线的地址码转换成与之对应的译码输出线上的有效电平。
  • 驱动器:提供驱动电流驱动相应的读写电路。

I/O和读写电路

完成被选中储存单元中各位的读出和吸入操作。

  • 读入放大器
  • 写入放大器
  • 读写控制电路

读写控制线

控制器传递控制信号到主储存器。

ROM

file

储存单元

file

  • 位(记忆单元):二进制数基本单位,储存器储存信息的最小单位。
  • 储存字:作为一个整体被存入或取出的二进制数。
  • 储存单元:储存储存字的空间,是CPU可以操作的最小储存单位。
  • 储存地址:储存单元的编号。

编址

x86架构使用小端方案。在不同方案的计算机上传输数据以及进行底层编程时,需要注意编址方案。

  • 大端方案:字地址等于最高有效位字节地址
  • 小端方案:字地址等于最低有效位字节地址

数据在主存中的存放

目前大部分储存器采用字节编址,而储存字长一般为8个字节,也就是说一个储存字内含八个内存地址,一个储存周期最多读写64位数据。

  • 紧缩存放:存储一个数据可能要花费两个储存周期(如第一排后面的绿块就跨越了两个储存字)。
    file
  • 储存字字边界存放
  • 整数边界存放
    file

    $0_2$的含义:2的整倍数
    $00_2$的含义:4的整倍数

在C语言中,可以通过#prama pack(...)改变对齐方式。

储存器的主要技术指标

储存容量的表示:以字节编址的一般以字节数来表示,以字长编址的一般以字长数*字长来表示。

半导体RAM和ROM

RAM芯片分析

RAM芯片

主要的外引脚:

  • 地址线:$A_i$,单向输入。
    DRAM中将地址线等分为相同两部分,先后从相同引脚送入,$\overline{RAS}$(行地址选通信号)和$\overline{CAS}$(列)。DRAM增加一条地址线即增加两位地址,四倍容量。
  • 数据线:$D_i$,可输入可输出。
  • 片选线:$\overline{CE}$或$\overline{CS}$。
    属于控制线,决定芯片是否被选中。DRAM中,可以被$\overline{RAS}$和$\overline{CAS}$代替
  • 读写控制线:$\overline{WE}$(1为读允许,0为写允许)或$\overline{OE}$(读允许)/$\overline{WE}$(写允许)。
    属于控制线,控制进行读操作还是写操作。
  • $V_{CC}$
  • $GND$

地址译码方式

单译码

又称字选法,对应字结构的储存器。

file

容量为M个字,每个字为b位的储存器,排列成$M\times b$的矩阵,每行对应一个字。K位地址线经过地址译码器后,产生$2^k$条字线(因为K位地址线有K个二进制位,可以表示$2^k$个地址),一条字选线选中一个字。片选线控制读写控制电路,读写控制电路可以选中字的某一位。

存在的问题是外围电路太多,且字数大大超过位数时,物理结构会变成纵向很长而横向很窄的不合理结构。

双译码

又称重合法,可以对应位结构,还可以对应字段结构。将$K$位地址线分为接近相等的两段,分别用于水平和垂直方向的地址译码。

位结构

每次选中一个记忆单元,可以在$Z$方向堆叠芯片,实现记忆单元的扩充(从一位扩展到多位)。

字段结构
  • 一条行选择线管控s个b位长的字。
  • 一条列选择线一次性选择b位数据。
  • K位地址线:$K_x=\log_2M/s,K_y=\log_2s$
    怎么算出来的?
    我们一共有$M$个字,行选择线需要$M/s$根,而传输二进制地址码的$K_x$位地址线一共可以表示$2^{K_x}$个地址,即$2^{K_x}=M/s$,即$K_x=\log_2M/s$。$K_y$同理。

file

该图中,6位行地址线可以对应64个行,一条行选择线同时管控16个4位长的字;4位列地址线可以对应16个列,每条列选择线同时选中4位数据。

典型的RAM芯片记忆单元总数开方后仍是常数。

双译码方式减少了选择线数目和驱动器数目,储存容量越大,其效果越明显。

主存的主要技术指标

储存容量

存取速度

  • 存取时间Ta:启动储存器到完成操作
  • 存取周期Tm:两次连续访问存储器操作之间所需的最小时间间隔。
  • 贮存带宽Bm:每秒从主存进出信息的最大数量。位/秒。

可靠性

功耗

性价比

Cache

地址映像

file

全相联映像

主存中任意一个块均可映像装入到Cache中任何一个块的位置上。如上图,主存块号会被变换为cache块号。

  • 变换速度慢,成本高,实现困难
  • 灵活、冲突概率最低、空间利用率最高

直接映像

主存中的一个块只能唯一对应cache中的一个位置。如上图,主存地址被分为区号和块号,变换时区号直接被切掉(取模)。

$K=I\mod 2^c$

  • 不够灵活,冲突概率最高,空间利用率最低
  • 成本低,容易实现,地址变换快

组相联映像

将Cache分成大小相同的组,主存中的某一块可以装入对应的某个组内任意一个块内,即组间直接映像,组内全连接映像。注意,当下工业上采用的直接映像是顺序的。

file

Cache地址由组号、块号、块内地址组成;主存地址由区号、块号、块内地址组成。主存地址的块号位数等于Cache地址的组号位数,因为组间采取直接映像,即$J(Cache块号)=I(主存块号)\mod Q(Cache组数)$,这样能把主存地址均匀分配到Cache的组中。

替换算法

  • 随机算法
  • FIFO先进先出:易实现、开销小,但可能会替换掉一些经常使用的程序块(如循环程序)
  • LRU近期最少使用:最好、最复杂

替换策略

  • 写直达法:写操作必须同时写入Cache和主存。
  • 写回法:用标记位标注Cache中的内容是否发生改变,在某个块即将被替换时,检查标志位,如果发现被修改过,则将其写回主存再替换它。
    速度快但是因为没有随时同步数据,可能出错(为啥会出错??)

虚拟储存器

和cache很像。

页式

虚地址:虚页号+页内地址

file

红框处完成一次拼接。
然后将获取到的实页号拼接到业内地址上,就获得了实际地址。

段式

段页式

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇