计算机组成原理复习——第三章存储器

(一)存储器的分类

按照在计算机中的作用:

主存:与CPU进行通过主存总线进行数据交换,CPU可以直接访问主存,一般的数据和指令也存放在主存中。

辅存/外存:当主存的空间不够时,将一些不常用的进程转移到外存存储,在需要时调入主存。

高速缓冲存储器cache:存放CPU常用的指令和数据。

按照存取方式:

1.随机存储器:RAM,任何一个存取单元都可以随机存取,常用作主存和cache。

2.只读存储器:ROM,存储器的内容只能被读不能被写,存放系统程序,断电后信息仍旧保存。

3.串行访问存储器:只能按照某种顺序存取,如磁带。

(二)存储器的层次化结构

cache-主存层 + 主存辅存层

cache-主存层 解决CPU和主存速度不匹配问题

主存-辅存层 解决主存容量小的问题,并且形成了虚拟存储器

(三)半导体随机存取存储器

1.SRAM:触发器存储信息,速度快,常用作cache,给出数据线和地址线,即可计算总容量。

2.DRAM:电容存储信息,速度慢,常用作主存

3.只读存储器:ROM。

(四)主存储器

主存与CPU的连接:系统程序区用ROM,用户程序区用RAM,根据CPU的地址线和数据线,选择合适的RAM/ROM,或者RAM进行位扩展、字扩展、位和字同时扩展。

提高存储器访问速度的措施:低位交叉编址访问存储体。

(五)高速缓冲存储器

1.cache的基本工作原理

局部性原理,cache中存放最近访问过的指令和数据以及访问的数据地址空间附近的数据。

2.cache和主存之间的映射方式:

1.全相联映射:看成是八路(若cache有8块)组相连映射。

2.直接映射:看成是1路组相连映射

3.组相连映射:组内随意放,组间按照对组数取余放,如cache有八块,采用二路组相连映射,若此时cache的第三组有两个位置,放的是任意两个对4取余为3的块。

3.cache与主存块之间的替换算法

1.随机替换算法

2.LRU最近最久未使用 借助的硬件:栈或者寄存器

3.LFU:最不经常使用算法,借助计数器计算该块被访问的次数

4.先进先出算法

4.cache写策略

命中时

1.写回法:用一个脏位标记cache中的数据被修改过,再被替换时再对主存中的内容进行更新。

2.全写法:对cache中的数据进行修改时,同时对主存中的内容进行修改。

未命中时:

1.写分配法: 放入cache中进行修改,再搭配写回法,在被替换时对主存内容进行更新。

2.非写分配法:对主存中的内容进行更新,不放入cache,配合全写法。

(六)虚拟存储器

1.虚拟存储器的基本概念:

某个进程在运行时,进程所需的空间分为用户空间和内核空间,用户空间分别是堆区(存放动态分配的变量,如new,malloc)、栈区(存放临时变量、函数调用)、初始化数据段(存放初始化的全局变量和静态变量)、未初始化数据段、代码段(存放的是机器语言指令)、共享库的存储映射区(多个进程共享一些函数)。如 c语言中,语句 int a[20] ,就表示该进程中的栈区连续分配了20个4字节的存储单元。

一个程序要执行,要进行编译、链接、装入三个环节。

编译:一个程序经过编译,就由源语言转化成了机器语言,产生了目标文件也称为目标模块(.o文件或者.obj文件)。

链接:这些.o文件再和标准库文件进行链接,生成exe程序,也就是可执行程序。

链接分为三种:

静态链接,指的是在将目标模块装入内存时,就将所有的标准库文件一起装入内存(即使当前目标模块可能没有用到某些标准库文件),生成一个庞大的可执行文件,会占用很大的内存空间。

装入时动态链接:指的是在将目标模块装入内存时,将有调用关系的标准库文件一起装入内存,生成可执行文件,占用空间小一点,但运行速度比静态链接慢一点。

运行时动态链接:指的是在目标模块不仅装入内存而且运行到该目标模块时,才将有调用关系的标准库文件调入内存,占用空间最小,运行速度最慢。

装入也分为三种:

静态装入:在编译的时候,就生成真正的物理地址,将进程中涉及的各个数据装入到真正的物理地址中。

动态装入:装入之前在虚拟地址空间,虚拟地址空间的首地址为0,装入的时候让逻辑地址加上一个偏移量,为整个程序分配连续的空间进行装入。

动态重定位装入:装入的时候各个模块之间可以分开存储,但模块内部还是连续存储,借助重定位寄存器找到各个模块的真实物理位置。

有了动态重定位装入,各个模块可以分开存储,由此当所有模块无法完全放入主存中时,就可以将部分模块移动到外存中。如果此时需要用到某个模块,其调用过程如下:

首先根据该模块的虚拟地址,由虚拟页号去快表(快表不是主存的一部分)和页表中找对应的虚拟页号和真实页号的映射关系,若快表中存在记录则可以迅速查找到真实页号;若快表中没有,则需要到页表(页表在内存中,需要访问内存)中找到真实页号;若页表中也没有找到映射关系,则说明此页面不在主存中,产生缺页中断,需要到外存中找到该页面,将该外存中的页面调入内存,此时涉及到页面置换的算法(如LRU,clock算法)。调入到内存中即可进行访问,若产生了写操作,再用写策略(写回法、全写法)进行写回即可。

当进程所需要的空间大于主存时,将暂时不需要用到的数据放入外存,等到需要的时候进行页面替换,替换到主存中进行使用,使得用户感觉自己所用的主存非常大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值