初读这本书,是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存储器与虚拟存储器的更多相关文章

  1. 计算机存储负数以及int转byte时-128的出现

    我们看下面这段代码 输出的结果的是128,这个没什么疑问 但是当我们不改变数值仅仅加了一个强制转换后 这时我们会发现结果会变成负的128.这时候我们就要怀疑了,为什么会出现这样的结果呢? 对于这个问题 ...

  2. 计算机存储单位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 ...

  3. 【转】ESXi主机出现“主机上的系统日志存储在非持久存储器中”解决办法

    原址:https://blog.csdn.net/mooncarp/article/details/50923483 当ESXi主机的底层操作系统安装在SD卡上时,在vCenter中配置该主机时,如果 ...

  4. Java 第十一届 蓝桥杯 省模拟赛 计算机存储中有多少字节

    计算机存储中有多少字节 题目 问题描述 在计算机存储中,12.5MB是多少字节? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余 ...

  5. 小老板,我学的计算机组成原理告诉我半导体存储器都是断电后丢失的,为什么U盘SSD(固态硬盘)没事呢?

    什么是闪存: 快闪存储器(英语:flash memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器 存储原理 要讲解闪存的存储原理,还是要从EPROM和EEPROM ...

  6. 基础知识:语言、编程、计算机组成、cpu、存储器

    2019年3月18日一.    语言:一种事物与另外一种事物沟通的介质.              编程语言:程序员与计算机沟通的介质.    编程:把要让计算机做的事用一种编程语言表达出来.    ...

  7. STM32—DMA存储器到外设

    DMA目录 DMA简介 DMA框图 DMA传输数据分析 1.传输的方向 2.传输的数量 3.传输的模式 代码部分 DMA初始化结构体 USART配置函数 DMA配置函数 主函数 DMA简介 DMA(D ...

  8. Linux学习-计算机基础

    Linux 学习-计算机基础 一.描述计算机的组成及其功能. 计算机系统是由硬件(Hardware)和软件(Software )两部分组成. 硬件: 从硬件基本结构上来讲,计算机是由运算器.控制器.存 ...

  9. 『Linux基础 - 1』计算机基础概念

    这篇笔记的知识点结构目录: 认识计算机: (1)什么是计算机; (2)计算机的发展过程 计算机的构成: (1) 计算机硬件系统; (2) 计算机软件系统 二进制: (1) 为什么用二进制 (2) 二进 ...

随机推荐

  1. php 修改图片大小

    <?php set_time_limit(0);ini_set("memory_limit","500M");$dir = dir('./');while ...

  2. java IO流 (九) Path、Paths、Files的使用

    1.NIO的使用说明:>Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API,可以替代标准的Java IO AP.>NI ...

  3. redis(十六):Redis 安装,部署(LINUX环境下)

    第一步:下载安装包 访问https://redis.io/download  到官网进行下载.这里下载最新的4.0版本. 第二步:安装 1.通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压 ...

  4. 数据可视化之powerBI技巧(三)这个Power BI技巧很可爱:利用DAX制作时钟

    周末放松一下,给大家分享一个小技巧,仅利用DAX制作一个简易的时钟. 时钟效果如下: 这个时钟的制作只需一个度量值,你信吗? 事实上确实如此,制作步骤介绍如下: 1,新建参数,生成一个数字序列作为小时 ...

  5. 数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数

    https://zhuanlan.zhihu.com/p/64415763 使用Power Query进行复杂一些的数据处理,离不开M函数,目前已经有超过700个函数了,基本上各式各样的数据处理需求都 ...

  6. It's time for Django

    本节内容 Django流程介绍 Django url Django view Django models Django template Django form Django admin Django ...

  7. drf☞jwt自动签发与手动签发

    目录 一.自动签发 二.手动签发 一.自动签发 urls from rest_framework_jwt.views import obtain_jwt_token # 使用jwt自带的登录视图 ur ...

  8. node -v node is not define

    安装node js  踩过的坑 应该是在CMD 命令里执行 node -v 我却傻傻的跑到 node.js 里执行 node -v 结果就报 node is not define 真相如下图!!!

  9. django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.解决办法

    "E:\API_Manager_PlatForm\venv\lib\site-packages\django\db\backends\mysql\base.py"在这个路径里件把b ...

  10. 使用PowerShell自动编译部署前端

    前言 最近在开发一套管理系统,做了前后端分离. 后台使用的是Asp.Net Core 3.1 前端使用的是Vue+Ant Design 自己搞了一台云服务器,打算把系统部署到云服务器上.以供外网访问. ...