《计算机存储与外设》 1Cache存储器与虚拟存储器
初读这本书,是2020年3,4月吧,以前学的大多数处理器,balabala的,虽然也有介绍储存器的,但总是不是很详细,主要还是关注cpu等计算部件或者总线等事物,就如同这本书中所写,人们往往可以很清楚的描述Intel处理器与AMD处理器的区别,但是对各种存储器却总是不甚熟悉。
寄存器是以与CPU相同的方法制备的,与CPU的时钟频率相同,且与CPU其他部分之间的数据通路都较短,此外,片上寄存器可以直接被CPU访问,而访问其他外部存储器都需要通过一个过程,包括存储器管理,地址翻译以及复杂的数据缓冲和控制机制。
Cache相当于位于内存和寄存器之间的缓冲区,这是实际存在的,硬件,计算机管理;而虚拟存储相当于内存和硬件之间的缓存机制,这并不实际存在,由操作系统管理。

Cache大家都比较熟悉,主要利用了访问的局部性原理(时间局部性与空间局部性)。

几种降低Cache失效率的方法
1.代码层面,编写具有良好局部性的代码
2.取指策略:如按需获取,预取,选择性获取。
按需获取在失效后调入所需块,这是一种最简单的选择。
预取策略预测未来的Cache需求(例如,如果没有缓冲块i+1,但访问块i时也调入第i+1块)。实现预取算法有许多可能的方法,如选择性获取策略在主存储器的部分内容不能被缓存的情况下使用。例如,在多处理器系统之中,由多个处理器共享的部分不应该被缓存,如果这些数据被缓存而处理器修改了存储器中的拷贝,Cache和存储器中的数据将不再保持一致。
3.多级Cache
虚拟存储器和存储器管理
这些概念在《深入理解计算机系统》和《操作系统》之中已有较为完备的介绍,在此只列下大概。
存储器管理是操作系统和硬件的切合点,它关注的是管理主存储器和磁盘,可以认为它是一种拓展的Cache技术。
虚拟存储空间是逻辑地址空间的同义词,编写程序中,我们不用考虑实际的物理地址,而是认为地址都是从0开始的即可,且可以编写超过主存的软件,给用户一个无穷大空间的错觉,这些是由操作系统帮助完成的。

处理器逻辑地址空间的大小与指定操作数的寻址方式无关。他也与程序是使用高级语言,汇编语言还是机器代码无关。在32位系统中,处理器不能指定4GB以外的逻辑地址。操作系统32位主要是指其寄存器的位数。
物理地址空间由处理器使用存储器系统中所有的实际地址位置构成。该存储器不是抽象的,是真正实现的。换句话说,系统的主存储器构成的物理地址空间。计算机逻辑地址空间的大小由指定地址所需得到位数决定,而物理地址空间的大小通常只受其成本限制。
存储器管理系统的基本目的如下:

虚拟存储器主要满足(1)(2)需求
其主要有4个作用:支持比物理空间更大的逻辑存储空间,实现逻辑地址到物理地址的映射,为逻辑地址空间中运行的任务分配物理存储器,更加方便的建立多任务的系统。
1.存储器管理与多任务

存储器管理单元将程序员选择的逻辑地址映射到物理存储空间,而操作系统负责建立逻辑空间到物理地址的映射表。存储器映射的一个强大功能是,每个逻辑存储快可被赋予各种权限。例如,存储器可以是只读、只写、只能通过操作系统或给定的任务访问或在一组任务之间共享。通过确保物理存储器只能被预先定义的任务访问,可以确保一个任务的执行不会导致另一个任务崩溃。有两种实现存储器管理的基本方式。使用固定大小的存储块,称为页,另一种使用可变大小的存储快,称为段
2.地址翻译
存储器管理提供了两种不同的服务。第一种是将逻辑地址映射到可用的物理存储器之中,第二种功能发生在物理地址耗尽之时,由于数据不在内存之中,逻辑地址到物理地址的映射不能完成。

3.二级表
由于现在的内存很大,如果只使用1级页表,将会导致巨大的页表,所以引入了2级页表,使用多级页表实现地址转换可以避免使用大容量的页表。
下面是一个二级页表示意图

《计算机存储与外设》 1Cache存储器与虚拟存储器的更多相关文章
- 计算机存储负数以及int转byte时-128的出现
我们看下面这段代码 输出的结果的是128,这个没什么疑问 但是当我们不改变数值仅仅加了一个强制转换后 这时我们会发现结果会变成负的128.这时候我们就要怀疑了,为什么会出现这样的结果呢? 对于这个问题 ...
- 计算机存储单位KB,MB,GB,TB,PB,EB,ZB,YB后面是什么?
关于计算机存储单位KB,MB,GB,TB,PB,EB,ZB,YB后面是什么? 我们知道Kb是1000的1次方,所以 MB就是1000的2次方(106) GB就是1000的3次方(109) TB就是10 ...
- 【转】ESXi主机出现“主机上的系统日志存储在非持久存储器中”解决办法
原址:https://blog.csdn.net/mooncarp/article/details/50923483 当ESXi主机的底层操作系统安装在SD卡上时,在vCenter中配置该主机时,如果 ...
- Java 第十一届 蓝桥杯 省模拟赛 计算机存储中有多少字节
计算机存储中有多少字节 题目 问题描述 在计算机存储中,12.5MB是多少字节? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余 ...
- 小老板,我学的计算机组成原理告诉我半导体存储器都是断电后丢失的,为什么U盘SSD(固态硬盘)没事呢?
什么是闪存: 快闪存储器(英语:flash memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器 存储原理 要讲解闪存的存储原理,还是要从EPROM和EEPROM ...
- 基础知识:语言、编程、计算机组成、cpu、存储器
2019年3月18日一. 语言:一种事物与另外一种事物沟通的介质. 编程语言:程序员与计算机沟通的介质. 编程:把要让计算机做的事用一种编程语言表达出来. ...
- STM32—DMA存储器到外设
DMA目录 DMA简介 DMA框图 DMA传输数据分析 1.传输的方向 2.传输的数量 3.传输的模式 代码部分 DMA初始化结构体 USART配置函数 DMA配置函数 主函数 DMA简介 DMA(D ...
- Linux学习-计算机基础
Linux 学习-计算机基础 一.描述计算机的组成及其功能. 计算机系统是由硬件(Hardware)和软件(Software )两部分组成. 硬件: 从硬件基本结构上来讲,计算机是由运算器.控制器.存 ...
- 『Linux基础 - 1』计算机基础概念
这篇笔记的知识点结构目录: 认识计算机: (1)什么是计算机; (2)计算机的发展过程 计算机的构成: (1) 计算机硬件系统; (2) 计算机软件系统 二进制: (1) 为什么用二进制 (2) 二进 ...
随机推荐
- cookie与token
cookie: 登陆后后端生成一个sessionid放在cookie中返回给客户端,并且服务端一直记录着这个sessionid,客户端以后每次请求都会带上这个sessionid, 服务端通过这个ses ...
- SpringBoot入门详细教程
一.SpringBoot入门 1.SpringBoot简介 SpringBoot是整个Spring技术栈的整合,来简化Spring应用开发,约定大于配置,去繁从简,just run 就能创建一 个独立 ...
- java 数据结构(一):java常用类 一 String类
java.lang.String类的使用1.概述String:字符串,使用一对""引起来表示.1.String声明为final的,不可被继承2.String实现了Serializa ...
- Python面向对象01 /面向对象初识、面向对象结构、类、self、实例化对象
Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象初识 2. 面向 ...
- 绕过CDN查找真实IP方法
0x01 验证是否存在CDN 方法1: 很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有:http://ping.china ...
- 关于Excel去空格问题
做开发,导入导出是一项基本功能,基本每个系统都有. 导入日期字段难免碰到因为空格问题引起的日期格式化Bug 下面分享一项Excel识别空格以及去空格的方法. 一:识别空格技巧(不要相信你的眼睛,有些空 ...
- 第五章:理解RemoteViews
RemoteView应该是一种远程View,表示的是一个View结构,他可以在其它进程中显示. 在android中使用场景有两种:通知栏和桌面小部件 5.1 RemoteView的应用 5.1.1 R ...
- 计算思维(Computational Thinking)在少儿编程中的体现
本文主要针对少儿编程从业人员及正在学习编程的学生家长 大家好,我是C大叔,国内早期的少儿编程从业人员.一直以来都是在做scratch,JavaScript,python以及信息学奥赛C++的讲师,教研 ...
- C#中的类与对象
类:说白了就是类型,是对具体事物的一种抽象总结. 对象:一个具体的事物. 类与对象的关系,类实例化就会得到一个对象,同样一个对象也应该属于某一个类.例如张三这个人,他是一个对象,同时他属于人类,在程序 ...
- 二进制图片blob数据转canvas
javascript是有操作二进制文件的方法的,在这里就不详述了. 而AJAX的核心XMLHttpRequest也可以获取服务端给的二进制Blob. 可以参考: XMLHttpRequest Leve ...