内存

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. ORACLE 归档日志打开关闭方法(转载)

    一 设置为归档方式 1 sql> archive log list; #查看是不是归档方式 2 sql> alter system set log_archive_start=true s ...

  2. Connection Manager简称connman

    ConnMan    Connection Manager简称connman,connman是使用d-bus做为进程间通信机制来管理Linux网络链接的一种软件.在connman的d-bus接口中,有 ...

  3. day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  4. C++ 无法打开 源 文件 "ntddk.h"

    原因是SDK版本太高了,或者版本不对应WDK,换一个SDK版本就好了.

  5. owners

    community/owners.md at master · kubernetes/community https://github.com/kubernetes/community/blob/ma ...

  6. 小鹏汽车技术中台实践 :微服务篇 InfoQ 今天 以下文章来源于InfoQ Pro

    小鹏汽车技术中台实践 :微服务篇 InfoQ  今天 以下文章来源于InfoQ Pro

  7. celery 原理

    https://mp.weixin.qq.com/s/FzvZHQpF5mhV9t_HBzlcwg Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处 ...

  8. DDD领域驱动设计:领域事件

    1 前置阅读 在阅读本文章之前,你可以先阅读: DDD领域驱动设计是什么 DDD领域驱动设计:实体.值对象.聚合根 DDD领域驱动设计:仓储 MediatR一个优秀的.NET中介者框架 2 什么是领域 ...

  9. 关闭(隐藏)VS2019控制台上文件路径的显示

    昨天有个朋友问我,怎么关闭在运行程序后,控制台上显示的文件路径啊?啥??我突然不知道他说的说什么,然后我就自己随便打了几行运行了一下,才知道原来他说的是这个: 一开始我也没在意,我就告诉他,这个无所谓 ...

  10. SpringMVC听课笔记(十四:异常处理)

    1. SpringMVC通过HandlerExceptionResolver处理程序的异常,包括Handler映射,数据绑定以及目标方法执行时发生的异常 2.SpringMVC提供的HandlerEx ...