内存

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 内存的更多相关文章

  1. netty源码解析(4.0)-27 ByteBuf内存池:PoolArena-PoolThreadCache

    前面两章分析的PoolChunk和PoolSubpage,从功能上来说已经可以直接拿来用了.但直接使用这个两个类管理内存在高频分配/释放内存场景下会有性能问题,PoolChunk分配内存时算法复杂度最 ...

  2. Android Studio 1.0.2 设置内存大小

    http://www.linuxidc.com/Linux/2015-04/116457.htm Android studio 1.0.2默认最大内存是750M,这样跑起来非常的卡,难以忍受,机器又不 ...

  3. .NET 4.0中使用内存映射文件实现进程通讯

    操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段.Win32 API中也包含有创建内存映射文件的函数,然而,这些函数都 ...

  4. malloc(0)分配多少内存?(译文)

    原文地址:http://prog21.dadgum.com/179.html 在大多的系统中,这个C的小程序将会吸收全部空闲的内存. ){ ); } 在我们聊malloc(0)之前,让我们看看mall ...

  5. 结合源码看nginx-1.4.0之nginx内存管理详解

    目录 0. 摘要 1. nginx内存结构设计 2. nginx内存数据结构 3. nginx内存管理原理 4. 一个简单的内存模型 5. 小结 6. 参考资料 0. 摘要 内存管理,是指软件运行时对 ...

  6. netty源码解解析(4.0)-23 ByteBuf内存管理:分配和释放

    ByteBuf内存分配和释放由具体实现负责,抽象类型只定义的内存分配和释放的时机. 内存分配分两个阶段: 第一阶段,初始化时分配内存.第二阶段: 内存不够用时分配新的内存.ByteBuf抽象层没有定义 ...

  7. netty源码解解析(4.0)-25 ByteBuf内存池:PoolArena-PoolChunk

    PoolArena实现了用于高效分配和释放内存,并尽可能减少内存碎片的内存池,这个内存管理实现使用PageRun/PoolSubpage算法.分析代码之前,先熟悉一些重要的概念: page: 页,一个 ...

  8. netty源码解析(4.0)-26 ByteBuf内存池:PoolArena-PoolSubpage

    PoolChunk用来分配大于或等于一个page的内存,如果需要小于一个page的内存,需要先从PoolChunk中分配一个page,然后再把一个page切割成多个子页-subpage,最后把内存以s ...

  9. netty源码解析(4.0)-28 ByteBuf内存池:PooledByteBufAllocator-把一切组装起来

    PooledByteBufAllocator负责初始化PoolArena(PA)和PoolThreadCache(PTC).它提供了一系列的接口,用来创建使用堆内存或直接内存的PooledByteBu ...

随机推荐

  1. Vue MVVM模型原理

    最近反思了下自己,觉得自己很急躁,学技术总是觉得能用就行了,其实这样很不好,总是这样,就永远只能当用轮子的人.好了,废话不多说,转入正题: 要理解MVVM的原理,首先要理解它是什么,怎么运作起来的: ...

  2. Py装饰器

    装饰器: 1.定义,什么是装饰器 装饰器本质是一个函数,它是为了给其他函数添加附加功能 2.装饰器的两个原则 原则1   不修改被修饰函数的源代码原则2   不修改被修饰函数的调用方式 3.首先来看一 ...

  3. apk开发环境!多亏这份《秋招+金九银十-腾讯面试题合集》跳槽薪资翻倍!再不刷题就晚了!

    开头 最近很多网友反馈:自己从各处弄来的资料,过于杂乱.零散.碎片化,看得时候觉得挺有用的,但过个半天,啥都记不起来了.其实,这就是缺少系统化学习的后果. 为了提高大家的学习效率,帮大家能快速掌握An ...

  4. centos7服务器远程安装图形化页面

    以下是我用云的centos 7.4的安装步骤,照着我的命令操作肯定OK的,其他的就不敢保证了... 1.首先安装X(X Window System),命令为:(注意有引号) yum groupinst ...

  5. SpringMVC Tomcat 启动时报错:java.lang.IllegalStateException: Error starting child

    大概原因如下: 1.Controller里RequestMapping("/test")前面没有"/"; 2.jar包冲突,比如我的将数据库连接版本由5.1.6 ...

  6. oracle创建表并加索引

    一个语句创建Oracle所有表的序列 -- 动态创建序列 2 declare 3 cursor c_job is 4 select TABLE_NAME from user_tables; 5 6 c ...

  7. TCP/IP建立连接的时候ISN序号分配问题

    初始建立TCP连接的时候的系列号(ISN)是随机选择的,那么这个系列号为什么不采用一个固定的值呢?主要有两方面的原因 防止同一个连接的不同实例(different instantiations/inc ...

  8. LOJ10074架设电话线

    USACO 2008 Jan. Silver 在郊区有 N 座通信基站,P 条双向电缆,第 i 条电缆连接基站 Ai​ 和 Bi​.特别地,1 号基站是通信公司的总站,N 号基站位于一座农场中.现在, ...

  9. Codeforces 1220D 思维 数学 二分图基础

    原题链接 题意 我们有一个含多个正整数的集合B,然后我们将所有的整数,也就是Z集合内所有元素,都当做顶点 两个整数 \(i , j\) 能建立无向边,当且仅当 \(|i - j|\) 这个数属于B集合 ...

  10. 关于项目中Spring版本与jdk1.8兼容问题解决

    问题描述: 在用公司的工具搭建项目时,由于使用Spring框架,同时要求jdk版本为1.8:当部署完成以后,项目总是无法运行,会报错: Context namespace element 'annot ...