计算机存储系统(学习摘录)
KEY:内存管理 虚拟内存 分层思想 管理思想
分层组织
计算机记忆(存储)系统被组织层次结构,高层高速但昂贵容量小,低层慢速但廉价容量大。由高层到低层分别名之寄存器堆、高速缓存(cache)、主存(main memory)和外存(secondary memory)。那么为什么记忆系统要层次化呢?如果答案是效率,那么提效的原理又是什么呢?如果原理是传说中的局部性原理(principle of locality),那么它又是如何实现的呢?对系统开发人员与应用开发人员有什么影响呢(明显的是记忆系统分层是对应用开发人员透明的,他们感觉不到分层的存在)?
高速缓存
高速缓存作为一块从内存到CPU的缓冲区,用来保存在内存中被频繁使用的数据块。存储系统层次化的一个目标就是提高CPU访问数据的时间,让这个时间尽量逼近高速缓存的速度。这个目标完成的效果取决于三个因素:第一,程序本身的行为特质;第二,高速缓存的容量和组织方式;第三,缓存数据替换的策略(cache replacement policy)。处理器的一个数据引用在高速缓存找到称为“缓存命中(cache hits)”,否则叫“缓存不命中(cache misses)”。发生不命中时,(系统得先将)不命中的数据从内存取出,这个动作会将包含不命中数据的整块数据载入高速缓存(KEMIN:怎么个整块法?配置好的?)。
高速缓存的组织方式决定了CPU搜索缓存的方式。高速缓存可以组织成三种方式:直接映射(direct mapped)、全相联映射(fully associative)和组相联映射(set associative)。直接映射方式无须替换算法,而后两都需要一些策略(FIFO, LRU或其它策略)来决定如何替换不命中的数据块。
虚拟内存
存储系统层次化的另一个目的是利用大容量的外存来扩充主存,这就是所谓的虚拟内存机制。虚拟内存可以让我们把程序运行在一个比较实际内存大的虚拟地址空间内。虚拟内存另一项功能就是实现多道技术,让多个进程共享内存资源。虚拟内存机制的代价是需要额外的空间保存管理信息(像地址映射程序、页表等)、对虚拟地址转换所耗费的时间和发生缺页时的处理时间。
虚存与主存的关系与主存与缓存的关系很相似。由于种相似性,高速缓存与地址转换后备缓冲器TLB( Translation Lookaside Buffer)常常让人很迷惑。实际上,TLB也是高速缓存,一种有特定用途的高速缓存区。我们必须清楚,虚拟地址必须先被转为物理地址才能访问主存的,这也就是TLB的功能所在。虽然同样作为一种缓冲区,高速缓存与(分过页的)主存的功能目标不太一致,高速缓存偏向提高访问速度,而分过页的主存(也就是虚存)更多是扩充主存。
思想
存储器层次化的设计思想是以存储器访问的所谓“局部性”为基础的,包括时间局部性和空间局部性。
P.S.这个以局部性为基础的基础字眼使用我意识到,是局部性的客观存在决定了存储器的层次化设计,不是反之。换句话说,局部性是事物存在的普遍法则,而存储器层次化只是一个特例。
P.S.这局部性思想又让我想起了其它的思想的客观存在性,比如实现并发机制是中断思想……
存储器层次结构的中心思想是,对是每个K,位于K层的更快更小的存储设备作为位于K+1层的更大更慢的存储设备的缓存。换句话说,层次结构中的每一层都缓存来自较低一层的数据对象。
管理
对层次结构中的每一层,必须有某种形式的逻辑照管(manage)缓存(的功能实现)。这个逻辑包括如何划分缓存为块、如何访问缓存、如何判断缓存是否命中,如何用新的数据块替换旧的数据块。这个逻辑可以由硬件、软件或两者的一种结合来实现。
比如,寄存器堆(register file)是位层次结构中的最高层,它比较特殊,是由编译器来“管理”,管理方式如分配寄存器给某变量。这个“管理”逻辑是软件;
再如CPU的一级(L1)及二级(L2)高速缓存是完全靠内置的硬件来“管理”的。这个管理逻辑是硬件;
在实现了虚拟内存的系统里,内存作为外存的缓存,这个虚拟的“缓存”是由操作系统软件和CPU的地址转换硬件(如MMU)共同“管理”的。
还有一个例子,在具有分布式文件系统(比如AFS)的机器里,外存作为整个分布式网络数据库的“缓存”,由本机的AFS客户端进行“管理”。
在作为一个数据的使用者,比如应用开发人员,是不需关心缓存的实现的,缓存机制对他们来是自动的,透明的;但是对系统的管理者,比如操作系统开发人员则必须了解这些“管理”功能的实现原理。
KEMIN:作为一个系统开发人员,接触硬件开发可能性比较小,所以对CPU高速缓存有基本的了解就行了;但系统开发人员很可能参与像编译优化、操作系统移植等工作,所以对这两个“管理”功能实现必须要掌握。
分享到:
相关推荐
文件系统用于组织和管理存储设备上的数据。不同的操作系统可能会使用不同类型的文件系统,但它们都遵循一些基本的原则: - **目录结构**:采用树形结构组织文件和目录。 - **元数据管理**:除了文件内容外,还需要...
总结来说,计算机系统结构的学习涵盖了大量的理论和实践内容,从底层硬件到上层软件,从单一组件到整个系统的交互。这份复习笔记将帮助我们构建对这一复杂系统的全面理解,为后续的编程、系统设计和问题解决奠定坚实...
"计算机科学与技术导论学习笔记" 计算机科学与技术导论是计算机科学领域的基础课程,对计算机科学与技术的概述和介绍。以下是根据给定的文件信息生成的相关知识点: 计算机科学技术概述 计算机科学技术概述是...
这份学习笔记涵盖了数据库系统的基础概念、设计原则以及SQL语言的应用。以下是笔记中的关键知识点: 1. **数据库概述**:数据库是一种有组织地存储和管理数据的系统,提供了数据的结构化存储、数据操作和数据控制等...
不过,可以确定的是,文件标题《计算机操作系统原理笔记》表明该文件是一份学习计算机操作系统的笔记。 由于实际内容无法理解,我将根据标题和描述生成一些关于计算机操作系统原理的一般知识点: 1. 操作系统的...
#### 六、计算机存储系统 - **概述及分类** - **存储层次**: 高速缓存、主存、外存。 - **高速缓存(Cache)**: 位于CPU与主存之间,提高数据访问速度。 - **主存储器(RAM)**: 存放当前运行的程序和数据。 - **...
"计算机网络谢希仁学习笔记" 计算机网络是指连接不同的计算机和设备,通过一定的协议和网络架构,实现数据的传输和共享的系统。下面是该学习笔记的知识点总结: 1. 计算机网络的作用: * 连通性:实现不同计算机...
根据给定的文件信息,以下是对“数据库系统工程师学习笔记”的详细知识点整理: ### 数据库系统工程师学习笔记 #### 1. 计算机发展简史 - **大型机(Mainframe)时期**:始于1946年,标志性的机器如ENIAC等,后续...
以上内容仅是深入理解计算机系统笔记的一部分,完整理解还需要深入学习计算机体系结构、编译原理、操作系统等领域的知识。通过这些理解,我们可以更好地设计、优化和调试程序,提升计算机系统的整体性能。
总结来说,“操作系统课程学习笔记”涵盖了操作系统的基本概念、核心机制、设计原则以及实际应用,是深入理解计算机系统运作、提升编程技能和解决问题能力的宝贵资料。通过学习这些内容,不仅可以提高对计算机系统...
本文《管理系统中计算机的应用学习笔记》将详细探讨计算机技术在现代企业管理中的应用及价值,同时展望未来信息技术的发展趋势。 首先,随着科技的进步,计算机技术的飞速发展对企业管理产生了深远的影响。企业的...
**计算机组成原理学习笔记** 计算机组成原理是计算机科学与技术领域的基础课程,它涉及计算机硬件系统的基本构造和工作原理。本笔记将详细讲解以下几个核心概念: 1. **数据表示与运算** - **二进制系统**: ...
以上是计算机二级学习笔记中的关键知识点总结,涵盖了计算机的历史背景、硬件系统、操作系统、数据结构与算法等方面的内容。通过这些知识点的学习,可以帮助我们更好地理解和掌握计算机的基本原理和技术。
这篇"计算机操作系统考研笔记"旨在帮助备考者深入理解操作系统的基本原理和机制,为考试做好充分准备。 首先,我们要关注的是操作系统接口。操作系统接口是用户与操作系统交互的方式,分为两类:宏观接口和微观接口...
操作系统是计算机系统的核心组成部分,负责管理和控制计算机硬件与软件资源,以提供高效、安全和方便的用户环境。...这份复习笔记详细梳理了操作系统的核心概念,对于理解和学习操作系统原理非常有帮助。
【系统架构设计师】是IT行业中一个关键的角色,其主要...总的来说,系统架构设计师的学习笔记涵盖了系统设计的关键概念和技术,以及计算机网络和操作系统的基础知识,是准备软考系统架构设计师这一资格认证的宝贵资料。
在大学计算机信息系统分析的学习中,数据字典是一个关键的概念,它是对数据流图中的数据流、数据存储、处理过程和外部实体的详细描述。数据字典以数据元素为基本单位,通过组合这些元素来构建复杂的数据结构。这个...
### 操作系统学习笔记知识点详解 #### 一、操作系统的基本概念与特征 1. **概念**: - **定义**:操作系统(Operating System, OS)是控制和管理计算机硬件与软件资源的核心系统软件,它合理地组织计算机工作流程...
文档中的内容较为复杂,包含了大量专业术语和概念,虽然因OCR扫描技术限制存在部分识别错误或遗漏,但可以推断这是一个自学或复习用的计算机系统结构学习笔记,涵盖了从微结构到内存管理、I/O系统设计、中断处理、...
《B站王道操作系统学习笔记》是一份系统阐述操作系统的文档,涵盖了进程管理、内存管理、文件管理等多个关键领域。操作系统作为计算机系统的核心软件,负责管理和控制计算机系统中的各种硬件资源和软件资源,提供给...