内存管理 之 存储器硬件知识

接下来,为了顺应Linux Kernel的学习,在操作系统方面首先学习的是内存管理。首先主要讲解物理内存的相关知识。本节主要讲解存储器的基础硬件知识,下一节讲解存储器的层次结构。

 

存储器是计算机系统的重要组成部分,它在计算机系统中的作用是存放程序和数据。存储器不仅使计算机具有记忆功能,而且是计算机高速自动运行的基础。

作为计算机的核心部件之一,存储器直接关系到整个计算机系统性能的高低。如何以合理的成本搭建出容量和速度都满足要求的存储器系统,始终是计算机体系结构设计中的关键问题之一:一方面,人们不断采用新的高速器件来提高存储器的存取速度,另一方面,则通过改进其组织形式来改善存储系统的整体性能。

1、存储器的分类:

存储器有存储介质(如半导体、磁和光等)和读写数据的控制部件组成。不同的存储介质采用了不同的存储原理,而不同的读写控制部件则决定了数据的存取方式。

A、按存储介质分类

*半导体存储器:

#易失性存储器(Volatile Memory)

易失性存储器是指需要维持电源供应,才能确保存储内容不变化丢失的存储器。也就是,一旦电源供应终止,易失性存储器存储的内容就会改变。

易失性存储器有两种基本类型:静态RAM(Static RAM, SRAM)和动态RAM(Dynamic RAM, DRAM)。

其中,SRAM完全由晶体管实现,其基本存储单元是双稳态电路,存储的信息由双稳态电路的逻辑状态表征。DRAM则使用晶体管和电容实现,存储的信息由电容上的电位来表征。由于电容存在充放电过程,所以DRAM需要定期刷新。DRAM的密度高于SRAM,但由于不能在刷新操作的同时执行读写操作,存取速度低于SRAM。

在计算机系统中,一般采用速度较快但成本较高的SRAM构成高速缓冲存储器(Cache),而主存一般采用成本较低、速度较慢的DRAM构成。

现代计算机采用以下几种技术来提高DRAM主存的读写速度:同步动态随机存储器(SDRAM)、双数据速率同步动态随机存储器(DDR SDRAM)、接口动态随机存储器(DR DRAM)、带高速缓存动态随机存储器(CDRAM)、虚拟通道存储器(VCM)。

#非易失性存储器(No-Volatile Memory)

非易失性存储器写速度较慢,且重写次数有限,一般用作辅助存储器,如手机中程序和数据的存储。主要包括ROM(EPROM、EEPROM)和Flash存储器等。

*磁介质存储器:

磁性存储器价格低,容量大,读写方便,信息可长时间保存,通常用来作为辅助存储器。由磁性材料生产的存储器主要有磁带、软盘和硬盘(RAID)。

*光介质存储器:光盘。

B、按读写策略分类

*按数据访问方式分类

#并行存储器(Parallel Memory)

#串行存储器(Serial Memory)

*按数据存取顺序分类

#随机存取存储器

随机存取又称为直接存取。随机存取有两层含义:可按地址访问任意存储单元;访问存储单元所需的时间与数据存储的位置(地址)无关。计算机系统中CPU直接寻址的存储器采用随机存取方式。

#顺序存取存储器

在顺序存取方式下,数据按照特定的线性或时序顺序写入存储介质,并且可以按照完全相同的顺序读回。顺序存取也称为“先进先出”,非常适合作为缓冲存储器。磁带就是典型的顺序存取存储器。

#堆栈存取存储器

采用“后进先出”的存取原则。堆栈通常一端固定(栈底),一端浮动(栈顶),压入数据(进栈)和取出数据(出栈)的操作都是针对栈顶单元。堆栈分为向下生成和向上生成。

2、半导体存储芯片的性能指标:

*存储容量:

存储芯片的容量表示该芯片能存储多少个用二进制表示的信息位。

*存取速度:

存取时间——启动一次存储器操作(读或写)到完成该操作所需的时间。

存取周期——连续启动两次独立的存储器操作所需间隔的最小时间。

带宽——存储器在连续访问时的数据吞吐量,用bps表示。

*功耗:

功耗有两种定义方法:一种是存储芯片中存储单元的功耗,单位是微瓦每单元;另一种是存储芯片的功耗,单位是毫瓦每芯片。

功耗是便携式系统的关键性指标之一,它不仅表示存储芯片所需的能量,还影响系统的散热。功耗与速度通常成正比。

*可靠性:

可靠性指在规定时间内存储器无故障读写的概率,通常用平均故障时间(MTBF)来衡量。可靠性一般指存储器对电磁场的抗干扰性和对温度变化的抗干扰性。

存储器的其他性能指标包括工作电源电压、工作温度范围、可编程存储器的编程次数等。

3、主存储器设计技术:

A、存储芯片选型:存储器扩展

B、存储芯片的组织形式

*存储模块结构——存储芯片互连

计算机系统通常需要将多个存储芯片按照一定规则互连扩充为主存。与存储芯片以bit为容量单位不同,主存的容量通常以字节为单位。多个容量为N*M的存储芯片互连时通常有以下两种策略

#若M<8,则应先对存储芯片进行位扩展,即把多个存储芯片互连成字节模块,以实现按字节编址。

#若N<主存容量,则应进行字扩展,即把多组字节模块互连,增加可寻址单元的数量,达到主存容量要求。

*存储系统组织形式——存储模块互连

#并行存储器

并行存储器允许在一个存取周期内并行存取多个字,从而提高整体信息的吞吐量。

#多体交叉存储器

 

#双端口存储器

双端口存储器具有两组读写操作电路和数据输入输出电路。

#相联存储器

根据信息的特征进行存取。

 

C、地址译码技术

*固定地址译码:

#全译码

系统所有地址线全部都应该参与译码;

低段地址线应直接接在模块上,寻址模块内单元;

中段地址线译码后产生片选信号区分不同模块;

高段地址线可用作片选信号有效的使能控制。

#部分译码

高段地址信号不参与译码,会造成地址空间的重叠及不连续。

#线译码

电路结构简单,但系统必须保证参与片选的地址线不能同时为有效电平;

同部分译码法一样,因为有地址信号不参与译码,也存在地址重叠及不连续的问题。

*可变地址译码。

D、存储器接口设计

*存储总线

 

数据线:如果考虑总线负载问题,可加接数据收发器。

读写控制线:考虑有效电平。

地址线:字选+片选。

字选:系统地址总线中的低位地址线直接与各存储芯片的地址线连接。所需低位地址线的数目N与存储芯片容量L的关系:L=2N。

片选:系统地址总线中余下的高位地址线经译码后用做不同存储芯片的片选。通常IO//M信号也参与片选译码。

*总线隔离:驱动器和缓冲器,输出端增强驱动能力,在输入端减轻负载。

时间: 2024-09-02 08:21:19

内存管理 之 存储器硬件知识的相关文章

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的.对于内存部分需要知道: 地址映射 内存管理的方式 缺页异常 先来看一些基本的知识,在进程看来,内存分为内核态和用户态两部分,经典比例如下: 从用户态到内核态一般通过系统调用.中断来实现.用户态的内存被划分为不同的区域用于不同的目的: 当然内核态也不会无差别地使用,所以,其划分如下: 下面来仔细看这些内存是如何管理的. 地址 在Linux内部的地址的映射过程为逻辑地址–>线性地址–>物理地址,

javascript的内存管理详解_基础知识

介绍 低层次的语言,如C,具有低级别的内存管理命令,如:malloc()和free(),需要开发者手工释放内存.然而像javascript这样的高级语言情况则不同,对象(objects, strings 等)创建的时候分配内存,当他们不在使用的时候内存会被自动回收,这个自动回收的过程被称为垃圾回收.因为垃圾回收的存在,让javascript等高级语言开发者产生了一个错误的认识,以为可以不用关心内存管理. 内存生命周期 不管什么样的编程语言,内存的生命周期基本上是一致的. 1.分配你需要的内存 2

javascript内存管理详细解析_基础知识

介绍 低层次的语言,如C,具有低级别的内存管理命令,如:malloc()和free(),需要开发者手工释放内存.然而像javascript这样的高级语言情况则不同,对象(objects, strings 等)创建的时候分配内存,当他们不在使用的时候内存会被自动回收,这个自动回收的过程被称为垃圾回收.因为垃圾回收的存在,让javascript等高级语言开发者产生了一个错误的认识,以为可以不用关心内存管理. 内存生命周期 不管什么样的编程语言,内存的生命周期基本上是一致的. 1.分配你需要的内存 2

电脑主板硬件知识主板结构

  电脑现在已经成为家家户户的生活必备品,那么你对电脑的了解究竟有多少呢?下面小编为您整理出一些常见的电脑硬件知识,赶快来学习吧! 电脑硬件,包括电脑中所有物理的零件,以此来区分它所包括或执行的数据和为硬件提供指令以完成任务的软件. 电脑硬件主要包含:机箱,主板,总线,电源,硬盘,存储控制器,界面卡,可携储存装置,内置存储器,输入设备,输出设备, CPU风扇,蜂鸣器等. 主板 简介 主板上承载着CPU(即中央处理器).内存(随机存取存储器)和为扩展卡提供的插槽 (可是CPU和内存并不是集成在主板

深入理解Linux内存管理机制(一)

深入理解Linux内存管理机制(一)通过本文,您即可以: 1. 存储器硬件结构: 2.分段以及对应的组织方式: 3.分页以及对应的组织方式. 注1:本文以Linux内核2.6.32.59本版为例,其对应的代码可以在http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.59.tar.bz2找到. 注2:本文所有的英文专有名词都是我随便翻译的,请对照英文原文进行理解. 注3:推荐使用Source Insig

linux内存管理-内核用户空间 【转】

转自:http://blog.chinaunix.net/uid-25909619-id-4491362.html 1,linux内存管理中几个重要的结构体和数组 page unsigned long flags 一组标志,也对页框所在的管理区进行编号 atomic_t _count 该页被引用的次数 atomic_t _mapcount 页框中页表项数目,如果没有则为-1 struct list_head lru 管理page忙碌/空闲链表(inactive_list/active_list)

Linux内存管理学习笔记--物理内存分配

每次深入了解一个技术问题,随着挖据的深入,都发现其背后总非常深的背景知识,甚至需要深入到很多底层系统,这个过程有时会让自己迷失,会让自己忘了当初的目的. 在前篇中介绍系统启动时内存的使用情况,本篇将介绍简要Linux如何接管主机的物理内存.组织内存,最后会较为详细的介绍Linux分配内存的一段代码. 前面说了,Linux MM系统细节非常多,自己在探究的时候,也是尝试尽量抓住主线,这里也只能抽取了一些"主线剧情"介绍,其中还可以扩展出很多细节,看客感兴趣可以自己深究,后续如果兴趣还在,

操作系统概念学习笔记 15 内存管理(一)

操作系统概念学习笔记 15 内存管理(一) 背景 内存是现代计算机运行的中心.内存有很大一组字或字节组成,每个字或字节都有它们自己的地址.CPU根据程序计数器(PC)的值从内存中提取指令,这些指令可能会引起进一步对特定内存地址的读取和写入. 一个典型指令执行周期,首先从内存中读取指令.接着该指令被解码,且可能需要从内存中读取操作数.在指令对操作数执行后,其结果可能被存回到内存.内存单元只看到地址流,而并不直到这些地址是如何产生的(由指令计数器.索引.间接寻址.实地址等)或它们是什么地址(指令或数

Linux内核设计与实现笔记(二) 内存管理、进程地址空间

内存管理 1.页   物理页作为内存管理的基本单位.内存管理单元通常以页为单位进行处理. 通过结构体page来表示系统中的每个物理页. 2.区 由于页位于内存中特定的物理地址上,所以不能将其用于一些特定的任务,故内核把页划分为不同的区. 硬件在内存寻址方面的问题: 一些硬件只能通过内存地址来执行直接内存访问(DMA) 一些体系结构其内存的物理寻址范围大于虚拟寻址范围,故,内存不能永久地映射到内核空间 解决方法,通过创建三种不同的分区: ZONE_DMA--专门执行DMA ZONE_NORMAL-