Chapter Zero 0.2.2 内存
内存
CPU的数据都是来自主存储器(main memory),个人计算机的主寄存器主要组件是动态随机存取内存(Dynamic Random Access Memory,DRAM)
,
随机存储内存只有在通电时
才能记录使用,断电后就消失了,因此也称这种内存为挥发性内存。
DRAM已经跟新了好几代,使用上较广泛的有SDRAM与DDR SDRAM两种,DDR SDRAM中又包含DDR1,DDR2,DDR3,DDR4,
表格中缺少了DDR4的介绍,可以搜到淘宝店中DDR4的频率
最低频率2133MHz
,最高4000MHz左右:
内存的多通道设计
传统的总线宽度大约为64位,为了加大宽度,芯片厂商将两个主存储器汇整到一起,
如果一个内存可以达到64位,那么两个内存就可以达到128位,也就是双通道
的概念。
一般主板的内存插槽颜色分两种,1/3一种颜色,2/4一种颜色,是两对双通道
,一般首选插在2/4插槽上,
使用双通道的两个内存最好是同一型号,更好兼容,不推荐放置三通道(即三个内存条)
,可能会使电压不稳。
DRAM 和 SRAM
除了主存储器,整部计算机中其实还有许多内存。
我们需要了解的是CPU内的第二层高速缓存,
缓存(cache),原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。
我们知道CPU的数据都是由主存储器提供的,但CPU到主存储器之间还要通过内存控制器
。
但是如果某些很常用的程序可以放置到CPU内部,那么CPU的读取就不需要跑到主存储器重新读取了!
这对于效能会有更大的提升,所以有第二层快取(缓存)的设计概念,CPU、第二层缓存与主存储器关旭如图:
因为第二层缓存(L2 cache)整合到了CPU内部,所以这个L2内存的速度必须和CPU的频率相同,
使用动态随机存取内存(Dynamic Random Access Memory,DRAM)
无法达到这个频率速度,
此时需要静态随机存储内存(Static Random Access Memory,SRAM)
,
SRAM在设计上使用的晶体管数量较多,价格高,不易做成大容量,但速度快,整合到CPU成为高速缓存加速数据的存取。
实际上除了第二层缓存,还有第一层缓存、第三层缓存,以下是概况,也可以了解更多详情:详情了解下各种高速缓存,走你!
一级缓存,是CPU的第一层高速缓存,主要分为数据缓存和指令缓存,这是对CPU性能影响最大的一层。
二级缓存,是CPU的第二层高速缓存,分内部和外部两种芯片,内部芯片速度基本上与CPU主频相同,而外部芯片只有主频的一半。
三级缓存,离CPU较远,读取速度没一级二级快,但一般三级缓存容量比前面两级大很多。
只读存储器(ROM)
考虑一个问题,主板上如果有网络卡或者显示适配器时,关于该功能是否启动以及该功能的各项参数,如何设置?
很多人设置过,也就是开机的时候按下Del,进入BIOS(Basic Input Output System)界面,BIOS是一套程序,
这套程序是写死在主板上的一个CMOS内存芯片
中,这个芯片需要借助额外的电源发挥记录功能,所以你的主板上会有一颗电池!
这个
CMOS内存芯片
就是我们的主角:只读存储器(Read Only Memory,ROM)
ROM是一种非挥发性的内存,对于个人计算机很重要,是系统开机时首先读取的一个小程序!
引入一个新的概念韧体
:
韧体是
一种软件
,对于硬件内部而言非常重要,很多硬件上用ROM来写入
韧体这个软件,用来控制开机时的各项硬件参数,例如BIOS
就是CMOS芯片
的一个韧体。
BIOS对于计算机系统是非常重要的,因为它掌握了系统硬件的详细信息和开机设备的选择等等,但随着计算机发展,BIOS程序代码也不是一成不变的,
在很多主板官网一直会更新BIOS的版本,而BIOS原本使用的是无法改写的ROM,因此无法修改BIOS的程序代码!
为此,我们现在用的BIOS通常是写入类似闪存(flash memory)
或者EEPROM
中的。
EEPROM (Electrically Erasable Programmable read only memory)
是指带电可擦可编程只读存储器
。是一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。
快闪存储器(flash memory)
,是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。这种科技主要用于一般性数据存储,以及在计算机与其他数字产品间交换传输数据,如储存卡与U盘。闪存是一种特殊的、以宏块抹写的EPROM
。早期的闪存进行一次抹除,就会清除掉整颗芯片上的数据。
EPROM(Erasable Programmable Read-Only Memory)
即可擦可编程只读存储器
。EPROM只能用紫外线擦除已有信息。
RAM、ROM以及硬盘的区别(转自百度)
ROM是只读存储器(Read-Only Memory),是计算机内部存储器中的一种,而硬盘是外部存储器,所以对于大学学子来说,考试时你如果把这两个混为一种东西绝对是错误的,当然,如果出选择题让你选,那么BIOS应该是用到ROM的那个。那么ROM究竟是干什么的,ROM和硬盘是否就没有任何关系呢?这就要从其发展历程说起,早期,乃至现在,我们的主要存储介质都是磁性存储,也就是磁盘,分成硬盘和软盘两种,硬盘不太适合做移动存储,因为我们知道硬盘磁头容易损失,不耐摔,而且体积较大,就算是缩小容量仍然很难缩小其体积,软盘容量过于小,不够用,而光盘虽然容量大但不易擦写,同时体积也不够小,这时就适合使用半导体存储介质——ROM和RAM,RAM断电丢失数据,但是读写速度快,多用作电脑手机内存,ROM用来嵌入电脑主板或者做移动存储介质就很合适了,其体积够小,提供的容量可以比光盘和软盘的大,速度也更优,但缺点是成本更高,而早期的ROM因为技术不成熟所以无法擦写,出厂后就只能读数据,所以叫只读存储器,后来随着技术的发展,在ROM的基础上出现了新的半导体存储介质EPROM和EEPROM,这两种可擦写,这就不符合ROM的命名,但是由于是在ROM的技术上衍变出来的,所以延用了一部分原来的叫法,此时非易失的半导体存储介质开始得以广泛应用,被大量用于电脑主板的bios和嵌入式存储,而后来在这两种技术的发展上又发展出了NAND FLASH闪存,这就是我们现在用的U盘中用到的技术,同样,因为其体积小,容量和速度均不错,现在手机存储中的emmc颗粒也是用的这种技术,所以有手机厂商就把手机的存储容量约定俗成为ROM,其继承了ROM断电不丢失数据的特性,而且有着更快的速度。
那么电脑硬盘和ROM有什么关系呢?由于ROM和硬盘都可以存储数据而且断电不会丢失,而有都广泛运用于电子产品中,所以有人就对两者产生了混淆。硬盘分为两种,一种是机械硬盘(即磁盘HDD),一种是固态硬盘(SSD),磁盘和ROM没什么关系,但是固态硬盘就不一样了,固态硬盘用到的颗粒也是基于NAND FLASH技术,和u盘以及手机存储有点相似,所以说硬盘和ROM还是有关系的,固态硬盘的储存颗粒是ROM技术发展的产物,但不能说ROM就是硬盘。
Chapter Zero 0.2.2 内存的更多相关文章
- netty源码解析(4.0)-27 ByteBuf内存池:PoolArena-PoolThreadCache
前面两章分析的PoolChunk和PoolSubpage,从功能上来说已经可以直接拿来用了.但直接使用这个两个类管理内存在高频分配/释放内存场景下会有性能问题,PoolChunk分配内存时算法复杂度最 ...
- Android Studio 1.0.2 设置内存大小
http://www.linuxidc.com/Linux/2015-04/116457.htm Android studio 1.0.2默认最大内存是750M,这样跑起来非常的卡,难以忍受,机器又不 ...
- .NET 4.0中使用内存映射文件实现进程通讯
操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段.Win32 API中也包含有创建内存映射文件的函数,然而,这些函数都 ...
- malloc(0)分配多少内存?(译文)
原文地址:http://prog21.dadgum.com/179.html 在大多的系统中,这个C的小程序将会吸收全部空闲的内存. ){ ); } 在我们聊malloc(0)之前,让我们看看mall ...
- 结合源码看nginx-1.4.0之nginx内存管理详解
目录 0. 摘要 1. nginx内存结构设计 2. nginx内存数据结构 3. nginx内存管理原理 4. 一个简单的内存模型 5. 小结 6. 参考资料 0. 摘要 内存管理,是指软件运行时对 ...
- netty源码解解析(4.0)-23 ByteBuf内存管理:分配和释放
ByteBuf内存分配和释放由具体实现负责,抽象类型只定义的内存分配和释放的时机. 内存分配分两个阶段: 第一阶段,初始化时分配内存.第二阶段: 内存不够用时分配新的内存.ByteBuf抽象层没有定义 ...
- netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk
PoolArena实现了用于高效分配和释放内存,并尽可能减少内存碎片的内存池,这个内存管理实现使用PageRun/PoolSubpage算法.分析代码之前,先熟悉一些重要的概念: page: 页,一个 ...
- netty源码解析(4.0)-26 ByteBuf内存池:PoolArena-PoolSubpage
PoolChunk用来分配大于或等于一个page的内存,如果需要小于一个page的内存,需要先从PoolChunk中分配一个page,然后再把一个page切割成多个子页-subpage,最后把内存以s ...
- netty源码解析(4.0)-28 ByteBuf内存池:PooledByteBufAllocator-把一切组装起来
PooledByteBufAllocator负责初始化PoolArena(PA)和PoolThreadCache(PTC).它提供了一系列的接口,用来创建使用堆内存或直接内存的PooledByteBu ...
随机推荐
- SQL语句中 ` 的作用
SQL语句中 ` 的作用 做攻防世界WEB区 supersqli 题目,在构建SQL语句时,遇到SQL语句中有 ` 时可以解析,没有则不能. 查阅资料得知,` 通常用来说明其中的内容是数据库名.表名. ...
- Linux下安装配置rocketmq (单个Master、双Master)
一.环境: centos7(2台虚拟机):192.168.64.123:192.168.64.125 apache-maven-3.2.5(官网要求maven版本是3.2.x,版本不同,编译rocke ...
- 关于安装版JDK1.8 1.7更改多个JDK环境变量 不生效
配置maven(apache-maven-3.3.9)时提示异常:'mvn' 不是内部或外部命令,上网查找得知 它不支持jdk1.8,所以重新安装jdk1.7,后来就出现下面的问题 现象: 当使用安装 ...
- Java程序入门
编写Java源程序 在d:\day01 目录下新建文本文件,完整的文件名修改为HelloWorld.java ,其中文件名为HelloWorld ,后缀名必须为.java . 用记事本打开 在文件中键 ...
- gRPC Load Balancing
gRPC Load Balancing 翻译自:https://grpc.io/blog/grpc-load-balancing/ 这是gRPC负载均衡的第一篇,后续会给出基于golang XDS服务 ...
- 一文说通Dotnet的委托
简单的概念,也需要经常看看. 一.前言 先简单说说Delegate的由来.最早在C/C++中,有一个概念叫函数指针.其实就是一个内存指针,指向一个函数.调用函数时,只要调用函数指针就可以了,至于函 ...
- Memcached与Redis对比及其优劣分析
国外讨论 本文主要总结缓存Redis和Memcached的区别,总结之前先参考外国知乎上的一篇问答:<Is memcached a dinosaur in comparison to Redis ...
- 简话http请求
一.http请求概念: 1.是指从客户端到服务器端的请求消息.包括:消息首行中,对资源的请求方法.资源的标识符及使用的协议. 包括请求(request)和响应(response) 2.过程: 域名解析 ...
- 在Ubuntu下安装Jenkins
一.安装Jenkins 1. 确保Java环境已经安装配置好 java -version 2. 将存储库密钥添加到系统 wget -q -O - https://pkg.jenkins.io/debi ...
- redis-服务器配置-主从
1.配置sentinel.conf -------------------------------------------------- port 26379 dir "/home/app/ ...