存储器
存储器
介绍
计算机中的存储器是指用于存储数据和程序的硬件设备。
在计算机系统中,存储器的层次结构往往是由快到慢排列的,越靠近CPU的存储器速度越快,容量也越小,而越靠近外部的存储器速度越慢,容量也越大。通过合理地利用存储器层次结构,可以提高计算机系统的性能和效率。
存储器的层次结构
- CPU内部 通用寄存器
- Cache
- 主存储器
- 联机磁盘存储器
- 脱机光盘、磁盘存储器
存储器的分类
按照存储器所在的位置分类
按照存储器所在的位置可以将存储器分位内存和外存。
- 内存:内存也称为主存或随机存储器(RAM),是计算机中用于存储正在运行的程序和数据的临时性存储器。内存的读写速度非常快,但是存储容量相对较小,而且在计算机关闭或断电后,内存中的数据就会丢失。内存可以分为静态随机存储器(SRAM)和动态随机存储器(DRAM)两种类型。
- 外存:外存是计算机中的长期存储器,它用于存储用户创建的数据和程序,以及操作系统和其他系统文件。外存的容量通常比内存大得多,但读写速度相对较慢。外存可以分为磁盘存储器、光盘存储器和闪存存储器等多种类型。外存中的数据可以长期保存,在计算机关闭或断电后也能够保持不变。
按照存储器的构成材料分类
按照存储器的构成材料可以将存储器分为磁存储器、半导体存储器和光存储器。
- 磁存储器:磁存储器是一种使用磁性介质来存储数据的存储器。它的基本原理是通过在磁性介质上记录磁场来表示二进制数值,然后通过磁头读取磁场并将其转换回二进制数值。磁存储器包括硬盘、软盘、磁带等。相对于其他存储器,磁存储器具有存储密度高、成本低、可擦写、可重写等优点,但同时也存在着读写速度较慢、易受磁场干扰、寿命较短等缺点。
- 半导体存储器:半导体存储器是一种使用半导体材料构成的存储器,它包括DRAM、SRAM、闪存等。相对于磁存储器,半导体存储器具有读写速度快、抗干扰能力强、寿命长等优点,但同时也存在着存储密度低、成本高、易受电磁波干扰等缺点。
- 光存储器:光存储器是一种使用光学媒介来存储数据的存储器。它的基本原理是通过激光在光学介质上记录和读取信息。光存储器包括CD、DVD、蓝光光盘等。相对于其他存储器,光存储器具有存储密度高、容量大、光盘可擦写、可重写等优点,但同时也存在着读写速度较慢、光盘易受划伤或污染等缺点。最近几年,随着技术的发展,光存储器的容量和速度也不断提高,并且在某些领域,如长期存储和数据备份等方面具有很大的优势。
高速缓存
地址映像方法
高速缓存(Cache)是一种存储器,位于CPU和主存储器之间,其目的是提高CPU访问主存储器的速度。由于高速缓存容量有限,因此需要一种有效的方法来确定哪些数据应该存储在高速缓存中。这就需要使用地址映像方法。
地址映像方法是一种将主存储器地址映射到高速缓存地址的技术。当CPU访问主存储器时,高速缓存会将该地址映射到相应的高速缓存行中。如果该地址对应的数据已经被缓存,则高速缓存会将数据返回给CPU;否则,高速缓存会从主存储器中读取该数据,并将其存储到相应的高速缓存行中。
常见的地址映像方法有以下三种:
- 直接映像(Direct Mapping):直接映像是一种简单的地址映像方法,它将主存储器的地址直接映射到高速缓存中的一个唯一的位置。例如,如果高速缓存有8个行,则主存储器地址00000FFF可以映射到高速缓存行0,10001FFF可以映射到高速缓存行1,以此类推。这种方法易于实现,但可能会导致高速缓存行的冲突。
- 全相联映像(Fully Associative Mapping):全相联映像是一种比较灵活的地址映像方法,它允许任何主存储器地址映射到任何高速缓存行。这种方法需要在高速缓存中维护一张标记表,用于记录每个高速缓存行中存储的主存储器地址。全相联映像可以有效地避免冲突,但需要更多的硬件资源来实现。
- 组相联映像(Set Associative Mapping):组相联映像是一种介于直接映像和全相联映像之间的方法。它将高速缓存划分为多个组,每个组包含多个高速缓存行。例如,如果高速缓存有8个组,每个组包含2个高速缓存行,则每个组中的2个行可以映射到任何主存储器地址。这种方法可以在一定程度上避免冲突,同时也减少了标记表的大小。
替换方法
高速缓存(Cache)中的替换方法是指当高速缓存已满时,需要替换一些缓存行以腾出空间存储新的数据。常见的替换方法有以下几种:
- 随机替换(Random Replacement):随机替换是一种简单的替换方法,它随机选择一条缓存行进行替换。这种方法易于实现,但可能会导致高速缓存中存储的数据没有利用起来。
- 先进先出替换(FIFO Replacement):先进先出替换是一种按照时间顺序进行替换的方法,即最早进入缓存的数据最先被替换。这种方法可以保证高速缓存中存储的是最新的数据,但可能会导致一些常用的数据被频繁替换。
- 最近最少使用替换(Least Recently Used Replacement,LRU):LRU替换是一种按照数据使用频率进行替换的方法,即最近最少使用的数据最先被替换。这种方法可以保证高速缓存中存储的是最常用的数据,但需要额外的硬件支持来记录每个缓存行最近的使用时间。
- 最不经常使用替换(Least Frequently Used Replacement,LFU):LFU替换是一种按照数据使用频率进行替换的方法,即最不经常使用的数据最先被替换。这种方法需要记录每个数据被使用的次数,因此需要额外的硬件支持。
以上是常见的高速缓存替换方法,不同的替换方法在实际应用中有着不同的优缺点,需要根据具体应用场景进行选择。
虚拟存储
虚拟存储是计算机组成原理中的一个重要概念,它指的是一种将主存储器和辅助存储器组合起来使用的技术。虚拟存储器可以将不常用的数据和程序存储到辅助存储器中,从而释放主存储器的空间,提高系统的内存利用率。
虚拟存储器的实现需要使用到操作系统的支持,通常包括以下几个部分:
- 页面(Page):页面是虚拟存储器中的最小存储单位,通常为4KB或8KB。操作系统将主存储器分割成大小相等的页面,使得不同的程序和数据可以共享同一块主存储器。
- 页表(Page Table):页表是一张将主存储器页面映射到辅助存储器页面的表格。操作系统会在内存中维护一张页表,记录每个主存储器页面对应的辅助存储器地址。
- 页面置换(Page Replacement):由于虚拟存储器的主要目的是扩大主存储器的容量,因此当主存储器不足时,操作系统会将不常用的页面从主存储器中换出到辅助存储器中,并将需要的页面从辅助存储器中换入到主存储器中。常用的页面置换算法包括最近未使用(LRU)、先进先出(FIFO)等。
- 缺页中断(Page Fault):当程序访问一个不在主存储器中的页面时,操作系统会产生一个缺页中断,通知程序需要将该页面从辅助存储器中加载到主存储器中。此时操作系统会根据页表将页面映射到主存储器中的一个空闲页面,并将该页面从辅助存储器中加载到主存储器中。
虚拟存储技术可以让程序以比实际物理内存更大的空间运行,从而提高系统的运行效率。虚拟存储技术的实现需要操作系统的支持,因此不同的操作系统可能有不同的实现方式和优化策略。
虚拟存储器管理方式
常见的虚拟存储器管理方式主要有以下几种:
- 分页式管理:将主存储器和辅助存储器分成固定大小的页面,每个页面大小相等。程序在执行时,将虚拟地址转换成物理地址,操作系统通过页表来实现虚拟地址到物理地址的映射。当程序访问一个不在主存储器中的页面时,操作系统会产生一个缺页中断,通知程序需要将该页面从辅助存储器中加载到主存储器中。
- 分段式管理:将程序分成若干个逻辑段,每个逻辑段表示程序中的一个独立的部分,例如代码段、数据段等。每个逻辑段的大小可以不同,程序在执行时,将虚拟地址转换成物理地址,操作系统通过段表来实现虚拟地址到物理地址的映射。当程序需要访问一个不在主存储器中的段时,操作系统会将整个段从辅助存储器中加载到主存储器中。
- 段页式管理:将程序分成若干个逻辑段,并将每个逻辑段分成若干个固定大小的页面。程序在执行时,将虚拟地址先转换成段内偏移量,再将段号转换成物理地址,操作系统通过段表和页表来实现虚拟地址到物理地址的映射。当程序需要访问一个不在主存储器中的页面时,操作系统会将整个页面从辅助存储器中加载到主存储器中。
- 段式管理:将程序分成若干个逻辑段,每个逻辑段表示程序中的一个独立的部分,例如代码段、数据段等。每个逻辑段的大小可以不同,程序在执行时,将虚拟地址转换成物理地址,操作系统通过段表来实现虚拟地址到物理地址的映射。当程序需要访问一个不在主存储器中的段时,操作系统会将整个段从辅助存储器中加载到主存储器中。
- 全局式管理:将整个程序作为一个整体进行管理,不考虑程序的逻辑结构。程序在执行时,将虚拟地址转换成物理地址,操作系统通过全局表来实现虚拟地址到物理地址的映射。当程序需要访问一个不在主存储器中的页面时,操作系统会将整个程序从辅助存储器中加载到主存储器中。
这些虚拟存储器管理方式各有优缺点,需要根据具体的应用场景和硬件资源选择适当的方法,以提高系统的内存利用率和运行效率。